MATLAB Function ブロックを使用したデータ型の制御とコード生成
MATLAB Function ブロックを使用すると、組み込みコードを生成する Simulink® モデルで MATLAB® 言語の関数を作成できます。ターゲット環境用のモデルをシミュレーションする場合またはコードを生成する場合には、 MATLAB Function ブロック内の関数によって効率的な C/C++ コードが生成されます。このコードは、組み込みターゲット環境のメモリやデータ型の要件を厳密に満たします。
MATLAB Function ブロックを使用したデータ型オーバーライド
Simulink モデルでデータ型オーバーライドを指定する MATLAB Function ブロックを使用すると、このブロックによって入力信号およびパラメーター タイプのデータ型オーバーライドの等価値が決まります。次に、これらの等価値を使用して、シミュレーションが実行されます。以下の表は、MATLAB Function ブロックが入力信号またはパラメーターのデータ型と、Simulink モデルのデータ型オーバーライドの設定を使用して、データ型オーバーライドの等価値を決定する方法を示しています。データ型オーバーライドの詳細については、固定小数点の計測機能およびデータ型オーバーライドを参照してください。
入力信号またはパラメーター タイプ | データ型オーバーライドの設定 | データ型オーバーライドの適用対象 | オーバーライドするデータ型 |
---|---|---|---|
継承される single | Double | All numeric types または Floating-point | 組み込み double |
Single | All numeric types または Floating-point | 組み込み single | |
Scaled double | All numeric types または Floating-point | fi scaled double | |
指定される single | Double | All numeric types または Floating-point | 組み込み double |
Single | All numeric types または Floating-point | 組み込み single | |
Scaled double | All numeric types または Floating-point | fi scaled double | |
継承される double | Double | All numeric types または Floating-point | 組み込み double |
Single | All numeric types または Floating-point | 組み込み single | |
Scaled double | All numeric types または Floating-point | fi scaled double | |
指定される double | Double | All numeric types または Floating-point | 組み込み double |
Single | All numeric types または Floating-point | 組み込み single | |
Scaled double | All numeric types または Floating-point | fi scaled double | |
継承される Fixed | Double | All numeric types または Fixed-point | fi double |
Single | All numeric types または Fixed-point | fi single | |
Scaled double | All numeric types または Fixed-point | fi scaled double | |
指定される Fixed | Double | All numeric types または Fixed-point | fi double |
Single | All numeric types または Fixed-point | fi single | |
Scaled double | All numeric types または Fixed-point | fi scaled double |
固定小数点データ型と MATLAB Function ブロック
MATLAB からのコード生成では、多数の Fixed-Point Designer™ 関数がサポートされています。サポートされている Fixed-Point Designer 関数の詳細については、コードの高速化または C コード生成用にサポートされている関数を参照してください。Simulink で固定小数点データ型を使用したモデルのシミュレーションを行うには、Fixed-Point Designer ライセンスを所有していなければなりません。
モデル エクスプローラーで固定小数点パラメーターを指定
モデル エクスプローラーを使用すると、固定小数点モデルで MATLAB Function ブロックのパラメーターを指定できます。詳細については、MATLAB Function ブロック プロパティの指定を参照してください。
新しいモデルを作成します。そのモデルに MATLAB Function ブロックを配置します。
モデル エクスプローラーを開きます。[モデル化] タブの [設計] セクションで、[モデル エクスプローラー] をクリックします。
[モデルの階層構造] ペインで [untitled*] ノードを展開します。次に、[MATLAB Function] ノードを選択します。
以下のパラメーターは、固定小数点と整数のデータ型を使用するモデル内の MATLAB Function ブロックに適用されます。
これらの継承される Simulink 信号タイプを fi オブジェクトとして扱う — 継承される固定小数点と整数の信号を
fi
オブジェクトとして扱うかどうかを選択します。固定小数点
— MATLAB Function ブロックはすべての固定小数点入力を Fixed-Point Designer のfi
オブジェクトとして扱います。固定小数点および整数
— MATLAB Function ブロックはすべての固定小数点と整数入力を Fixed-Point Designer のfi
オブジェクトとして扱います。
MATLAB 関数 fimath — 次のオブジェクトに関連付けるブロックの
fimath
プロパティを指定します。fi
オブジェクトとして取り扱うように指定した MATLAB Function ブロックに対するすべての固定小数点と整数の入力信号。MATLAB Function ブロック内に作成されたすべての
fi
とfimath
オブジェクト。
以下のオプションのいずれかを選択します。
MATLAB と同じ — ブロックは現在の既定の
fimath
と同じfimath
プロパティを使用します。エディット ボックスに、現在の既定のfimath
が読み取り専用形式で表示されます。それ以外を指定 — エディット ボックス内で独自の
fimath
オブジェクトを指定します。
MATLAB Function ブロック内での fimath
オブジェクトの使用
MATLAB Function ブロックの [プロパティ インスペクター] ペインを開きます。[モデル化] タブの [設計] セクションで、[プロパティ インスペクター] を選択します。[プロパティ インスペクター] ペインで、[固定小数点プロパティ] を展開します。
[MATLAB Function ブロックの fimath] パラメーターを使用すると、MATLAB Function ブロック用の fimath
オブジェクトのプロパティを 1 セット指定できます。ブロックは指定した fimath
プロパティを以下のオブジェクトに関連付けます。
fi
オブジェクトとして取り扱うように指定した MATLAB Function ブロックに対するすべての固定小数点と整数の入力信号。MATLAB Function ブロック内に作成されたすべての
fi
とfimath
オブジェクト。
以下のオプションのいずれかを選択します。
MATLAB と同じ — ブロックは現在の既定の
fimath
と同じfimath
プロパティを使用します。エディット ボックスに、現在の既定のfimath
が読み取り専用形式で表示されます。それ以外を指定 — エディット ボックス内で独自の
fimath
オブジェクトを指定します。それには次の 2 つの方法があります。fimath
オブジェクトをエディット ボックス内で作成する。fimath
オブジェクトを MATLAB またはモデル ワークスペース内で作成して、その変数名をエディット ボックスに入力する。メモ
このオプションを使用し、モデルを他のユーザーと共有する場合は、変数をモデル ワークスペースで定義することを忘れないようにしてください。
[MATLAB 関数 fimath] オプションの機能を示す例については、Specify Fixed-Point Math Properties in MATLAB Function Blockを参照してください。
Fixed-Point Designer の関数 isfimathlocal
では、MATLAB のコード生成がサポートされています。
固定小数点 MATLAB Function ブロックを含むモデルの共有
MATLAB Function ブロックを含む固定小数点モデルを共有するには、まず、MATLAB のワークスペースで定義したすべての変数を、fimath
オブジェクトも含めて、モデルのワークスペースに移動する必要があります。次に例を示します。
新しいモデルを作成します。そのモデルに MATLAB Function ブロックを配置します。
MATLAB ワークスペースで
fimath
オブジェクトを定義します。F = fimath('RoundingMethod','Floor','OverflowAction','Wrap',... 'ProductMode','KeepLSB','ProductWordLength',32,... 'SumMode','KeepLSB','SumWordLength',32)
このF = RoundingMethod: Floor OverflowAction: Wrap ProductMode: KeepLSB ProductWordLength: 32 SumMode: KeepLSB SumWordLength: 32 CastBeforeSum: true
fimath
は、 MATLAB Function ブロックを入力として読み込む Simulink の固定小数点信号に使用できます。モデル エクスプローラーを開きます。
モデル エクスプローラーの [モデルの階層構造] ペインで [untitled*] ノードを展開します。[MATLAB Function] ノードを選択します。
[MATLAB Function ブロックの fimath] で、[それ以外を指定] を選択します。エディット ボックスで、変数
F
を入力します。[適用] をクリックして、変更を保存します。これですべての Simulink 固定小数点入力信号と、ブロック内で作成されるすべての
fi
オブジェクトとfimath
オブジェクトに関連付けられるfimath
プロパティを定義しました。[モデルの階層構造] ペインで [ベース ワークスペース] を選択します。MATLAB ワークスペースで定義した変数
F
は [コンテンツ] ペインのリストで確認できます。このモデルを他のユーザーに送信する場合、そのユーザーが同じ結果を得るためには、最初に MATLAB ワークスペースで同じ変数を定義しなければなりません。ベース ワークスペースから変数
F
を切り取り、モデルのノードの下にリストされたモデルのワークスペース、この場合は [untitled*] に貼り付けます。以下に示すように、モデル エクスプローラーが表示されます。これで他のユーザーとモデルを共有できます。モデル自体のワークスペースに必要な変数を含めたため、他のユーザーはモデルを実行して正確な結果を得ることができます。モデルの受信や実行に必要な手順は他にはありません。
参考
MATLAB Function | コード生成のワークフロー (MATLAB Coder)