Simulink上でMatlab functionを使っていて、グローバル変数を使いたいケースがでてきた。
調べてみたところ、Data store memoryを使えばよいとのこと。
www.mathworks.com
以下のようなSimulinkを作って試す。今回は、AというData memory変数を用意し、Matlab functionの内部で使用したい。
Matlab functionの中身。Global変数Aを使っている。
Data store memoryの中身。初期値を設定する必要がある。
データの型はちゃんと設定しておく(double, realなど)。autoだと動かなかった。
このまま実行するとAが定義されていないというエラーで落ちる。
Modeling>Design>Model Explorerを起動する。
対象となるMatlab function(今回は関数名をリネームしていないのでMatlab functionのまま)を選んで、Add Dataし、グローバル変数(今回はA)を追加する。スコープをData memoryに変更することに注意。
これで実行できるようになる。