Main Content

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

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

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

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

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

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

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

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

classdef GlobalSysObjMatrix < matlab.System 
   methods (Access = protected)  
      function y = stepImpl(obj)
         global B;
         B(1,:) = B(1,:)+1;
         y = B;
      end

      % Include getGlobalNamesImpl only if the class file is P-coded.
      function globalNames = getGlobalNamesImpl(~)
         globalNames = {'B'};
      end    
   end
end
このモデルの MATLAB System ブロックおよび関連付けられている Data Store Memory ブロックには GlobalSysObjMatrix オブジェクトが含まれています。

参考

関連するトピック