Accessing struct using C library always NULL

2 Ansichten (letzte 30 Tage)
Beig Serate
Beig Serate am 12 Jan. 2022
Kommentiert: Beig Serate am 13 Jan. 2022
Hi,
I am using the Matlab C interface to extract data out of a .mat file containing a 1x50 struct. I am able to do the following successfully:
  • Pull structure using matGetNextVariableInfo. Also fills the char* with the name, which matches my struct variable
  • Get the correct size of the struct by using mxGetNumberOfElements and mxGetNumberOfFields
  • Get the correct first column name by using mxGetFieldNameByNumber
  • Get the first field using mxGetField
  • Retrieve the correct class name (in my case, a double) from mxGetClassName
After calling mxGetField, I retrieve a non-null pointer to a mxArray, I then try to call mxGetPr on this - but it always ends up with a NULL result. I also tried mxGetData to retrieve a void*, also NULL. I am able to verify that it is not empty by using mxIsEmpty. If I change the row index to one with an empty field, mxIsEmpty returns as expected. It seems like I have everything set up correctly, but nothing I do works for retrieving the actual field data.
Any help is appreciated. Thanks!

Akzeptierte Antwort

James Tursa
James Tursa am 13 Jan. 2022
Bearbeitet: James Tursa am 13 Jan. 2022
Typically, it is best just to post your code so we can see exactly what you are doing, instead of posting a description of your code for what you think it is doing.
That being said, the matGetNextVariableInfo( ) function just gets header information for the variable without getting the actual data of the variable. It is intended for you to quickly see what is there without loading potentially a very large variable. So seeing NULL behind a subsequent mxGetPr( ) or mxGetData( ) call would be expected. If you want to get the variable along with its data, you need to use matGetNextVariable( ) instead.
  1 Kommentar
Beig Serate
Beig Serate am 13 Jan. 2022
Understood about the code - will definitely do that in the future. But like you said, using matGetNextVariableInfo() was my issue. Thank you for the quick reply and help!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Structures finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by