Simulink+Matlab functionでグローバル変数を使う

Simulink上でMatlab functionを使っていて、グローバル変数を使いたいケースがでてきた。
調べてみたところ、Data store memoryを使えばよいとのこと。
www.mathworks.com
以下のようなSimulinkを作って試す。今回は、AというData memory変数を用意し、Matlab functionの内部で使用したい。
f:id:seinzumtode:20210726031949p:plain
Matlab functionの中身。Global変数Aを使っている。
f:id:seinzumtode:20210726031916p:plain
Data store memoryの中身。初期値を設定する必要がある。
データの型はちゃんと設定しておく(double, realなど)。autoだと動かなかった。
f:id:seinzumtode:20210726032045p:plain
このまま実行するとAが定義されていないというエラーで落ちる。

Modeling>Design>Model Explorerを起動する。
f:id:seinzumtode:20210726032225p:plain
対象となるMatlab function(今回は関数名をリネームしていないのでMatlab functionのまま)を選んで、Add Dataし、グローバル変数(今回はA)を追加する。スコープをData memoryに変更することに注意。
f:id:seinzumtode:20210726032942p:plain

これで実行できるようになる。
f:id:seinzumtode:20210726033114p:plain