4

matlab で実行したプログラム関数からローカル変数を取得することは可能ですか? つまり、コードから変数を取得したいのですが、出力には表示されません。

前もって感謝します

4

3 に答える 3

5

次に、関数自体に追加して変数をローカル スコープ外で使用できるようにするコードについて説明します。関数を変更できない場合、もちろん、スコープを変更することについて外部から何もする必要はありません (これは意図された、正しい動作です!!)。

汚い方法:

  • グローバル変数

    global t
    t=2.468;
    
  • スカラー、文字列、単純な値の場合: evalin を使用してベース ワークスペースの変数に割り当てます

    t=2.468;
    evalin('base', ['var_in_base=' num2str(t) ';']);
    
  • その他の変数は、assigninを使用します:

    A=magic(20);
    assignin('base','A',A);
    

適切な方法:

  • デバッグ中に検査する
  • 本当にローカルスコープの外に置きたい場合は、出力変数として追加してください!!
于 2012-08-17T10:15:05.900 に答える
1

Declare functionを見てください。戻り値として返す場合、ローカル変数にアクセスできます。そうしないと、外部からアクセスできません。

だから

function [mean,stdev] = stat(x)
n = length(x);
mean = sum(x)/n;
stdev = sqrt(sum((x-mean).^2/n));

mean と stdev にはアクセスできますが、n にアクセスする方法はありません。

于 2012-08-17T10:14:19.827 に答える
-2

私はmatlabをまったく知りませんが、コードをハッキングしないと不適切で不可能に思えるプログラマーのロジックから。そうは言っても、Googleを通して私はこれを見ました:

関数からスクリプトを呼び出すと、スクリプトは関数ワークスペースを使用します。ローカル関数と同様に、入れ子関数には独自のワークスペースがあります。ただし、これらのワークスペースは 2 つの重要な点で独特です。入れ子関数は、それらを含む関数のワークスペース内の変数にアクセスして変更できます。ネストされた関数またはそれらを含む関数内のすべての変数は、明示的に定義する必要があります。つまり、変数が関数ワークスペースに存在しない限り、変数に値を代入する関数またはスクリプトを呼び出すことはできません。

ベースと関数のワークスペース

これがまったく役立つかどうかはわかりませんが、いくつかの点が明確になるかもしれません

于 2012-08-17T10:17:24.760 に答える