manpagez: man pages & more
man Mat_VarReadNextInfo(3)
Home | html | info | man
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

     Mat_VarRead(3), Mat_VarReadInfo(3), Mat_VarReadNext(3)

macOS 13.6                       March 4, 2024                      macOS 13.6

matio 1.5.27 - Generated Sun Apr 21 06:36:01 CDT 2024
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.