Reading a large binary file
40 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Dominik Rhiem
el 18 de Oct. de 2023
Comentada: Dominik Rhiem
el 19 de Oct. de 2023
I want to load a 8 GB binary data file into Matlab. My computer has 24 GB of RAM. It runs out of memory, despite me closing literally everything besides Matlab, and I don't understand why. The file should not take more than its size, right?
Code for loading is simply:
fd = fopen(['data.bin'], 'r');
data = fread(fd, 'int16');
fclose(fd);
0 comentarios
Respuesta aceptada
James Tursa
el 18 de Oct. de 2023
Editada: James Tursa
el 18 de Oct. de 2023
Try
data = fread(fd, '*int16');
When you use 'int16' for the type to read, MATLAB reads as int16 and then converts to double (four times the memory). When you use '*int16', MATLAB keeps the type as int16. E.g.,
% Create a small sample file
fid = fopen('junk.bin','wb');
fwrite(fid,int16(4),'int16');
fclose(fid);
% read it with 'int16'
fid = fopen('junk.bin','rb');
x = fread(fid,'int16')
class(x) % double, not what you wanted
% read it with '*int16'
frewind(fid);
x = fread(fid,'*int16')
class(x) % int16, this is what you wanted
fclose(fid);
Más respuestas (0)
Ver también
Categorías
Más información sobre Large Files and Big Data 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!