Data Type Conversionの出力データ最大値、最小値設定
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Yukiko Fujisawa
am 21 Mai 2018
Kommentiert: Yukiko Fujisawa
am 22 Mai 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の取りうる範囲内に出力値を収めたい場合の設定方法を教えてください。
0 Kommentare
Akzeptierte Antwort
Tohru Kikawada
am 21 Mai 2018
Saturation ブロックを使って明示的に信号範囲を飽和処理してみてはいかがでしょうか。
3 Kommentare
Tohru Kikawada
am 22 Mai 2018
Bearbeitet: Tohru Kikawada
am 22 Mai 2018
>> 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
Weitere Antworten (1)
Atsushi Matsumoto
am 22 Mai 2018
Bearbeitet: Atsushi Matsumoto
am 22 Mai 2018
Data Type Conversionブロックのブロックパラメータ[最小値]、[最大値]は、出力信号の制限を与えるためのものではありません。データ型のレンジ設定に制約を与えるためのものです。  
例えば(出力の)最小値=-128、最大値=127としておいて、int8を設定すると範囲をカバーするので問題ありませんが、uint8を設定するとデータ型のレンジ(0~255)が最小/最大値の範囲を超えてしまうので、エラーを発生して変更を促します。  
 
Data Type Conversionブロックのドキュメント  
 
前の回答にあるように、出力信号の振幅範囲を制限するにはSaturationブロックをお使い下さい、
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!