.matファイルからデータをプロットするときに、スクリプトから行を1つずつ入力すると、スクリプトを実行しようとすると失敗します。Matlab関数が 'Evalを使用したエラー'で失敗しました。コマンドウィンドウで使用するとうまく動作します
function Test (filename)
varname = load (filename) %or load filename
matObj = matfile(filename);
varlist = who (matObj); %or varlist = fieldnames (varname)
field1 = eval (varlist {1})
field2 = eval (varlist {2})
x1 = field1.x_values.start_value:field1.x_values.increment:field1.x_values.increment*field1.x_values.number_of_values;
x2 = field2.x_values.start_value:field2.x_values.increment:field2.x_values.increment*field2.x_values.number_of_values;
figure
hold all
%Support for yyaxis left/right not avaiable, so use plotyy
plotyy (x1, field1.y_values.values, x2, field2.y_values.values)
end
Iスクリプト(テスト( '1.matを'))を呼び出す場合、MATLABがFIELD1 =行にエラーを示します。
Error using eval
Undefined function or variable 'Signal'.
を '信号が' データ・セットの1つです1.matファイル内の名前。
興味深いことに、コマンドウィンドウから同じ順番で各行を実行すると、エラーは発生せず、プロットが表示されます。現在のパスにスクリプトと1.matファイルがあることを確認しましたが、スクリプトから実行したときに評価が不満な理由を理解できません。
ありがとうございました!関数対スクリプトはちょっと混乱します。スタンドアロンのexeファイルを作成するには、常にトップレベル.mファイルを関数を含むファイルに設定します。その後、ウィンドウのコマンドラインから、私は.exeを実行し、関数に必要な引数を渡すことができます。トップレベルの.mファイルとしてスクリプトを使用して同じことを達成できますか?引数はどのように渡されますか? – ben