フィルターのクリア

How to translate 32-bit number to float number

2 ビュー (過去 30 日間)
wenlong
wenlong 2016 年 7 月 28 日
コメント済み: wenlong 2016 年 8 月 1 日
The acquired data is expressed as '6D61803F', this may be a little-endian. I translated it to '3F80616D', then I got the float number 1.002973, this was the real data!
Now I used
q = quantizer(q);
hex2num(q, '6D61803F') or hex2num(q, '3F80616D')
Both of those did not get the real one!
What's the problem?
Thanks
  3 件のコメント
wenlong
wenlong 2016 年 7 月 29 日
編集済み: Walter Roberson 2016 年 7 月 29 日
q =
DataMode = fixed
RoundMode = floor
OverflowMode = saturate
Format = [16 15]
Sorry about q = quantizer(q); it should be q = quantizer
wenlong
wenlong 2016 年 8 月 1 日
Thanks Walter!

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2016 年 7 月 29 日
>> q = quantizer; q.quantize(1.002973)
Warning: 1 overflow(s) occurred in the fi quantize operation.
> In embedded.quantizer/quantize (line 77)
ans =
0.999969482421875
You are exceeding the range of the quantizer.
>> q.numeric2hex(1.002973)
ans =
7fff
You are providing more hex digits than fit into the quantizer.
A [16 15] quantizer is a total of 16 bits long.
I would suggest that you need
q = quantizer('mode', 'single');
hex2num(q, '3F80616D')
ans =
1.00297319889069

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by