Data Type Conversion​の出力データ最大値、​最小値設定

5 views (last 30 days)
Yukiko Fujisawa
Yukiko Fujisawa on 21 May 2018
Commented: Yukiko Fujisawa on 22 May 2018
Data Type Conversionにて出力データ型をsingleに設定しました。 出力をsingleの最大値、最小値である下記の範囲内に収める必要があったためです。 -3.40282e+38 to -1.17549e-38 and 1.17549e-38 to 3.40282e+38
しかし、このとき、simulationを通すと1e-45の出力が得られました。
次に、ブロックパラメーターにて出力の最小値、最大値の設定を行いましたが、 simulation上で警告(エラー)が表示されるだけで、値の補正は行われませんでした。
Data Type Conversionを使用して、singleの取りうる範囲内に出力値を収めたい場合の設定方法を教えてください。

Accepted Answer

Tohru Kikawada
Tohru Kikawada on 21 May 2018
Saturation ブロックを使って明示的に信号範囲を飽和処理してみてはいかがでしょうか。
  3 Comments
Tohru Kikawada
Tohru Kikawada on 22 May 2018
Edited: Tohru Kikawada on 22 May 2018
まず上記提示いただいている正の最小値ですが、IEEE 単精度で正の最小 正規化浮動小数点数 となっています。 MATLABでは realmin コマンドで下記のとおり調べられます。
>> realmin('single')
ans =
single
1.1754944e-38
一方、MATLABでは正規化されていない単精度の浮動小数点数も扱えます。それは下記のように16進数表示で確認してみると正規化されていない(指数部が0)ことが分かります。 single 型の範囲を超えた値が出てきているように見えるのはそのためです。
>> realmin('single') % 正規化されている最小数(指数部が1)
ans =
single
00800000
>> single(1e-45) % 正規化されていない(指数部が0、0bit目に1)
ans =
single
00000001
浮動小数点に関しては こちら も参考にしてみてください。型変換の際、これらの値をどう飽和させるかはユーザー側で管理する必要があります。
Yukiko Fujisawa
Yukiko Fujisawa on 22 May 2018
型変換の際の値の管理はユーザーの責任ということ、理解しました。
回答、解説ありがとうございました。

Sign in to comment.

More Answers (1)

Atsushi Matsumoto
Atsushi Matsumoto on 22 May 2018
Edited: Atsushi Matsumoto on 22 May 2018
Data Type Conversionブロックのブロックパラメータ[最小値]、[最大値]は、出力信号の制限を与えるためのものではありません。データ型のレンジ設定に制約を与えるためのものです。 &nbsp
例えば(出力の)最小値=-128、最大値=127としておいて、int8を設定すると範囲をカバーするので問題ありませんが、uint8を設定するとデータ型のレンジ(0~255)が最小/最大値の範囲を超えてしまうので、エラーを発生して変更を促します。 &nbsp
&nbsp
Data Type Conversionブロックのドキュメント &nbsp
&nbsp
前の回答にあるように、出力信号の振幅範囲を制限するにはSaturationブロックをお使い下さい、
  1 Comment
Yukiko Fujisawa
Yukiko Fujisawa on 22 May 2018
Data Type Conversionブロックの原理を理解しました。 振幅範囲を制限するにはSaturationブロックを使用する必要があることも理解しました。
回答、解説ありがとうございました。

Sign in to comment.

Categories

Find more on 数値型 in Help Center and File Exchange

Products


Release

R2015a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!