Using user defined structure as precision to fread

5 vues (au cours des 30 derniers jours)
Akash
Akash le 23 Août 2011
Commenté : gujax le 4 Juin 2023
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?

Réponses (2)

Walter Roberson
Walter Roberson le 25 Août 2011
To read repetitive binary structures, memmapfile() is the appropriate routine.
  2 commentaires
Akash
Akash le 5 Mar 2012
Thanks that worked! :)
gujax
gujax le 4 Juin 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?

Connectez-vous pour commenter.


Kaustubha Govind
Kaustubha Govind le 25 Août 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 commentaire
Akash
Akash le 5 Mar 2012
Thanks for your reply. Memmapfile solved my problem.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Low-Level File I/O dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by