関数 MATLAB ファイルで SIM 関数を実行するとエラーが発生するのはなぜですか?
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
MathWorks Support Team
am 25 Okt. 2013
Bearbeitet: MathWorks Support Team
am 2 Feb. 2017
ブロックパラメータを変数で指定しているモデルについて、関数 MATLAB ファイルを作成して SIM 関数でシミュレーションした場合に下記のようなエラーが発生します。原因と回避方法を教えて下さい。
??? エラー ==> (関数名) at (行番号)
複数の原因によるエラー.
原因:
エラー ==>(関数名) at (行番号)
'model/From Workspace' 内のパラメータ 'VariableName' の評価のエラー: 関数または変数 '***(変数名)' が未定義です。
Akzeptierte Antwort
MathWorks Support Team
am 2 Feb. 2017
Bearbeitet: MathWorks Support Team
am 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu 速度の向上 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!