use fread to read a binary file with multiple data sizes
이전 댓글 표시
I'm trying to read a binary data file that has 4 data points that have 8, 8, 16, and 32 bits of information. Is there a way to read this with fread or another function? I don't know how the file was created but the documentation states this is the file format. Thanks
채택된 답변
추가 답변 (1개)
Walter Roberson
2011년 6월 28일
If the file had repeated patterns of the above form, then probably the best way to handle it would be to use memmapfile .
Note in particular Example 5 there:
m = memmapfile('records.dat', ...
'Format', { ...
'int16' [2 2] 'model'; ...
'uint32' [1 1] 'serialno'; ...
'single' [1 3] 'expenses'}, ...
'Repeat', 1000);
That establishes a record with a mixed format.
댓글 수: 2
Jan
2011년 6월 28일
I've tried to read the data sectiopn of C3D files with MEMMAPFILE: e.g. 2000 blocks of alternating 4*100 and 32*9 SINGLEs. Because these blocks needed to be transposed before concatenating, the MEMMAPFILE approach was 5 times slower than pre-allocation + FREAD.
Robert
2011년 6월 29일
카테고리
도움말 센터 및 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!