Read .dat file - binary data

3 Ansichten (letzte 30 Tage)
Luca Finazzi
Luca Finazzi am 24 Apr. 2017
Kommentiert: Nikhil Sreekumar am 27 Apr. 2017
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 Kommentare
Luca Finazzi
Luca Finazzi am 25 Apr. 2017
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 am 27 Apr. 2017
Hi Luca,
This file exchange submission might help you with the issue.
Thanks
Nikhil

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Low-Level File I/O finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by