Reading a large binary file
조회 수: 42 (최근 30일)
이전 댓글 표시
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
채택된 답변
James Tursa
2023년 10월 18일
편집: James Tursa
2023년 10월 18일
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);
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Large Files and Big Data에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!