主要内容

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

生成されたコードにおけるパラメーターのデータ型

ブロックパラメーター(获得ブロックの[ゲイン]パラメーターなど),MATLAB®の数値変数または金宝app仿真软件。参数オブジェクトのデータ型は,生成されたコードの対応するエンティティが使用するデータ型を決定します(たとえば,グローバル変数または関数の引数)。より効率的なコードを生成するには,パラメーターのデータ型と信号のデータ型を一致させるか,パラメーターをさらにサイズが小さいデータ型で格納します。

モデルにブロックパラメーターのデータ型を設定する基本的な情報については,ブロックパラメーターのデータ型の制御を参照してください。

パラメーターデータ型の有意性

ブロックパラメーター,MATLAB変数またはパラメーターオブジェクトが使用するデータ型によって,生成されたコードがパラメーター値をメモリに格納するために使用するデータ型が決まります。たとえば,

  • モデルコンフィギュレーションパラメーターの(既定のパラメーター動作)既定のパラメーター動作をを参照)[調整可能]に設定すると,获得ブロックの[ゲイン]パラメーターが,パラメーターデータを格納するグローバル構造体のフィールドとして生成されたコードに表示されます。データ型をモデルのブロックパラメーターに適用する場合,コード内の構造体フィールドは対応するデータ型real32_Tを使用します。

  • ストレージクラスExportedGlobal金宝app仿真软件。参数オブジェクトに適用すると,そのオブジェクトは別のグローバル変数として生成されたコードに表示されます。オブジェクトの数据类型プロパティをint8に設定すると,コード内のグローバル変数は対応するデータ型int8_Tを使用します。

  • モデルワークスペースで金宝app仿真软件。参数オブジェクトをモデル引数として設定すると,そのオブジェクトは,関数一步などのモデルエントリポイント関数の仮パラメーター(引数)として生成されたコードに表示されます。オブジェクトの数据类型プロパティによって仮パラメーターのデータ型が決まります。

パラメーター値をメモリに格納するために生成されたコードが使用するデータ型を決定する以外に,パラメーター,変数またはオブジェクトのデータ型は以下を行うこともできます。

  • コード生成の前に,ブロックにパラメーターの値をキャストさせます。キャストにより,オーバーフロー,アンダーフローまたは量子化が発生する可能性があります。

  • 生成されたコードに飽和コードなどの追加のコードを含めるようにします。

パラメーターデータ型の不一致による型変換

ブロックパラメーター,ワークスペース変数および信号のデータ型が異なる場合,ブロックは型変換を使用してデータ型の不一致を調整できます。これらの型変換により,モデルの関数一步を含む生成されたコードのアルゴリズムには,ストレージのデータ型を調整する明示的なキャストおよび固定小数点のスケーリングを調整するCビットシフトが含まれます。

パラメーターのデータ型の不一致は,次の場合に発生します。

  • MATLAB変数またはパラメーターオブジェクト(金宝app仿真软件。参数)に指定するデータ型が,ブロックパラメーターのデータ型と異なる場合。ブロックパラメーターは,変数またはオブジェクトの値の型変換を行います。

  • 初期値に設定するデータ型が,初期化された信号または状態のデータ型と異なる場合。

  • ブロックパラメーターに指定するデータ型が,信号またはパラメーターが操作を行う信号のデータ型と異なる場合。一部のブロックは,パラメーターの型変換を行ってから操作を実行します。たとえば,获得ブロックはこの型変換を行います。

バイアスまたは小数部の固定小数点勾配を使用するように変数またはオブジェクトを設定すると,ブロックパラメーターは型変換を実行できません。この場合,変数またはパラメーターオブジェクトのデータ型とブロックパラメーターのデータ型を一致させなければなりません。以下のいずれかの方法を使用します。

  • 変数またはパラメーターオブジェクトには状況依存データ型指定を使用します。MATLAB変数の場合は,の数値を使用して変数の値を設定します。パラメーターオブジェクトの場合は,数据类型プロパティを汽车に設定します。

  • 金宝app仿真软件。AliasTypeまたは金宝app仿真软件。NumericTypeオブジェクトを使用して,ブロックパラメーターのデータ型およびパラメーターオブジェクトのデータ型を設定します。

    状況依存データ型指定に依存できない場合,たとえば,構造体のフィールドを使用してブロックパラメーターの値を設定する場合は,この手法を使用します。

  • ブロックパラメーターおよび変数またはパラメーターオブジェクトには同じデータ型を手動で指定します。

    継承したデータ型と状況依存のデータ型および外部変数と外部オブジェクトに対するモデルの依存度を減らすには,この手法を使用します。

生成されたコードでポインターまたは参照を介してパラメーターデータにアクセスするブロックの場合,ワークスペース変数とブロックパラメーターに異なるデータ型を指定すると,生成されたコードでは,変数のデータ型がブロックパラメーターのデータ型に暗黙的にキャストされます。暗黙的なキャストに必要となるデータコピーは,RAM消費を大幅に増加させ,大規模なデータセットのコードの実行速度を低下させる可能性があることに注意してください。たとえば,查找表ブロックは,生成されたコードでポインターまたは参照を介して大規模なベクトルまたは行列に頻繁にアクセスします。

モデル引数を使用する際のパラメーターデータ型の一致の詳細については,モデル引数および引数の値のデータ型の制御を参照してください。

データ型の不一致によるダウンキャストおよび精度低下の検出

診断のコンフィギュレーションパラメーターを設定して,量子化およびパラメーターの精度の損失を発生させる意図しないデータ型の不一致を検出できます。モデルコンフィギュレーションパラメーター:データ有効性の診断を参照してください。

