Read .dat file - binary data

4 visualizaciones (últimos 30 días)
Luca Finazzi
Luca Finazzi el 24 de Abr. de 2017
Comentada: Nikhil Sreekumar el 27 de Abr. de 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 comentarios
Luca Finazzi
Luca Finazzi el 25 de Abr. de 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 el 27 de Abr. de 2017
Hi Luca,
This file exchange submission might help you with the issue.
Thanks
Nikhil

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Low-Level File I/O en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by