Data Type Conversionの出力データ最大値、最小値設定
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Tohru Kikawada
2018-5-21
Saturation ブロックを使って明示的に信号範囲を飽和処理してみてはいかがでしょうか。
3 个评论
Tohru Kikawada
2018-5-22
编辑:Tohru Kikawada
2018-5-22
>> 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
更多回答(1 个)
Atsushi Matsumoto
2018-5-22
编辑:Atsushi Matsumoto
2018-5-22
Data Type Conversionブロックのブロックパラメータ[最小値]、[最大値]は、出力信号の制限を与えるためのものではありません。データ型のレンジ設定に制約を与えるためのものです。  
例えば(出力の)最小値=-128、最大値=127としておいて、int8を設定すると範囲をカバーするので問題ありませんが、uint8を設定するとデータ型のレンジ(0~255)が最小/最大値の範囲を超えてしまうので、エラーを発生して変更を促します。  
 
Data Type Conversionブロックのドキュメント  
 
前の回答にあるように、出力信号の振幅範囲を制限するにはSaturationブロックをお使い下さい、
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!