Provided by: libmatio-doc_1.5.11-1_all
NAME
Mat_VarReadNextInfo — Reads the information for the next variable in a MATLAB MAT file.
SYNOPSIS
#include <matio.h> matvar_t * Mat_VarReadNextInfo(mat_t *matfp);
DESCRIPTION
The Mat_VarReadNextInfo() function reads the information for the next variable stored in the open MAT file.
RETURN VALUES
If there is another variable in the MAT file and is read successfully, a pointer to the MATLAB variable structure is returned. If there are no more variables, or there was an error reading the variable, NULL is returned.
EXAMPLES
This example program opens a MAT file named by the first argument to the program, and uses Mat_VarReadNextInfo() to read the information about each variable in the file. For each variable read, the name, size, and class are printed in a format similar to the MATLAB whos command. #include <stdlib.h> #include <stdio.h> #include "matio.h" static char *mxclass[16] = {"cell", "struct", "object","char","sparse", "double","single","int8", "uint8","int16","uint16", "int32","uint32","int64","uint64","function" }; int main(int argc,char **argv) { mat_t *matfp; matvar_t *matvar; size_t nbytes; int i; char size[32] = {' ',}; matfp = Mat_Open(argv[1],MAT_ACC_RDONLY); if ( NULL == matfp ) { fprintf(stderr,"Error opening MAT file %s0,argv[1]); return EXIT_FAILURE; } printf("%-20s %-10s %-10s %-18s0,"Name","Size","Bytes", "Class"); while ( NULL != (matvar = Mat_VarReadNextInfo(matfp)) ) { printf("%-20s", matvar->name); if ( matvar->rank > 0 ) { int cnt = 0; printf("%8d", matvar->dims[0]); for ( i = 1; i < matvar->rank; i++ ) { if ( ceil(log10(matvar->dims[i]))+1 < 32 ) cnt += sprintf(size+cnt,"x%d", matvar->dims[i]); } printf("%-10s",size); } else { printf(" "); } printf(" %-18s0,mxclass[matvar->class_type-1]); Mat_VarFree(matvar); } Mat_Close(matfp); return EXIT_SUCCESS; }
SEE ALSO
Mat_VarRead(3), Mat_VarReadInfo(3), Mat_VarReadNext(3)