Mat_VarReadNextInfo(3) Reads the information for the next variable in a MATLAB MAT file.

SYNOPSIS

Fd #include <matio.h> Ft matvar_t * Fo Mat_VarReadNextInfo Fa mat_t *mat Fc

DESCRIPTION

The Fn 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 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;
}