EXAMPLES
This example program opens a MAT file named by the first argument to the
program, and uses
Fn 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 %s,argv[1]);
return EXIT_FAILURE;
}
printf("%-20s %-10s %-10s %-18sn","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(" %-18s,mxclass[matvar->class_type-1]);
Mat_VarFree(matvar);
}
Mat_Close(matfp);
return EXIT_SUCCESS;
}