ドキュメンテーション

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

MATLAB Function

組み込み C コードを生成する MATLAB コードをモデルに含める

  • ライブラリ:
  • Simulink / User-Defined Functions

説明

MATLAB Function ブロックを使用すると、使用する MATLAB® 関数を Simulink® モデルで作成できます。作成した MATLAB 関数は、シミュレーションのために実行されて、Simulink Coder™ ターゲット用のコードを生成します。Simulink および MATLAB 製品をはじめて使用する場合は、MATLAB Function ブロックを使用するモデルの作成およびMATLAB Function ブロックとはの概要を参照してください。

この例のように MATLAB Function ブロックをダブルクリックしてエディターを開き、MATLAB 関数ブロックを書き込みます。

このエディターの詳細は、MATLAB Function ブロック エディターを参照してください。

MATLAB Function ブロックへの入力および出力データは、関数ヘッダーで引数および戻り値として指定します。前のサンプル関数の引数と戻り値は、モデルのブロックの入力および出力に相当します。

[データの編集] を選択して MATLAB Function ブロック エディターにアクセスすることで、[端子とデータの管理] からデータ、入力トリガー、関数呼び出し出力を定義できます。端子とデータの管理を参照してください。

MATLAB Function ブロックは、各変数のサイズ、クラスおよび実数/複素数を決定する解析に基づいて、効率の良い組み込み可能なコードを生成します。この分析によって次の制限が適用されます。

言語の制約に加えて、MATLAB Function ブロックは、MATLAB で使用可能な関数の一部をサポートしています。サポートされている関数の一覧は、C/C++ コードの生成でサポートされている関数およびオブジェクト — アルファベット順を参照してください。これらの関数には、次のような一般的カテゴリの関数が含まれます。

すべての関数カテゴリの一覧は、C/C++ コードの生成でサポートされている関数およびオブジェクト — カテゴリ順を参照してください。

メモ:

このブロックのコードは MATLAB とまったく同じ結果になるように試みますが、丸め誤差のために、結果が異なる場合があります。このような数値の差は、当初はわずかな関数 eps でも、演算を繰り返すことによって拡大することがあります。nan の動作に依存することはお勧めできません。同じ計算でも、異なる C コンパイラを使用すると、異なる結果になることがあります。

メモ

MATLAB Function ブロックには %#codegen 命令が含まれ、ブロックの MATLAB アルゴリズムが常にコードの生成を目的としていることが強調されます。%#codegen 命令の有無にかかわらず、MATLAB Function ブロックのコンテキストにおけるエラー チェックの動作は変更されません。詳細については、コンパイル命令 %#codegenを参照してください。

データの可視化をサポートするために、MATLAB Function ブロックは、シミュレーションについてのみ、MATLAB 関数の呼び出しをサポートします。この機能の制約と、このブロックにコード解析とこの機能を組み込む方法については、外部関数を参照してください。これらの関数呼び出しは、Simulink の入力または出力に直接影響しない場合、Simulink Coder 生成コードには表示されません。

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

[端子とデータの管理] で、ブロック入力を端子ではなく Simulink パラメーターとして宣言することができます。MATLAB Function ブロックは、入力、出力、およびパラメーターについて、タイプとサイズの継承もサポートします。これらのプロパティを明示的に指定することもできます。MATLAB Function ブロックで使用する変数の詳細については、関数引数の型指定関数引数のサイズ指定およびパラメーター引数の追加を参照してください。

MATLAB Function では、再帰呼び出しはできません。

既定の設定では、MATLAB Function ブロックで直達が有効になっています。この機能を無効にするには、[端子とデータの管理] で [直達を許可] チェック ボックスをオフにします。非直達により、セマンティクスで出力が確実に現在の状態にのみ依存します。非直達を使用すると、フィードバック ループで MATLAB Function ブロックを使用し、代数ループを回避できます。

端子

入力

すべて展開する

MATLAB Function ブロック内にある関数の最初の入力引数に対応する入力。エディターで関数の引数の名前を変更した場合、ブロックはそれに応じて端子の名前を変更します。

MATLAB でサポートされていても、Simulink でサポートされないデータ型については、Simulink モデルと MATLAB Function ブロック内の関数との間で受け渡しされない可能性があります。これらの型は MATLAB Function ブロック内で使用される場合があります。

このブロックの固定小数点サポートの詳細は、固定小数点データ型と MATLAB Function ブロック (Fixed-Point Designer)およびMATLAB Function ブロックでのデータ型オーバーライドの使用 (Fixed-Point Designer)を参照してください。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

MATLAB Function ブロック内の関数への n 番目の入力引数。エディターで引数を追加する場合、ブロックはそれに応じて端子を追加します。

MATLAB でサポートされていても、Simulink でサポートされないデータ型については、Simulink モデルと MATLAB Function ブロック内の関数との間で受け渡しされない可能性があります。これらの型は MATLAB Function ブロック内で使用される場合があります。

このブロックの固定小数点サポートの詳細は、固定小数点データ型と MATLAB Function ブロック (Fixed-Point Designer)およびMATLAB Function ブロックでのデータ型オーバーライドの使用 (Fixed-Point Designer)を参照してください。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

出力

すべて展開する

MATLAB Function ブロック内にある関数の最初の出力引数。エディターで関数の引数の名前を変更した場合、ブロックはそれに応じて端子の名前を変更します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

MATLAB Function ブロック内にある関数からの n 番目の出力引数。エディターで引数を追加する場合、ブロックはそれに応じて端子を追加します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus

ブロックの特性

データ型

double[a] | single[a] | Boolean[a] | base integer[a] | fixed point[a] | enumerated[a] | bus[a]

直接フィードスルー

なし

多次元信号

あり[a]

可変サイズの信号

あり[a]

ゼロクロッシング検出

なし

[a] 実際のデータ型または機能のサポートは、ブロックの実装に依存します。

拡張機能

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

R2011a で導入