Main Content

MATLAB Function ブロックを使用したデータ型の制御とコード生成

MATLAB Function ブロックを使用すると、組み込みコードを生成する Simulink® モデルで MATLAB® 言語の関数を作成できます。ターゲット環境用のモデルをシミュレーションする場合またはコードを生成する場合には、 MATLAB Function ブロック内の関数によって効率的な C/C++ コードが生成されます。このコードは、組み込みターゲット環境のメモリやデータ型の要件を厳密に満たします。

MATLAB Function ブロックを使用したデータ型オーバーライド

Simulink モデルでデータ型オーバーライドを指定する MATLAB Function ブロックを使用すると、このブロックによって入力信号およびパラメーター タイプのデータ型オーバーライドの等価値が決まります。次に、これらの等価値を使用して、シミュレーションが実行されます。以下の表は、MATLAB Function ブロックが入力信号またはパラメーターのデータ型と、Simulink モデルのデータ型オーバーライドの設定を使用して、データ型オーバーライドの等価値を決定する方法を示しています。データ型オーバーライドの詳細については、固定小数点のインストルメンテーションおよびデータ型オーバーライドを参照してください。

入力信号またはパラメーター タイプデータ型オーバーライドの設定データ型オーバーライドの適用対象オーバーライドするデータ型
継承される singleDoubleAll numeric types または Floating-point組み込み double
SingleAll numeric types または Floating-point組み込み single
Scaled doubleAll numeric types または Floating-pointfi scaled double
指定される singleDoubleAll numeric types または Floating-point組み込み double
SingleAll numeric types または Floating-point組み込み single
Scaled doubleAll numeric types または Floating-pointfi scaled double
継承される doubleDoubleAll numeric types または Floating-point組み込み double
SingleAll numeric types または Floating-point組み込み single
Scaled doubleAll numeric types または Floating-pointfi scaled double
指定される doubleDoubleAll numeric types または Floating-point組み込み double
SingleAll numeric types または Floating-point組み込み single
Scaled doubleAll numeric types または Floating-pointfi scaled double
継承される FixedDoubleAll numeric types または Fixed-pointfi double
SingleAll numeric types または Fixed-pointfi single
Scaled doubleAll numeric types または Fixed-pointfi scaled double
指定される FixedDoubleAll numeric types または Fixed-pointfi double
SingleAll numeric types または Fixed-pointfi single
Scaled doubleAll numeric types または Fixed-pointfi scaled double

固定小数点データ型と MATLAB Function ブロック

MATLAB からのコード生成では、多数の Fixed-Point Designer™ 関数がサポートされています。サポートされている Fixed-Point Designer 関数の詳細については、コードの高速化または C コード生成用にサポートされている関数を参照してください。Simulink で固定小数点データ型を使用したモデルのシミュレーションを行うには、Fixed-Point Designer ライセンスを所有していなければなりません。

モデル エクスプローラーで固定小数点パラメーターを指定

モデル エクスプローラーを使用すると、固定小数点モデルで MATLAB Function ブロックのパラメーターを指定できます。詳細については、MATLAB Function ブロック プロパティの指定を参照してください。

  1. 新しいモデルを作成します。そのモデルに MATLAB Function ブロックを配置します。

  2. モデル エクスプローラーを開きます。[モデル化] タブの [設計] セクションで、[モデル エクスプローラー] をクリックします。

  3. [モデルの階層構造] ペインで [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 ブロック内に作成されたすべての fifimath オブジェクト。

    以下のオプションのいずれかを選択します。

    • MATLAB と同じ — ブロックは現在の既定の fimath と同じ fimath プロパティを使用します。エディット ボックスに、現在の既定の fimath が読み取り専用形式で表示されます。

    • それ以外を指定 — エディット ボックス内で独自の fimath オブジェクトを指定します。

MATLAB Function ブロック内での fimath オブジェクトの使用

MATLAB Function ブロックの [プロパティ インスペクター] ペインを開きます。[モデル化] タブの [設計] セクションで、[プロパティ インスペクター] を選択します。[プロパティ インスペクター] ペインで、[固定小数点プロパティ] を展開します。

[MATLAB Function ブロックの fimath] パラメーターを使用すると、MATLAB Function ブロック用の fimath オブジェクトのプロパティを 1 セット指定できます。ブロックは指定した fimath プロパティを以下のオブジェクトに関連付けます。

  • fi オブジェクトとして取り扱うように指定した MATLAB Function ブロックに対するすべての固定小数点と整数の入力信号。

  • MATLAB Function ブロック内に作成されたすべての fifimath オブジェクト。

以下のオプションのいずれかを選択します。

  • 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 オブジェクトも含めて、モデルのワークスペースに移動する必要があります。次に例を示します。

  1. 新しいモデルを作成します。そのモデルに MATLAB Function ブロックを配置します。

  2. 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 の固定小数点信号に使用できます。

  3. モデル エクスプローラーを開きます。

  4. モデル エクスプローラーの [モデルの階層構造] ペインで [untitled*] ノードを展開します。[MATLAB Function] ノードを選択します。

  5. [MATLAB Function ブロックの fimath] で、[それ以外を指定] を選択します。エディット ボックスで、変数 F を入力します。[適用] をクリックして、変更を保存します。

    これですべての Simulink 固定小数点入力信号と、ブロック内で作成されるすべての fi オブジェクトと fimath オブジェクトに関連付けられる fimath プロパティを定義しました。

  6. [モデルの階層構造] ペインで [ベース ワークスペース] を選択します。MATLAB ワークスペースで定義した変数 F[コンテンツ] ペインのリストで確認できます。このモデルを他のユーザーに送信する場合、そのユーザーが同じ結果を得るためには、最初に MATLAB ワークスペースで同じ変数を定義しなければなりません。

  7. ベース ワークスペースから変数 F を切り取り、モデルのノードの下にリストされたモデルのワークスペース、この場合は [untitled*] に貼り付けます。以下に示すように、モデル エクスプローラーが表示されます。

    これで他のユーザーとモデルを共有できます。モデル自体のワークスペースに必要な変数を含めたため、他のユーザーはモデルを実行して正確な結果を得ることができます。モデルの受信や実行に必要な手順は他にはありません。

参考

| (MATLAB Coder)

関連するトピック