Main Content

System object による移動平均フィルター ブロックの作成

この例では、movingAverageFilter System object™ を拡張して Simulink® で使用できるようにする方法について説明します。System object を Simulink で使用するには、その System object を MATLAB System ブロックに含めます。

movingAverageFilter System object

この例では、移動平均 System object の作成に組み込まれた movingAverageFilter System object を拡張します。movingAverageFilter System object は、以前の入力で指定した数の非加重平均を計算します。WindowLength プロパティを使用して、使用するサンプル数を指定します。

Simulink での使用

このオブジェクトは、既に Simulink で使用する準備ができています。Simulink モデルを作成して、MATLAB System ブロックを追加します。System object の名前として movingAverageFilter を指定します。たとえば、このモデルでは信号のノイズを除去するために移動平均フィルターが使用されています。

model = 'movingaveragefilter_sl';
open_system(model);

ブロック ダイアログ ウィンドウに、パブリックの調整可能なパラメーターが表示されます。

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

オプションで、メソッドを System object に追加することで、MATLAB System ブロックのブロックの外観やブロック ダイアログをカスタマイズすることができます。

Simulink ブロック アイコン カスタマイズ メソッドの追加

既定では、ブロック アイコンには System object の名前が表示されます。この場合は、movingAverageFilter です。Moving Average Filter ブロックのアイコンを読みやすい名前にカスタマイズします。[エディター] ツールストリップで、[System ブロック] ドロップダウン ボタンを選択し、[テキスト アイコンの追加] を選択します。getIconImpl メソッドが movingAverageFilter に追加されます。getIconImpl の中で、icon と string 配列 ["Moving","Average","Filter"]; を等号で結びます。

function icon = getIconImpl(~)
    % Define icon for the System block.
    icon = ["Moving","Average","Filter"];
end

ブロック ダイアログのカスタマイズ

System object にメソッドやコメントを追加することで、ブロック ダイアログをカスタマイズできます。ブロック ダイアログのカスタマイズの詳細については、プログラムによる System ブロックの外観のカスタマイズを参照してください。この例では、ダイアログ ボックスの WindowLength プロパティの名前を変更し、メソッドを追加して説明をカスタマイズします。

既定では、すべてのパブリック プロパティは、そのプロパティ名とともにパラメーターとしてブロック ダイアログに表示されます。この例では、WindowLength プロパティの前にコメントを追加して、ダイアログで [Moving window length] として表示されるようにします。プロパティの上部に、PropertyName Name in dialog の形式でコメントを追加します。

 % WindowLength Moving window length
 WindowLength (1,1){mustBeInteger,mustBePositive} = 5

ブロック ダイアログにヘッダーと説明を指定するには、ツールストリップで [System ブロック]、[ダイアログ ヘッダーの指定] を選択します。このオプションは、getHeaderImpl メソッドを movingAverageFilter に追加します。matlab.system.display.Header への呼び出しを以下のように変更します。

methods(Access = protected, Static)
    function header = getHeaderImpl
        % Define header panel for System block dialog
        header = matlab.system.display.Header('movingAverageFilter',...
            'Title','Moving Average Filter',...
            'Text', 'Unweighted moving average filter of 1- or 2D input.');
    end
end

[System ブロック] の上部のツールストリップにあるボタンをクリックすると、ブロック ダイアログのプレビューを確認できます。

Simulink におけるカスタマイズされたブロック

カスタマイズが追加されたブロックを以下に示します。

model = 'movingaveragefilter_sl_extended';
open_system(model);

Simulink カスタマイズ メソッドを含む完成した System object を表示するには、以下を入力します。

edit movingAverageFilter_extended.m