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

16 visualizaciones (últimos 30 días)
MathWorks Support Team
MathWorks Support Team el 2 de Sept. de 2015
Respondida: MathWorks Support Team el 2 de Sept. de 2015
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 により使用されています。
 

Respuesta aceptada

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

Más respuestas (0)

Categorías

Más información sobre モデルの入力と出力の準備 en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!