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