Main Content

浮動小数点組み込みモデルの検証

データ型オーバーライド モードを使用すると、モデルのデータ型を一時的に切り替えることができます。この機能により、1 つのモデルを維持し、複数のデータ型を使用してモデルをシミュレートできるだけではなく、型ごとの数値的な動作を検証できます。たとえば、倍精度データ型を使用してアルゴリズムを実装し、そのアルゴリズムが単精度の使用にも適しているかを確認する場合、浮動小数点データ型にデータ型オーバーライドを適用して、モデル内のその他のデータ型に永続的に影響することなく、すべての倍精度を単精度に置き換えることができます。

データ型オーバーライドを適用するには、適用するデータ型、および置き換えるデータ型を指定しなければなりません。

データ型オーバーライドは、次の方法を使用して設定できます。この例ではすべての浮動小数点データ型を single に変更します。

以下に例を示します。

set_param(gcs, 'DataTypeOverride', 'Single',...
 'DataTypeOverrideAppliesTo','Floating-point');

データ型オーバーライド設定の詳細については、データ型オーバーライドの制御を参照してください。

モデルの確認

この例では、ex_single_validation モデルを使用してデータ型オーバーライドの使用方法を説明します。倍精度データ型を実装するアルゴリズムが単精度の組み込み型の使用にも適していることを実証します。

モデルを開きます。

open_system('ex_single_validation')

  • 入力 In2In3Sum ブロックと Product ブロックへの倍精度の入力です。

  • Sum ブロックと Product ブロックの出力は、Multiport Switch ブロックへのデータ入力です。

  • 入力 In1 は、Multiport Switch ブロックへの制御入力です。この制御入力の値が、その他の入力、つまり In3In2 の和または In3In2 の積のいずれが出力端子に渡されるかを決定します。In1 は制御入力であるため、データ型は int8 です。

  • Relational Operator ブロックは、Multiport Switch ブロックの出力を In4 と対比し、Boolean 信号を出力します。

単精度モデルの検証

single での浮動小数点データ型オーバーライド

  1. コマンド ラインで、モデル内の浮動小数点データ型を single でオーバーライドします。

    set_param(gcs, 'DataTypeOverride', 'Single',...
     'DataTypeOverrideAppliesTo','Floating-point');
  2. モデルの [モデル化] タブで [モデルの更新] をクリックします。

    データ型オーバーライドによって、モデル内のすべての浮動小数点 (double) データ型が single データ型で置き換えられますが、整数データ型または boolean データ型には影響しません。

    Model with data type annotations displayed for all of the blocks. In the model, all of the double data types have been replaced with single data types.

モデル アドバイザー チェックの実行

  1. モデルの [モデル化] タブで [モデル アドバイザー] をクリックします。

  2. [システム セレクター] ダイアログ ボックスで、[OK] をクリックします。

    モデル アドバイザーが開きます。

  3. モデル アドバイザーで、[タスク別] ノードを展開し、[単精度システムのモデル化] の下にある [厳密な単精度の設計に対して問題のある演算を特定] チェックを選択します。

  4. 右側のペインで [このチェックを実行] をクリックします。

    チェックがパスすると、このアルゴリズムが単精度の使用に適していることが示されます。生成コードに倍精度データ型が残っていないことを確認するには、単精度組み込み型の使用のためにコードを生成する前に単精度コンバーターを使用します。詳細については、単精度コンバーター入門 (Fixed-Point Designer)を参照してください。

単精度をサポートするブロック

単精度をサポートする Simulink® ブロックを特定するには、コマンド プロンプトで showblockdatatypetable と入力します。モデルで単精度をサポートしないブロックを検出するには、モデル アドバイザー チェックIdentify questionable operations for strict single-precision designを使用します。

参考

|

関連するトピック