Read .dat file - binary data

3 次查看(过去 30 天)
Luca Finazzi
Luca Finazzi 2017-4-24
Dear all,
I'm getting trouble reading a dat file containing binary datas. The .dat files look like this:
0000110001000001
0001100001100100
0010010001001111
0010111111100100
0011101100001000
The datas are 16 bit 2'complement signed fractionary (fract part is 15 bits). I'm not able to find a way to get a right interpretation of the data. Is there a way to to that?
Thanks a lot,
Luca.
  2 个评论
Luca Finazzi
Luca Finazzi 2017-4-25
I found a way to solve the issue. Probably it isn't the best way to do that, but I post the code, hope will be helpfull
function [out] = fix2dec(input, word_len, fract_len, sign);
% convert a string rapresentation of datas into a vector of decimal values
% input : string
% word_len, fract_len : integer
% sign : boolean (1 signed, 0 unsigned)
%range controls
if ( sign ~= 0 && sign ~= 1 )
error('Sign out of range: 1 signed 0 unsigned');
end
M = zeros(ceil(length(input)/(word_len+2)),word_len+2);
out = zeros(1,ceil(length(input)/(word_len+2)));
for k = 1:1:ceil(length(input)/(word_len+2))-1
for n = 1:1:word_len+2
M(k,n) = input(n+((word_len+2)*(k-1)));
if (n<word_len+1 && n>1)
out(k) = out(k)+(M(k,n)-'0')*2^(word_len-fract_len-n);
end
end
if(sign == 1 && M(k,1) == '1')
out(k) = -2^(word_len-1-fract_len)+out(k);
end
end
end
Nikhil Sreekumar
Nikhil Sreekumar 2017-4-27
Hi Luca,
This file exchange submission might help you with the issue.
Thanks
Nikhil

请先登录,再进行评论。

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Low-Level File I/O 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by