フィルターのクリア

Is there a way to read 16bit float(mantissa 8bit)bin file?

5 ビュー (過去 30 日間)
Won Geun Shin
Won Geun Shin 2022 年 9 月 2 日
編集済み: James Tursa 2022 年 9 月 7 日
I've found a function CustomFloat but I can't find a way to read the file...
it goes like this
00 00 07 00 F8 FF FD FF 01 00 01 00 01 00 FF FF
  8 件のコメント
Won Geun Shin
Won Geun Shin 2022 年 9 月 7 日
so I guess I can use bin2num function to covert that..
Thanks a lot
James Tursa
James Tursa 2022 年 9 月 7 日
編集済み: James Tursa 2022 年 9 月 7 日
@Walter Roberson Would also need to know whether the significand is normalized to 1.0 binary or 0.1 binary. This ties in with the exponent bias, of course.

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

採用された回答

Walter Roberson
Walter Roberson 2022 年 9 月 7 日
str = "00 00 07 00 F8 FF FD FF 01 00 01 00 01 00 FF FF 46 C0 B9 40"
str = "00 00 07 00 F8 FF FD FF 01 00 01 00 01 00 FF FF 46 C0 B9 40"
A = sscanf(str, "%2x", [1 inf]);
if mod(numel(A), 2) == 1; A(end+1) = 0; end %pad if odd length
MSB = A(1:2:end);
mask = MSB >= 128;
MSB(mask) = MSB(mask) - 256;
LSB = A(2:2:end);
out = MSB + LSB/256;
format long g
out.'
ans = 10×1
0 7 -7.00390625 -2.00390625 1 1 1 -0.00390625 70.75 -70.75

その他の回答 (1 件)

Chunru
Chunru 2022 年 9 月 5 日
str = "00 00 07 00 F8 FF FD FF 01 00 01 00 01 00 FF FF"
str = "00 00 07 00 F8 FF FD FF 01 00 01 00 01 00 FF FF"
a = sscanf(str, "%s%s", inf);
n = floor(length(a)/4)
n = 8
afi = fi(0, 1, 16, 7); % signed, 16-bit word, 7-bit fraction
for i=1:n
h = a((i-1)*4 + (1:4)); % the hex from data input
afi.hex = h; % assign the hex to fi
d = afi.double; % convert to double
fprintf("%s : %f\n", afi.hex, afi.double)
end
0000 : 0.000000 0700 : 14.000000 f8ff : -14.007812 fdff : -4.007812 0100 : 2.000000 0100 : 2.000000 0100 : 2.000000 ffff : -0.007812

カテゴリ

Help Center および File ExchangeDigital Filter Analysis についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by