Accessing struct using C library always NULL

1 回表示 (過去 30 日間)
Beig Serate
Beig Serate 2022 年 1 月 12 日
コメント済み: Beig Serate 2022 年 1 月 13 日
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!

採用された回答

James Tursa
James Tursa 2022 年 1 月 13 日
編集済み: James Tursa 2022 年 1 月 13 日
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 件のコメント
Beig Serate
Beig Serate 2022 年 1 月 13 日
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!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

タグ

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by