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

FreeBSD Manual Pages

  
 
  

home | help
MAT_VARREADNEXTINFO(3)	 BSD 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 re-
     turned.

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),

BSD				April 21, 2011				   BSD

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | SEE ALSO

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

home | help