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

16 次查看(过去 30 天)
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
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!