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 ブロックを配置します。
モデル エクスプローラーを開きます。[モデル化] タブの [設計] セクションで、[モデル エクスプローラー] をクリックします。
[モデルの階層構造] ペインで [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: truefimathは、MATLAB Function ブロックを入力として読み込む Simulink の固定小数点信号に使用できます。モデル エクスプローラーを開きます。
モデル エクスプローラーの [モデルの階層構造] ペインで [untitled*] ノードを展開します。[MATLAB Function] ノードを選択します。
[MATLAB Function ブロックの fimath] で、[それ以外を指定] を選択します。エディット ボックスで、変数
Fを入力します。[適用] をクリックして、変更を保存します。これですべての Simulink 固定小数点入力信号と、ブロック内で作成されるすべての
fiオブジェクトとfimathオブジェクトに関連付けられるfimathプロパティを定義しました。[モデルの階層構造] ペインで [ベース ワークスペース] を選択します。MATLAB ワークスペースで定義した変数
Fは [コンテンツ] ペインのリストで確認できます。このモデルを他のユーザーに送信する場合、そのユーザーが同じ結果を得るためには、最初に MATLAB ワークスペースで同じ変数を定義しなければなりません。ベース ワークスペースから変数
Fを切り取り、モデルのノードの下にリストされたモデルのワークスペース、この場合は [untitled*] に貼り付けます。以下に示すように、モデル エクスプローラーが表示されます。
これで他のユーザーとモデルを共有できます。モデル自体のワークスペースに必要な変数を含めたため、他のユーザーはモデルを実行して正確な結果を得ることができます。モデルの受信や実行に必要な手順は他にはありません。
参考
MATLAB Function | MATLAB Coder を使用したコード生成の概要 (MATLAB Coder)