table of contents
| MAT_VARREADNEXTINFO(3) | Library Functions Manual | MAT_VARREADNEXTINFO(3) |
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 <math.h>
#include <stdlib.h>
#include <stdio.h>
#include "matio.h"
static char *mxclass[17] = {"cell", "struct", "object", "char", "sparse",
"double", "single", "int8", "uint8", "int16",
"uint16", "int32", "uint32", "int64", "uint64",
"function", "opaque"
};
int
main(int argc, char **argv)
{
mat_t *matfp;
matvar_t *matvar;
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("%-32s%-16s%-16s%-16s0, "Name", "Size", "Bytes", "Class");
while ( NULL != (matvar = Mat_VarReadNextInfo(matfp)) ) {
printf("%-32s", matvar->name);
if ( matvar->rank > 0 ) {
int cnt;
int i;
cnt = snprintf(size, sizeof(size), "%zd", matvar->dims[0]);
for ( i = 1; i < matvar->rank; i++ ) {
if ( ceil(log10((double)matvar->dims[i])) + 1 < 32 ) {
cnt += snprintf(size + cnt, sizeof(size) - cnt,
"x%zd", matvar->dims[i]);
if ( cnt >= sizeof(size) ) {
break;
}
}
}
printf("%-16s", size);
} else {
printf(" ");
}
snprintf(size, sizeof(size), "%zd", Mat_VarGetSize(matvar));
printf("%-16s", size);
printf("%-16s0, mxclass[matvar->class_type - 1]);
Mat_VarFree(matvar);
}
Mat_Close(matfp);
return EXIT_SUCCESS;
}
SEE ALSO¶
| March 4, 2024 | Debian |