Simulink ブロックから 関数内のローカル変数として MAT-ファイルから​ロードされた変数にア​クセスできますか?

16 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2015 年 9 月 2 日
回答済み: MathWorks Support Team 2015 年 9 月 2 日
MAT-ファイルから変数をロードし、その変数を使用して Simulink モデルをスタートさせる MATLAB 関数があります。例えば、以下のような関数です。
 
function startfun
load 'mymatfile.mat'
sim('mymodel');
end
このモデルは Constant Block を含んでいて、これらのブロックは MAT-ファイルからロードされた変数を値として使用します。しかし、実行すると以下のようなエラーとなります。
  ERROR: ??? Error using ==> startfun at 4 Error evaluating parameter 'Value' in 'mymodel/Constant': Undefined function or variable 'myvar'.
  myvar はMAT-ファイルに保存されていた変数で、これが Constant Block により使用されています。
 

採用された回答

MathWorks Support Team
MathWorks Support Team 2015 年 9 月 2 日
Constant Block のようなブロックは、ベースワークスペースの変数から値を読み込みます。今回のように、ある関数によりロードされた変数は、その関数のローカル変数となるため、このようなブロックからは認識されません。
回避策として、evalin コマンドにより MAT-ファイル内の変数をベースワークスペースにロードして使用する方法があります。
 
function startfun
evalin('base','load mymatfile.mat');
sim('mymodel');
end
 

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeモデルの入力と出力の準備 についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!