System object でのグローバル変数の使用
グローバル変数は、他の MATLAB®関数または Simulink®ブロックでアクセスできる変数です。
MATLAB の System object のグローバル変数
MATLAB のみで使用される System object の場合、他の MATLAB コードでグローバル変数を定義するときと同じ方法で System object™ クラス定義ファイルでグローバル変数を定義します (グローバル変数を参照)。
Simulink の System object のグローバル変数
Simulink のMATLAB Systemブロックで使用される System object の場合、MATLAB で定義するのと同様にグローバル変数を定義します。ただし、stepImpl
、updateImpl
または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
GlobalSysObjMatrix
オブジェクトが含まれています。