私はMatLabを初めて使用し、自分の関数の結果を使用するのが難しいです。MatLab - 関数を使用した後の変数へのアクセス
私のプログラムは.matファイルをオブジェクトとしてロードし、次に.matの各変数に対して解析を実行します。実際の解析は、forループで呼び出される関数によって行われます。解析の結果は、関数によって配列に格納されます。次のように:
function main()
object = matfile('data.mat')
vars = (fieldnames(object))
resultarray = zeros(length(vars))
for index = 1:length(vars)
var = vars(index)
x = object.var
resultarray = analysis(x, index)
end
end
function resultarray = analysis(x, index)
%does stuff to x
resultarray(index) = x
disp(resultarray(index))
end
問題は - 私の変数は見えません!作業領域は空です。 disp()関数は、私が割り当てた値を出力するので、関数が動作していることを知っていますが、プログラムの終了後にはどのようにresultarrayにアクセスしますか?私はmain()の始めにグローバルとして宣言しようとしましたが、これは何もしないようです。私の配列をmain()に戻す必要があります。プログラムを終了した後、実際に関数の出力を使用できるようにするには、どうすれば保存するのですか?
ご協力いただきありがとうございます。
編集 - 私はmain()のスコープが異なることを知っていますが、私がそれを取り除くと、 "関数定義はこの文脈では許されません"と言われています。何らかの理由で、スクリプトと同じファイルでスクリプトが使用するいくつかの関数を持つことができないように見えます。
Worskpaceが異なるスコープを持っています'main'関数よりも優れています。そのため、変数が表示されません。 'main()'関数を削除してください。 – codeaviator
これを行うと、プログラムは実行されません。明らかに、スクリプトの後にmatlabファイルの関数定義が続くことはできません。だから私は本当に頼んでいるのは、変数を関数ワークスペースから永続的なフォームにする方法です。 – Nate
関数からの戻り値として戻します。 – beaker