Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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 vari-
     able 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)

FreeBSD ports 15.quarterly	  March 4, 2024 	  MAT_VARREADNEXTINFO(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=Mat_VarReadNextInfo&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help