Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

関数引数の型指定

関数引数について

MATLAB Function ブロックの関数引数を作成するには、MATLAB Function ブロック エディターで関数ヘッダーの中に引数を入力します。引数を定義するとき、Simulink® ソフトウェアは MATLAB Function ブロックに対応する端子を作成します。端子には信号を接続できます。MATLAB Function ブロック用に定義した各引数に対して、"データ型モード" を選択することができます。各モードはデータ型を選択するための一連のオプションを表します。

既定の設定では、MATLAB Function ブロック関数の引数のデータ型のモードは [継承] になっています。これは関数の引数はそのデータ型を出入りする信号から継承することを示します。この既定の型に代わるものを指定するには、まず、データ型のモードを選択してから、そのモードに基づくデータ型を選択します。

引数のデータ型の指定

MATLAB Function ブロック関数引数のデータ型を指定するには、以下のようにします。

  1. MATLAB Function ブロック エディターから、[データの編集] を選択し、[端子とデータの管理] を開きます。

  2. 左のペインで対象となる引数を選択します。

  3. [データ] プロパティ ダイアログ ボックス (右のペイン) で、[データ型アシスタントを表示] ボタン をクリックすると、データ型アシスタントが表示されます。次に、[モード] ドロップダウン メニューからオプションを選択します。

    [データ] プロパティ ダイアログ ボックスは、選択されたモードに応じてデータ型の指定に必要なフィールドを動的に表示します。

  4. 選択したモードに基づいて、以下のようにデータ型を指定します。

    モード指定する項目
    継承 (既定の設定)このモードではデータ型を指定できません。データ型は、MATLAB Function ブロック関数引数のスコープの指定に基づいて、以前に定義されたデータから継承されます。
    • スコープが [入力] の場合、データ型は所定の端子への入力信号から継承されます。

    • スコープが [出力] の場合、データ型は所定の端子への出力信号から継承されます。

    • スコープが [パラメーター] の場合、データ型は関連付けられているパラメーターから継承されます。これは Simulink マスク サブシステムまたは MATLAB® ワークスペースで定義できます。

    引数データ型の継承を参照してください。

    Built in引数用の組み込みデータ型で説明されているように、サポートされているデータ型のドロップダウン リストから選択します。
    Fixed point

    Fixed-Point Designer データ プロパティの指定で説明されているように、固定小数点データのプロパティを指定します。

    Expression引数の型を式で指定で説明されているように、データ型として評価される式を入力します。
    Bus Object[バス オブジェクト] フィールドで Simulink.Bus オブジェクトの名前を入力して MATLAB 構造体のプロパティを定義します。バス オブジェクトをベース ワークスペース内に定義する必要があります。構造体の入出力とバス信号とのインターフェイスを参照してください。

    メモ

    [編集] ボタンをクリックすると、Simulink バス エディターを使って Simulink.Bus オブジェクトを作成したり変更したりできます (MATLAB Function ブロックへのバス信号の付加を参照)。

    Enumerated[列挙型] フィールドには、ベース ワークスペースで定義している Simulink.IntEnumType オブジェクトの名前を入力します。列挙型のコードの生成を参照してください。

引数データ型の継承

MATLAB Function ブロック関数の引数は、固定小数点データ型も含めて、接続されている信号からそのデータ型を継承できます。

  1. [端子とデータの管理] から対象となる引数を選択する

  2. [データ] プロパティ ダイアログで、[継承:Simulink と同じ][データ型] ドロップダウン メニューから選択します。

サポートされているデータ型の一覧は、引数用の組み込みデータ型を参照してください。

メモ:

引数は接続されている Simulink 信号からその実数/複素数 (すなわち、値が実数であるか複素数であるか) を継承することもできます。実数/複素数を継承するには、[データ] プロパティ ダイアログの [実数/複素数] フィールドを [継承] に設定します。

モデルをビルドした後、[端子とデータの管理] の [コンパイルされたタイプ] 列には、コンパイルされたシミュレーション アプリケーションで Simulink から継承された実際の型が表示されます。

継承した出力データのデータ型は、指定された出力に値を保存するブロック線図アクションから推測されます。前述の例においては、変数 meanstdev は、double 型のオペランドをもつ演算の結果なので、double 型になっています。Simulink で期待される型が、推測されたデータ型に一致する場合には、継承は成功です。他の場合はすべて、ビルド中に不一致エラーが発生します。

メモ:

ライブラリの MATLAB Function ブロックは、通常の MATLAB Function ブロックのように、継承されたデータ型、サイズ、実数/複素数をもつことができます。ただし、同じモデル内のそのライブラリ ブロックのすべてのインスタンスの入力は、同じプロパティをもつ必要があります。

引数用の組み込みデータ型

[データ型モード][組み込み] を選択した場合、[データ] プロパティ ダイアログに [データ型] フィールドが表示され、そのドロップダウン リストから組み込みデータ型が選択できるようになります。[端子とデータの管理] の [データ型] 列からもデータ型を選択できます。サポートされるデータ型を下の表に示します。

データ型説明

double

64 ビット倍精度浮動小数点

single

32 ビット単精度浮動小数点

int32

32 ビット符号付き整数

int16

16 ビット符号付き整数

int8

8 ビット符号付き整数

uint32

32 ビット符号なしの整数

uint16

16 ビット符号なしの整数

uint8

