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

6 ビュー (過去 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 Center および File Exchange速度の向上 についてさらに検索

製品


リリース

R2009a

Community Treasure Hunt

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

Start Hunting!