Scroll to navigation

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 *mat);

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_VarReadNextInfo(3),
April 21, 2011 Debian