Using user defined structure as precision to fread

Above lists all the possible precision value. They are the MATLAB defined data types.
Say the binary file i am reading follows the following repetitive basic structure: floatValue, 4byte, float type doubleValue, 8byte, double type
I define a structure: myStructure = struct('floatValue', single(213.5883), 'doubleValue', 57605.061382);
Now i want to be able to read my binary file as follows: fid = fopen('myBinaryFile.ext'); A = fread(fid,1,*'myStructure'*,'s'); %Read one element data
Finally i can access the data as: A.floatValue or A(1).floatValue A.doubleValue or A(1).doubleValue
Concern is reading in the custom structure format. Above gives a invalid precision error. What way can we read our cutsom structures?

Respuestas (2)

Walter Roberson
Walter Roberson el 25 de Ag. de 2011

2 votos

To read repetitive binary structures, memmapfile() is the appropriate routine.

2 comentarios

Akash
Akash el 5 de Mzo. de 2012
Thanks that worked! :)
gujax
gujax el 4 de Jun. de 2023
I would like to follow up on this...
I am not sure if Matlab's fread is derived from C++'s fread?
C++'s fread or even istream can read an array of structured data (I just learned it from chatGPT). So why Matlab's fread is limited to a fixed type read?

Iniciar sesión para comentar.

Kaustubha Govind
Kaustubha Govind el 25 de Ag. de 2011
There is no precision format to directly read into a structure. You need to read the file into arrays/matrices and then later compile them into a structure. Perhaps TEXTSCAN will be more appropriate for youm because it allows you to use a format string that is composed of several different types - the values are read into a cell array, which can store disparate types.

1 comentario

Akash
Akash el 5 de Mzo. de 2012
Thanks for your reply. Memmapfile solved my problem.

Iniciar sesión para comentar.

Categorías

Preguntada:

el 23 de Ag. de 2011

Comentada:

el 4 de Jun. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by