8 ビット符号なしの整数

boolean

論理値 (1 = true; 0 = false)

引数の型を式で指定

[端子とデータの管理] で MATLAB Function ブロック関数の引数のデータ型を式として指定できます。

  1. [データ] プロパティ ダイアログの [タイプ] ドロップダウン メニューから、[<data type expression>] を選択します。

  2. [タイプ] フィールドで "<data type expression>" をデータ型として評価される式で置き換えます。次のような式を使用できます。

    • MATLAB ワークスペースのエイリアス型。Simulink.AliasType の説明を参照してください。

    • 関数 fixdt。固定小数点または浮動小数点データ型を記述する Simulink.NumericType オブジェクトの作成に使用します。

    • type (Stateflow) 演算子。以前に定義されたデータに基づくデータ型の指定に使用します。

Fixed-Point Designer データ プロパティの指定

MATLAB Function ブロックは信号やパラメーターの値を固定小数点数で表すことができます。MATLAB Function ブロックで固定小数点データを使用するモデルのシミュレーションを実行するには、お使いのシステムに Fixed-Point Designer™ 製品をインストールしなければなりません。

固定小数点では次のプロパティを設定できます。

符号属性-  固定小数点データを [符号付き] または [符号なし] のどちらに設定するかを指定します。符号付きデータは正または負の数値を表します。符号なしデータは正の値のみを表します。既定の設定は [符号付き] です。

語長-  量子化された整数をもつワードのビット サイズを指定します。ワード サイズが大きいと、小さい場合に比べて、大きな値を高精度で表現します。語長には 0 ~ 128 ビットの整数を指定できます。既定の設定は 16 です。

スケーリング-  オーバーフローを避け、量子化エラーを最小限に抑えるための固定小数点データのスケーリング方法を指定します。以下の中から選択できます。

スケーリング モード説明
2 進小数点 (既定の設定)

このモードを選択すると、[データ型アシスタント]に 2 進小数点の位置を指定する [小数部の長さ] フィールドが表示されます。

2 進小数点は正または負の整数になります。正の整数を入力すると、その値に応じて 2 進小数点は右端のビットの左側に配置されます。たとえば、2 は小数点を右から 2 番目のビットの前に設定します。負の整数を入力すると、以下の例のように、その値に応じて 2 進小数点は右端のビットのさらに右側に配置されます。

既定の設定は 0 です。

勾配とバイアス

このモードを選択すると、[データ型アシスタント] に [勾配][バイアス] フィールドが表示され、その値を入力できるようになります。

  • 勾配には の実数を入力します。既定の設定は 1.0 です。

  • バイアスには実数を入力します。既定値は 0.0 です。

勾配とバイアスは、MATLAB ワークスペースで定義したパラメーターを含む式として入力できます。

メモ

2 進小数点のスケーリングを使用すると、生成されたコードでの固定小数点データの実装を簡素化できます。2 進小数点のスケーリングによる固定小数点データの演算は単純なビットシフトで実行されるので、個別の勾配値とバイアス値に対して手間のかかるコード実装を行う必要がなくなります。

データ型オーバーライド-  データ型オーバーライド設定が Inherit (既定の設定) または Off であるかを指定します。

最高精度のスケーリングを計算-  [2 進小数点][勾配とバイアス] スケーリングでは、指定した [制限範囲] プロパティに基づいて、Simulink ソフトウェアが自動的に "最高精度" の値を計算できます。

最高精度のスケーリング値を自動的に計算するには、以下のようにします。

  1. [最小値][最大値] または両方の制限範囲プロパティを指定します。

  2. [最高精度のスケーリングを計算] をクリックします。

Simulink ソフトウェアはスケーリング値を計算し、その値を [小数部の長さ] または [勾配][バイアス] フィールドに表示します。

メモ

[制限範囲] プロパティは、[定数][パラメーター] のスコープには適用されません。したがって、Simulink はこれらの最高精度スケーリングを計算できません。

固定小数点の詳細-  固定小数点では次の詳細を表示できます。

固定小数点の詳細説明
表現可能な最大値選択されたデータ型、符号、語長、小数部の長さ (またはデータ型、符号、勾配とバイアス) で表現可能な最大値。
最大値指定された最大値。
最小値指定された最小値。
表現可能な最小値選択されたデータ型、符号、語長、小数部の長さ (またはデータ型、符号、勾配とバイアス) で表現可能な最小値。
精度与えられた語長と小数部の長さ (または勾配とバイアス) での精度。

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

Simulink で、[データ型オーバーライド] モードを Double または Single に設定すると、MATLAB Function ブロックは継承される入力信号とパラメーターのデータ型をすべて fi double オブジェクトまたは fi single オブジェクトにそれぞれ設定します (詳細については、MATLAB Function ブロックでのデータ型オーバーライドの使用 (Fixed-Point Designer)を参照してください)。継承された入力信号やパラメーターのデータ型をチェックし、固定小数点にできない入力は、[端子とデータの管理] (端子とデータの管理を参照) を使って明示的にデータ型を指定する必要があります。演算によっては sin のように固定小数点オブジェクトに適用できないものがあります。

メモ

正しい入力データ型を明示的に設定しないでおくと、[データ型オーバーライド] の設定後にコンパイルで問題が発生する可能性があります。

 データ型オーバーライドの設定方法

関連する例

詳細