matlab で実行したプログラム関数からローカル変数を取得することは可能ですか? つまり、コードから変数を取得したいのですが、出力には表示されません。
前もって感謝します
次に、関数自体に追加して変数をローカル スコープ外で使用できるようにするコードについて説明します。関数を変更できない場合、もちろん、スコープを変更することについて外部から何もする必要はありません (これは意図された、正しい動作です!!)。
汚い方法:
global t
t=2.468;
スカラー、文字列、単純な値の場合: evalin を使用してベース ワークスペースの変数に割り当てます。
t=2.468;
evalin('base', ['var_in_base=' num2str(t) ';']);
その他の変数は、assigninを使用します:
A=magic(20);
assignin('base','A',A);
適切な方法:
Declare functionを見てください。戻り値として返す場合、ローカル変数にアクセスできます。そうしないと、外部からアクセスできません。
だから
function [mean,stdev] = stat(x)
n = length(x);
mean = sum(x)/n;
stdev = sqrt(sum((x-mean).^2/n));
mean と stdev にはアクセスできますが、n にアクセスする方法はありません。
私はmatlabをまったく知りませんが、コードをハッキングしないと不適切で不可能に思えるプログラマーのロジックから。そうは言っても、Googleを通して私はこれを見ました:
関数からスクリプトを呼び出すと、スクリプトは関数ワークスペースを使用します。ローカル関数と同様に、入れ子関数には独自のワークスペースがあります。ただし、これらのワークスペースは 2 つの重要な点で独特です。入れ子関数は、それらを含む関数のワークスペース内の変数にアクセスして変更できます。ネストされた関数またはそれらを含む関数内のすべての変数は、明示的に定義する必要があります。つまり、変数が関数ワークスペースに存在しない限り、変数に値を代入する関数またはスクリプトを呼び出すことはできません。
これがまったく役立つかどうかはわかりませんが、いくつかの点が明確になるかもしれません