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