Simulink での MATLAB Function ブロックを使用した MATLAB 関数の実装
MATLAB Function ブロックでは、MATLAB® 言語を使用して Simulink® モデル内にカスタム関数を定義できます。これらのブロックは次のような場合に使用します。
カスタム機能をモデル化する既存の MATLAB 関数がある場合。または、こうした関数を容易に作成できる場合。
Simulink グラフィカル言語では取得されない、または取得できないカスタム機能がモデルに必要な場合。
Simulink ブロック線図を使うより MATLAB 関数を使う方がカスタム機能のモデル化が容易な場合。
モデル化するカスタム機能に連続状態または離散ダイナミクス状態が含まれない場合。動的状態をモデル化するには、S-Function を使用する。MATLAB S-Function を使用したブロックの作成を参照してください。
MATLAB Function ブロックによる平均と標準偏差の計算
この例は MATLAB Function ブロックを含むモデルから始まり、値のベクトルの平均と標準偏差を計算するためにブロックをカスタマイズする方法を順を追って説明していきます。
モデルを開く
モデル call_stats_block1
に、空の MATLAB Function ブロックとこの例に必要なブロックが含まれています。モデルを開きます。
MATLAB Function ブロックのプログラム
ベクトルの値から平均と標準偏差を計算するブロックをプログラムします。
MATLAB Function ブロック エディターを開くには、MATLAB Function ブロックをダブルクリックします。MATLAB Function ブロック エディターに、2 つの変数 (1 つの入力引数と 1 つの出力引数) をもつ既定の関数が表示されます。
関数宣言ステートメントを編集して関数の入力と出力を定義します。
function [mean, stdev] = stats(vals)
このステートメントは、
stats
という名前の、3 つの変数をもつ関数を定義します。このステートメントは、1 つの入力引数vals
と、2 つの出力引数mean
およびstdev
を定義します。関数宣言ステートメントの後の新しい行で、既存のコードを消去して以下のコードを追加します。
% Calculates a statistical mean and a standard % deviation for the values in vals. len = length(vals); mean = avg(vals,len); stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len); plot(vals,"-+"); function mean = avg(array,size) mean = sum(array)/size;
最終的なコードは次のようになります。
ブロックを終了します。ブロックにより端子名が更新されます。関数の出力
mean
およびstdev
はブロックの出力端子 [mean] および [stdev] に対応し、関数の入力vals
はブロックの入力端子 [vals] に対応します。MATLAB Function ブロックへの接続を完成させます。
モデルを
call_stats_block2
という名前で保存します。
MATLAB Function ブロック変数のプロパティのチェック
MATLAB Function ブロック内の変数のプロパティをチェックして管理できます。この例では、入力引数 vals
がその型とサイズのプロパティを継承していることを検証します。
MATLAB Function ブロックをダブルクリックします。
[シンボル] ペインとプロパティ インスペクターを開きます。[関数] タブで、[データの編集] をクリックします。
[シンボル] ペインの [名前] 列に変数名が表示されます。[タイプ] 列により、関数の引数の端子の割り当てと、関数宣言ステートメントのどこに表示されるかが決まります。この例では、
vals
は入力端子に割り当てられます。mean
とstdev
は出力端子に割り当てられます。いずれかの変数の [タイプ] エントリを変更すると、関数宣言ステートメントも変化します。vals
のプロパティをチェックします。[シンボル] ペインで、vals
の行をクリックします。プロパティ インスペクターが更新され、vals
のプロパティが表示されます。[スコープ] プロパティは [タイプ] 列に一致しています。
MATLAB Function ブロックでの変数の作成とプロパティの設定の詳細については、以下を参照してください。
モデルのシミュレーション
Simulink で [実行] をクリックしてモデルのシミュレーションを実行します。モデルは関数のデータを 2 つの Display ブロックに出力します。
さらに、ブロックが別のウィンドウにデータをプロットします。
参考
MATLAB Function | MATLAB Function ブロック エディター | add_block
関連するトピック
- MATLAB Function ブロック プロパティの指定
- カスタム ブロックの機能の比較
- MATLAB Function ブロックでの MATLAB 関数ファイルの呼び出し
- プログラムによる MATLAB Function ブロックの設定