Fixed-Poin​tDesignerを​使用中の警告発生原因​について

1 view (last 30 days)
Yasuhiro Wakatsuki
Yasuhiro Wakatsuki on 18 Apr 2019
Answered: Yasuhiro Wakatsuki on 16 May 2019
Fixed-PointDesignerを使用中の警告について、
Constantブロックの設定を [Fixedt(1,32,16)] に設定し、ワークスペースで設定した値(0.8900)を出力しようとすると、桁落ちの警告が発生します。
ブロックの設定を上記の値 としていますのて、桁落ちせずに表すことができる値だと考えますが、警告が発生する原因をお教えください。
MATLAB バージョン: 8.4.0.150421 (R2014b)
Fixed-PointDesigner

Accepted Answer

Shoumei
Shoumei on 19 Apr 2019
0.89をfixdt(1, 32, 16)で定義すると0.8899993896...となり、打切り誤差が発生しています。
MATLABのデフォルト設定でのコマンドウィンドウの「表示」は小数点以下下4桁までとなっています。これを変更するにはformatを使います。デフォルトはformat shortです。
また、定数の固定小数点化における打切り誤差やオーバーフローの確認は fi コマンドを使うとわかりやすいです。
こちらMATLABで実行してみて下さい。
>> A = fi(0.89, 1, 32, 16)
A =
0.8900
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 32
FractionLength: 16
>> format long
>> A
A =
0.889999389648438
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 32
FractionLength: 16
ちなみに、Simulinkのブロックパラメータに直接 fi(0.89, 1, 32, 16) と入れておくと、固定小数点データがパラメータ定義されるので、桁落ちの警告が発生することはありません。

More Answers (1)

Yasuhiro Wakatsuki
Yasuhiro Wakatsuki on 16 May 2019
ご回答ありがとうございました。

Community Treasure Hunt

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

Start Hunting!