Skipping bytes in binary file

I have a binary file with the following values. The first 4 are each 2 bytes and double precision. The following are pairs of values of double precision. The bytes are unknown for the pair that follows. How can I use fread to skip the first 4 values (8 bytes) and extract the pairs?
1
2
3
4
1 2 4
2 2 5
4 4 4

2 Comments

"The first 4 are each 2 bytes and double precision." - Double precision means 8 bytes per value.
"The following are pairs of values of double precision." - Which pairs? I see triples.
Oh sorry. The following are triples and I am trying to extract those.

Sign in to comment.

 Accepted Answer

You can just fread the appropriate number of bytes (i.e., the amount you want to skip). For example:
% read 4 double-precision numbers (32 bytes), and don't store the result
fread(fid,4,'double');
Or you can use fseek to move the file position indicator forward by the appropriate amount:
% move 32 bytes forward, effectively skipping those bytes
fseek(fid,32,'cof')
The next fread call reads from where fseek placed the file position indicator.

2 Comments

Thank you. I am still not able to extract those triples.
triples = fread(fid, [3 NUMBER_OF_TRIPLES], 'uint8=>double') .';
Use inf for NUMBER_OF_TRIPLES if you want to read to end of file.
Each row of triples will be 3 entries, converted to double precision already -- ready for you to do calculations such as
triples(:,2) * 2^16 + triples(:,1) * 2^8 + triples(:,3)
or as appropriate depending what byte order is used for the triples.

Sign in to comment.

More Answers (0)

Products

Asked:

on 29 Dec 2022

Commented:

on 30 Dec 2022

Community Treasure Hunt

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

Start Hunting!