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 ブロックでのグローバル データの使用を参照)。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 オブジェクトが含まれています。

参考

関連するトピック