データ型オーバーライド モードを使用すると、モデルのデータ型を一時的に切り替えることができます。この機能により、1 つのモデルを維持し、複数のデータ型を使用してモデルをシミュレートできるだけではなく、型ごとの数値的な動作を検証できます。たとえば、倍精度データ型を使用してアルゴリズムを実装し、そのアルゴリズムが単精度の使用にも適しているかを確認する場合、浮動小数点データ型にデータ型オーバーライドを適用して、モデル内のその他のデータ型に永続的に影響することなく、すべての倍精度を単精度に置き換えることができます。
データ型オーバーライドを適用するには、適用するデータ型、および置き換えるデータ型を指定しなければなりません。
データ型オーバーライドは、次の方法を使用して設定できます。この例ではすべての浮動小数点データ型を single に変更します。
以下に例を示します。
set_param(gcs, 'DataTypeOverride', 'Single',... 'DataTypeOverrideAppliesTo','Floating-point');
データ型オーバーライド設定の詳細については、データ型オーバーライドの制御を参照してください。
この例では、ex_single_validation
モデルを使用してデータ型オーバーライドの使用方法を説明します。倍精度データ型を実装するアルゴリズムが単精度の組み込み型の使用にも適していることを実証します。
入力 In2
と In3
は Sum ブロックと Product ブロックへの倍精度の入力です。
Sum ブロックと Product ブロックの出力は、Multiport Switch ブロックへのデータ入力です。
入力 In1
は、Multiport Switch ブロックへの制御入力です。この制御入力の値が、その他の入力、つまり In3
と In2
の和または In3
と In2
の積のいずれが出力端子に渡されるかを決定します。In1
は制御入力であるため、データ型は int8
です。
Relational Operator ブロックは、Multiport Switch ブロックの出力を In4
と対比し、Boolean 信号を出力します。
モデルを開く
ex_single_validation
モデルを開きます。MATLAB® コマンド ラインで以下のように入力します。
addpath(fullfile(docroot,'toolbox','simulink','examples')) ex_single_validation
single での浮動小数点データ型オーバーライド
コマンド ラインで、モデル内の浮動小数点データ型を single でオーバーライドします。
set_param(gcs, 'DataTypeOverride', 'Single',... 'DataTypeOverrideAppliesTo','Floating-point');
モデルの [モデル化] タブで [モデルの更新] をクリックします。
データ型オーバーライドによって、モデル内のすべての浮動小数点 (double
) データ型が single
データ型で置き換えられますが、整数データ型または boolean データ型には影響しません。
モデル アドバイザー チェックの実行
モデルの [モデル化] タブで [モデル アドバイザー] をクリックします。
[システム セレクター] ダイアログ ボックスで、[OK] をクリックします。
モデル アドバイザーが開きます。
モデル アドバイザーで、[タスク別] ノードを展開し、[単精度システムのモデル化] の下にある [厳密な単精度の設計に対して問題のある演算を特定] チェックを選択します。
右側のペインで [このチェックを実行] をクリックします。
チェックがパスすると、このアルゴリズムが単精度の使用に適していることが示されます。生成コードに倍精度データ型が残っていないことを確認するには、単精度組み込み型の使用のためにコードを生成する前に単精度コンバーターを使用します。詳細については、単精度コンバーター入門 (Fixed-Point Designer)を参照してください。
単精度をサポートする Simulink® ブロックを特定するには、コマンド プロンプトで showblockdatatypetable
と入力します。モデルで単精度をサポートしないブロックを検出するには、モデル アドバイザー チェック厳密な単精度の設計に対して問題のある演算を特定を使用します。
Simulink.AliasType
| Simulink.NumericType