Main Content

MATLAB System ブロックの外観のカスタマイズ

この例では、MATLAB System ブロックの外観をカスタマイズする方法を示します。

System object

System object を使用すると、MATLAB でのアルゴリズムの実装が可能になります。System object は入力が時間経過とともに変化する動的システムを実装およびシミュレーションするために特別に設計された、特殊な種類の MATLAB オブジェクトです。

System object を定義すれば、MATLAB System ブロックを使用してそれを Simulink モデルに含めることができます。

モデルの説明

このモデルには 3 つの MATLAB System ブロックがあります。最初のブロックでは、ブロックの外観がカスタマイズされておらず、既定で System object の名前がブロックに表示されます。このブロックの端子ラベルは、System object の stepImpl メソッドで引数名から取得されます。2 番目のブロックでは、カスタム テキストとカスタム端子ラベルがブロック アイコンに表示されます。3 番目のブロックにはカスタム ブロック アイコンのイメージが表示されます。

System object クラスの定義

ブロック ダイアログで "Source code" ハイパーリンクをクリックすることで、MATLAB System ブロックによって使用される MATLAB ソース コードにアクセスできます。最初のブロックで使用される System object TimesTwo はカスタマイズされず、stepImpl メソッドのみを実装します。System object CustomBlockIconExample は、ブロックの外観をカスタマイズするために次のメソッドを実装します。

  • getInputNamesImpl - 入力端子のラベルをカスタマイズ

  • getOutputNamesImpl - 出力端子のラベルをカスタマイズ

  • getIconImpl - ブロックにテキストまたはイメージを表示

System object には DisplayImage プロパティがあり、テキストとイメージのどちらかを選択してブロックに表示できます。

TimesTwo System object

classdef TimesTwo < matlab.System
%TimesTwo Multiply input by 2
%   obj = TimesTwo returns a System object, obj, that 
%   multiples its input by two.

    methods(Access = protected)
        function y = stepImpl(~, u)
            y = 2 * u;
        end
    end
end

CustomBlockIconExample System object

classdef CustomBlockIconExample < matlab.System 
% SystemObjectBlockIconExample Customize Block Icon 

    properties(Nontunable)
        % DisplayImage Select to display image as block icon
        DisplayImage (1,1) logical = false
    end

    methods(Access = protected)
        function y = stepImpl(~, u)
            y = u;
        end
        function inputName = getInputNamesImpl(~)
        	inputName = "MyIn";
        end
        function outputName = getOutputNamesImpl(~)
        	outputName = "MyOut";
        end
        function icon = getIconImpl(obj)
            % Return text or image to be displayed on the block icon
            % Use array of strings to display multiple lines of text
            if obj.DisplayImage
                % Display image
                icon = matlab.system.display.Icon('slexngc6543aPix.jpg');
            else
                % Display text
                icon = ["Block icon", "with custom text"];
            end
        end
    end
end

参考

| |

関連するトピック