Reading a binary data file
Mostrar comentarios más antiguos
Hello,
I am trying to import and read a binary data file of the following format in MATLAB. I need to read in all the data, however at this point im just trying to read in the first 4 char, but i keep getting a blank array. Nothing seems to be working and I have been stuck for days.
Thanks in advance for your help!

fid = fopen('file.dat','r');
if fid <0
error('error opening file %s\n file.dat')
end
Program_label = fread(fid,[1 4],*char)
fclose(fid);
m = memmapfile('GSS1_t023_is_phcorr_ideal.dat');
m.Format
Respuestas (1)
Jan
el 7 de Jun. de 2019
fid = fopen('file.dat','r');
if fid <0
error('error opening file %s\n file.dat')
end
Program_label = fread(fid, [1 4], '*char'); % With quotes
Program_version = fread(fid, 1, 'single');
Type_label = fread(fid, [1 4], '*char');
nCols = fread(fid, 1, 'uint32');
nRows = fread(fid, 1, 'uint32');
...
fclose(fid);
8 comentarios
KatherineS
el 8 de Jun. de 2019
Please explain exactly, what you are doing. How do you obatin the "[]"? "The output for the values shows..." is not clear enough to understand this. Program_label is read as char vector, such that it is unlikely, that the empty matrix [] is shown anywhere. Therefore I assume, that your method to display the contents of the variables is flawed, or that the file really contains '[] ' as first 4 characters.
KatherineS
el 8 de Jun. de 2019
Walter Roberson
el 8 de Jun. de 2019
Please show us
double(Program_label)
I suspect that it contains unprintable characters, such as binary 0.
the first characters in the file should be imageLayerStack (abcdef1 v 1.14)
That disagrees with the layout you provided, which says that there should be 4 characters followed by a single precision float
Jan
el 8 de Jun. de 2019
Show us:
fid = fopen('file.dat','r');
if fid <0
error('error opening file %s\n file.dat')
end
data = fread(fid, [1 16], '*uint8')
fclose(fid)
KatherineS
el 8 de Jun. de 2019
Walter Roberson
el 8 de Jun. de 2019
The file is empty.
Walter Roberson
el 8 de Jun. de 2019
dinfo = dir('file.dat')
and look at the bytes information. I think it will show 0
Categorías
Más información sobre Large Files and Big Data en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

