関数 MATLAB ファイルで SIM 関数を実行するとエラーが発生するのはなぜですか?

조회 수: 10 (최근 30일)
MathWorks Support Team
MathWorks Support Team 2013년 10월 25일
편집: MathWorks Support Team 2017년 2월 2일
ブロックパラメータを変数で指定しているモデルについて、関数 MATLAB ファイルを作成して SIM 関数でシミュレーションした場合に下記のようなエラーが発生します。原因と回避方法を教えて下さい。
 
??? エラー ==> (関数名) at (行番号)
複数の原因によるエラー.
原因:
エラー ==>(関数名) at (行番号)
'model/From Workspace' 内のパラメータ 'VariableName' の評価のエラー: 関数または変数 '***(変数名)' が未定義です。

채택된 답변

MathWorks Support Team
MathWorks Support Team 2017년 2월 2일
편집: MathWorks Support Team 2017년 2월 2일
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개)

카테고리

Help CenterFile Exchange에서 速度の向上에 대해 자세히 알아보기

제품


릴리스

R2009a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!