Using Simulink | ![]() ![]() |
パラメータの型変換
一般的に、シミュレーション中に入力信号とパラメータの関数でブロック出力を計算する時に、Simulinkは暗黙のうちにパラメータのデータタイプを信号のデータタイプに(データタイプが異なっていれば)変換します。この法則にはつぎの例外があります。
たとえば、つぎのモデルを考えます。
このモデルは、定値入力信号を増幅するためにゲインブロックを利用しています。ゲインブロックの出力を計算するために、入力信号とゲインの乗算を計算することが要求されます。そのような計算は、2つの値が同じデータタイプであることを必要とします。しかしながら、この例では、信号のデータタイプ uint8
(符号なし8ビットワード)がゲインパラメータのデータタイプ int32(符号付き32ビット整数)と異なっています。従って、ゲインブロックの出力の計算は、型変換を必要とします。
そのような変換を実行するとき、Simulinkは通常パラメータの型を信号の型に変換します。従って、この例では、Simulinkがこの変換を実行できるための十分条件は、入力信号のデータタイプ(uint8)がゲインを表現できることです。この例では、ゲインがuint8のデータタイプ(0〜255)の範囲で表現できる255なので、Simulinkは変換を実行することができます。従って、このモデルはエラーなしで実行されます。しかしながら、ゲインがほんのわずかでも大きいと(たとえば、256)、シミュレーションを実行しようとすると、Simulinkはout-of-rangeのエラーを表示します。
たとえば、つぎのモデルを考えてください。
この例では、ゲインの値が分数成分をもつのに対して、信号の型は整数値にのみ適応します。このモデルをシミュレーションすると、Simulinkはゲインを最も近い整数値(2)に切り捨て、精度の劣化の警告を出力します。一方、ゲインが2.0のとき、変換に精度の劣化が必要とされないので、Simulinkは警告無しでモデルをシミュレーションすることができます。
注意
int32 のパラメータの float や double への変換は、精度の劣化を伴います。劣化は、パラメータ値の大きさが大きい場合に顕著になります。int32 のパラメータ変換が精度の劣化を伴わないとき、Simulinkはワーニングメッセージを表示します。 |
![]() | 信号の型変換 | マウスとキーボードの動作のまとめ | ![]() |