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 CenterFile Exchange에서 モデルの入力と出力の準備에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!