Main Content

System object でのグローバル変数の使用

グローバル変数は、他の MATLAB®関数または Simulink®ブロックでアクセスできる変数です。

MATLAB の System object のグローバル変数

MATLAB のみで使用される System object の場合、他の MATLAB コードでグローバル変数を定義するときと同じ方法で System object™ クラス定義ファイルでグローバル変数を定義します (グローバル変数を参照)。

Simulink の System object のグローバル変数

Simulink のMATLAB Systemブロックで使用される System object の場合、MATLAB で定義するのと同様にグローバル変数を定義します。ただし、stepImplupdateImplまたはoutputImplによってそれぞれ呼び出されるメソッドでグローバル変数を宣言している場合に、Simulink でそれらのグローバル変数を使用するには、グローバル変数をstepImplメソッド、updateImplメソッドまたはoutputImplメソッドで宣言しなければなりません。

MATLAB Systemブロックのグローバル変数を、MATLAB Functionブロックと同じ方法でセットアップして使用します (データ ストア(Simulink)およびグローバルなデータ共有(Simulink)を参照)。MATLAB Functionブロックと同様に、Simulink でグローバル変数を使用するにはData Store Memoryブロックと一致する変数名も使用しなければなりません。

たとえば,このクラス定義ファイルは,各タイムステップで行列の最初の行を1ずつインクリメントする System object を定義します。クラス ファイルが P コードである場合はgetGlobalNamesImplを含めなければなりません。

classdefGlobalSysObjMatrix < matlab.Systemmethods(Access = protected)functiony = stepImpl(obj)globalB; B(1,:) = B(1,:)+1; y = B;end% Include getGlobalNamesImpl only if the class file is P-coded.functionglobalNames = getGlobalNamesImpl(~) globalNames = {"B"};endendend
このモデルのMATLAB Systemブロックおよび関連付けられているData Store MemoryブロックにはGlobalSysObjMatrixオブジェクトが含まれています。