関数 MATLAB ファイルで SIM 関数を実行するとエラーが発生するのはなぜですか?
2 views (last 30 days)
Show older comments
MathWorks Support Team
on 25 Oct 2013
Edited: MathWorks Support Team
on 2 Feb 2017
ブロックパラメータを変数で指定しているモデルについて、関数 MATLAB ファイルを作成して SIM 関数でシミュレーションした場合に下記のようなエラーが発生します。原因と回避方法を教えて下さい。
??? エラー ==> (関数名) at (行番号)
複数の原因によるエラー.
原因:
エラー ==>(関数名) at (行番号)
'model/From Workspace' 内のパラメータ 'VariableName' の評価のエラー: 関数または変数 '***(変数名)' が未定義です。
Accepted Answer
MathWorks Support Team
on 2 Feb 2017
Edited: MathWorks Support Team
on 2 Feb 2017
SIM 関数は、デフォルト設定において、ベースワークスペースから変数を読み込み、SIM 関数を呼び出した関数のワークスペースへ変数を出力します。スクリプト MATLAB ファイルで実行した場合は、変数の読み込み・書き込み共にベースワークスペースで行われますが、関数 MATLAB ファイルで実行した場合ベースワークスペースから変数を読み込んで呼び出した関数のワークスペースへ変数を出力するため、ベースワークスペースに読み込み用変数がない場合にエラーが発生します。
回避方法として、関数 MATLAB ファイルにて、下記の1,2のいずれかの方法を行うことで、エラーを回避できます。
1. SIM 関数を実行する時に変数を読み込むワークスペースを、SIM 関数を実行するワークスペースへ変更する
myobj = sim('model','SrcWorkspace','current');
simout = myobj.get('simout'); % To Workpace ブロックで配列 simout を出力している場合
% R2009a 以前のリリースの場合
sim('model',[],simset('SrcWorkspace','current'));
2. 読み込む変数をベースワークスペースで定義する
evalin('base',['x','=[0:10;0:10]'';']); % 変数をベースワークスペースで定義
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!