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 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by