ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

MATLAB Function ブロックを使用したコード生成

Simulink モデルでの MATLAB 言語関数の作成

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

MATLAB Function ブロックとコード生成の詳細は、次を参照してください。

MATLAB Function ブロックでのデータ型オーバーライドの使用

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

  • 入力信号またはパラメーターのデータ型

  • Simulink モデルのデータ型オーバーライドの設定

データ型オーバーライドについての詳細は、関数 fxptdlg を参照してください。

入力信号またはパラメーター タイプデータ型オーバーライドの設定データ型オーバーライドの適用対象オーバーライドするデータ型
継承される 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 Function ブロックでのデータ型のオーバーライドの使用」を参照してください。

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

MATLAB からのコード生成では、多数の Fixed-Point Designer™ 関数がサポートされています。サポートされている Fixed-Point Designer 関数についての詳細は、「コードの高速化または C コード生成用にサポートされている関数」を参照してください。

固定小数点の MATLAB Function ブロックを使用して作業する方法の詳細は、以下を参照してください。

    メモ:   Simulink で固定小数点データ型を使用したモデルのシミュレーションを行うには、Fixed-Point Designer ライセンスを所有していなければなりません。

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

モデル エクスプローラーを使用すると、固定小数点モデルで MATLAB Function ブロックのパラメーターを指定できます。次のことを試してみてください。

  1. 新しいモデルに MATLAB Function ブロックを配置します。このブロックは Simulink User-Defined Functions ライブラリにあります。

  2. モデルから [表示] > [モデル エクスプローラー] を選択して、モデル エクスプローラーを開きます。

  3. モデル エクスプローラーの [モデルの階層構造] ペインで [untitled*] ノードを展開します。次に、[MATLAB Function] ノードを選択します。次の図に示すように、モデル エクスプローラーが表示されます。

[ダイアログ] ペインにある以下のパラメーターは、固定小数点と整数のデータ型を使用するモデル内の MATLAB Function ブロックに適用されます。

これらの継承される Simulink 信号タイプを fi オブジェクトとして扱う

継承される固定小数点と整数の信号を fi オブジェクトとして扱うかどうかを選択します。

  • [固定小数点] を選択すると、 MATLAB Function ブロックはすべての固定小数点入力を Fixed-Point Designer fi オブジェクトとして扱います。

  • [固定小数点と整数] を選択すると、 MATLAB Function ブロックはすべての固定小数点と整数入力を Fixed-Point Designer の fi オブジェクトとして扱います。

MATLAB Function ブロックの fimath

次のオブジェクトに関連付けるブロックの fimath プロパティを指定します。

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

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

[MATLAB Function ブロックの fimath] に対して以下のオプションのいずれかを選択できます。

  • [MATLAB と同じ] — このオプションを選択すると、ブロックは現在の既定の fimath と同じ fimath プロパティを使用します。エディット ボックスが薄色表示され、現在の既定の fimath が読み取り専用形式で表示されます。

  • [それ以外を指定] — このオプションを選択すると、エディット ボックス内で独自の fimath オブジェクトを指定できます。

これらのパラメーターの詳細は、「MATLAB Function ブロック内での fimath オブジェクトの使用」を参照してください。

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

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

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

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

「モデル エクスプローラー」または 「端子とデータの管理」 で次のダイアログ ボックスにアクセスし、これらのパラメーターを指定できます。

  • モデル エクスプローラーからこのペインにアクセスするには、以下の手順を実行します。

    • モデル メニューから、[表示] > [モデル エクスプローラー] を選択します。

    • 次に、モデル エクスプローラーの左側の [モデルの階層構造] ペインから MATLAB Function ブロックを選択します。

  • [端子とデータの管理] からこのペインにアクセスするには、MATLAB エディターのメニューから [ツール][データ/端子の編集] を選択します。

[MATLAB Function ブロックの fimath] に対して [MATLAB と同じ] を選択すると、 MATLAB Function ブロックは現在の既定の fimath を使用します。現在の既定の fimath が薄色表示され、エディット ボックスに読み取り専用形式で表示されます。

[それ以外を指定] を選択すると、エディット ボックスで独自の fimath オブジェクトを指定できます。それには次の 2 つの方法があります。

  • fimath オブジェクトをエディット ボックス内で作成する。

  • fimath オブジェクトを MATLAB またはモデル ワークスペース内で作成して、その変数名をエディット ボックスに入力する。

Fixed-Point Designer の関数 isfimathlocal では、MATLAB のコード生成がサポートされています。

固定小数点 MATLAB Function ブロックを使用したモデルの共有

他のユーザーと共同作業を行う場合、MATLAB Function ブロックを使用して固定小数点モデルを共有できます。モデルを共有するには、MATLAB のワークスペースで定義したすべての変数を、fimath オブジェクトも含めて、モデルのワークスペースに確実に移動します。たとえば、次のようにしてみます。

  1. 新しいモデルに MATLAB Function ブロックを配置します。このブロックは Simulink User-Defined Functions ライブラリにあります。

  2. MATLAB ワークスペースで fimath オブジェクトを定義します。このオブジェクトは、 MATLAB Function ブロックを入力として読み込む Simulink の固定小数点信号に使用します。

    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
  3. モデルから [表示] > [モデル エクスプローラー] を選択して、モデル エクスプローラーを開きます。

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

  5. [MATLAB Function ブロックの fimath] パラメーターに [それ以外を指定] を選択し、[ダイアログ] ペインのエディット ボックスで変数 F を入力します。[適用] をクリックして、変更を保存します。

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

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

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

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

この情報は役に立ちましたか?