他のモデル化パターンに関する考慮事項

特定のモデル化パターンを使用して,固定小数点データ型,パラメーター構造体およびルックアップテーブルオブジェクトなどを作成する場合,パラメーターデータ型の制御にはさまざまな手法を使用します。

調整可能なパラメーターと最高精度の固定小数点のスケーリング

最高精度の固定小数点スケーリングを調整可能なブロックパラメーターまたはパラメーターオブジェクトに適用するには,固定小数点ツールを使用してシステム全体をオートスケールするか,データ型アシスタントを使用して個々のパラメーターまたはオブジェクトを設定できます。調整可能なブロックパラメーターに最適な精度の固定小数点スケーリングの計算を参照してください。

調整可能なパラメーターが最適な精度の固定小数点スケーリングを使用する場合,金宝app仿真软件®はパラメーターに指定する最小値と最大値に基づいてデータ型を選択します(ブロックパラメーターの最小値と最大値の指定を参照)。パラメーターを使用するブロックのダイアログボックスまたは金宝app仿真软件。参数オブジェクトのプロパティでこれらの値を指定できます。

最小値と最大値を指定しない場合,金宝app仿真软件はパラメーターの値に基づいてデータ型を選択します。選択されたスケーリングによって可能な調整値の範囲が制限される場合があります。したがって,調整可能なパラメーターごとに最小値と最大値を指定することをお勧めします。

パラメーターのデータ型で指定していなくても,調整可能なパラメーターは最適な精度のスケーリングを使用できます。たとえば,ブロックのダイアログボックスで[パラメーターデータ型)继承:通过内部规则继承に設定されている場合,获得ブロックは最適な精度のスケーリングを選択できます。これが既定のブロックの設定です。

構造体フィールドのデータ型の制御

構造体をブロックパラメーターの値として使用する場合(たとえばバス信号の初期化のため),または複数のブロックパラメーター値を1つの構造体にまとめる場合,金宝app仿真软件。公共汽车オブジェクトを作成して金宝app仿真软件。参数オブジェクトのデータ型として使用できます。その後,構造体内の個々のフィールドのデータ型を制御できます。パラメーターオブジェクトの作成によるフィールドのデータ型と特性の制御および初期条件構造体フィールドのデータ型の制御を参照してください。

ルックアップテーブルオブジェクトのデータ型の制御

金宝app仿真软件。LookupTableオブジェクトと金宝app仿真软件。断点オブジェクトを使用して,查找表ブロックのテーブルおよびブレークポイントデータを格納し,テーブルおよびブレークポイントデータのデータ型を制御する場合,次のいずれかの手法を使用します。

  • (1 2 3)などの(ベクトルを返す)型なし式を使用して,組み込み金宝appSimulink.lookuptable.Tableオブジェクトおよび金宝appSimulink.lookuptable.Breakpointオブジェクトの价值プロパティを設定します。[ブレークポイントの指定)(明示的な値)に設定されている場合は,[プロパティ]ダイアログボックスの下部にあるMATLAB式のテキストボックスと表形式インターフェイスを使用します。データ型を制御するには,数据类型プロパティを汽车以外の値に設定します。

    この手法を使用してテーブルまたはブレークポイントデータの値とデータ型を分離すると,設計の可読性が向上し,理解しやすくなります。金宝app仿真软件。NumericTypeまたは金宝app仿真软件。AliasTypeオブジェクトを使用して以下を実行できます。

    • 生成されたコードのデータ型の名前をカスタマイズする。

    • テーブルまたはブレークポイントデータのデータ型をモデルの信号のデータ型と一致させる。

  • 单((1 2 3))などの型付き式を使用して,組み込みオブジェクトの价值プロパティを設定します。固定小数点データ型を使用するには,fiオブジェクトの价值プロパティを設定します。[ブレークポイントの指定)(明示的な値)に設定されている場合は,[プロパティ]ダイアログボックスの下部にあるMATLAB式のテキストボックスと表形式インターフェイスを使用します。

    組み込みオブジェクトの数据类型プロパティを既定値汽车に設定します。次に,テーブルおよびブレークポイントデータは,价值プロパティの設定に使用するデータ型を取得します。

    この手法を使用して,データ型の情報を价值プロパティに格納します。これにより,金宝app仿真软件。LookupTableオブジェクトおよび金宝app仿真软件。断点オブジェクトの操作方法を簡略化できます。数据类型プロパティを既定値のままにしておくことができます。

    後で价值プロパティ内のブレークポイントまたはテーブルデータを変更する場合,型付き式を使用してデータ型情報を維持します。あるいは,データを変更するためにスクリプトまたはコマンドプロンプトでコマンドを使用する場合は,型付き式を使用せず,添字を使用した代入(:)を使用します。

    myLUTObject.Table.Value(:) = [4 5 6];

    价值プロパティに格納されているデータを変更する場合,型付き式または添字を使用した代入を使用しないとデータ型情報が失われます。

サブシステム内のブロックが金宝app仿真软件。LookupTableオブジェクトまたは金宝app仿真软件。断点オブジェクトを使用する場合,データ型オーバーライド(固定小数点の計測機能およびデータ型オーバーライドの制御を参照)をサブシステムのみに設定することはできません。代わりに,データ型オーバーライドをモデル全体に設定します。

パラメーターオブジェクト内の式のデータ型

式を使用してパラメーターオブジェクト(金宝app仿真软件。参数など)の値を設定できます。式は,異なるオブジェクト間の数学的関係をエンコードします。この手法を使用する場合,異なるデータ型ルールが適用されます。数式を使用した変数値の設定を参照してください。

関連するトピック