Accessing struct using C library always NULL
조회 수: 14 (최근 30일)
이전 댓글 표시
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!
댓글 수: 0
채택된 답변
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Structures에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!