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

ブロックを使用した MATLAB 関数の実装

MATLAB Function ブロックでは、MATLAB® 言語を使用して Simulink® モデルのカスタム機能を定義することができます。これは、MATLAB コードを Simulink に取り込む最も簡単な方法です。MATLAB Function ブロックでは、Simulink Coder™ および Embedded Coder® からの C/C++ コード生成がサポートされています。

これらのブロックを使用するのは、特に次のような場合です。

  • カスタム機能をモデル化する既存の MATLAB 関数がある場合。または、こうした関数を容易に作成できる場合。

  • Simulink グラフィカル言語では取得されない、または取得できないカスタム機能がモデルに必要な場合。

  • Simulink ブロック線図を使うより MATLAB 関数を使う方がカスタム機能のモデル化が容易な場合。

  • モデル化するカスタム機能に連続状態または離散ダイナミクス状態が含まれない場合。動的状態をモデル化するには、S-Function を使用する。MATLAB S-Function の作成と構成を参照してください。

MATLAB Function ブロックが機能する仕組み

MATLAB Function ブロックが含まれるモデルをシミュレートするときに、ソフトウェアはブロックからバイナリ コードまたは C/C++ MATLAB 実行可能 (MEX) コードを生成し、このコードをモデルに統合します。MATLAB Function ブロックでは、Simulink の外部にある MATLAB コードから C/C++ コードを生成するために使用する、MATLAB Coder と同じインフラストラクチャが使用されます。

MATLAB Function ブロックはコード生成技術を利用しているため、一般的に大部分を MATLAB Coder と共有しています。MATLAB Coder の C/C++ コード生成の制限は MATLAB Function ブロックにも適用されます。ただし、MATLAB Function ブロックは Simulink 内で自己完結するため、MATLAB Coder は必要ありません。MATLAB Function ブロックが含まれているモデルからスタンドアロン C/C++ コードを生成するには、Simulink Coder を使用します。

MATLAB Function ブロックの機能

以下では、モデル内で "何のために" MATLAB Function を使用できるかについて説明します。例の中で MATLAB Function ブロックが使用される "方法" を確認するには、MATLAB Function ブロックを使用したカスタム機能の作成を参照してください。

Simulink から MATLAB へのインターフェイス

MATLAB Function ブロックは、MATLAB コードと Simulink モデル間の直感的なインターフェイスを提供しています。ブロックの入力変数および出力変数は Simulink の入力信号および出力信号からプロパティを継承します。

既定の設定では、MATLAB Function ブロックへの入出力信号のサイズとデータ型はどちらも、対応する Simulink 信号から継承されます。[端子とデータの管理] またはモデル エクスプローラーで入力と出力のサイズとデータ型を明示的に指定することもできます。端子とデータの管理およびモデル エクスプローラーを使用した検索と編集を参照してください。

スタンドアロン C/C++ コードの生成

MATLAB Function ブロックは、Simulink Coder および Embedded Coder を使用した C++ コード生成用にサポートされています。MATLAB Function ブロックが含まれている Simulink モデルでコード生成を使用して、MATLAB の機能を MATLAB 環境外に展開できます。

Simulink モデルからの C/C++ コード生成の詳細については、Simulink Coderを参照してください。

MATLAB 言語と関数のサポート

MATLAB Function ブロックでは、C/C++ コード生成用にサポートされている MATLAB 言語と言語機能のサブセットのみを使用できます。サポートされているコード生成用の関数のリストについては、Functions and Objects Supported for C/C++ Code Generationを参照してください。サポートされている言語機能については、C/C++ コード生成でサポートされている MATLAB 言語機能を参照してください。

外部関数

シミュレーションでは、"外部" 関数を MATLAB Function ブロックから呼び出すことができます。外部関数は、C/C++ コード生成用にサポートされていないが、実行時に MATLAB 環境にディスパッチして実行することができる関数です。外部関数はモデルのシミュレーション中にワークスペースで実行されます。

コード生成では、外部関数として明示的に宣言していない限り、Simulink CoderMATLAB Function ブロック内のすべての関数をコンパイルしようとします。外部関数呼び出しは、スタンドアロン C/C++ ソース コードや実行可能ファイルといった、生成されるスタンドアロン コードから省略されます。コード生成における関数呼び出しの解決およびMATLAB 関数の外部関数としての宣言を参照してください。

Simulink Function ブロックおよび Stateflow ブロックのサポート

MATLAB Function ブロックから、Simulink Function ブロックで定義された関数を呼び出すことができます。関数 Stateflow® は、[チャート プロパティ] ダイアログ ボックスで [チャート レベルの関数をエクスポート (グローバル)] および [エクスポートされた関数の Simulink による呼び出しを許可] チェック ボックスをオンにすると、呼び出すことができます。Simulink Function ブロックと Stateflow ブロックで定義された関数を呼び出す方法の詳細については、Simulink 関数: Simulink Function ブロック、エクスポートされた Stateflow グラフィカル関数および MATLAB 関数を参照してください。

参考

|

関連するトピック