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

FreeBSD Manual Pages

  
 
  

home | help
MAT_VARCREATESTRUCT(3)	    Library Functions Manual	MAT_VARCREATESTRUCT(3)

NAME
       Mat_VarCreateStruct -- Creates a	structure variable.

SYNOPSIS
       #include	<matio.h>

       matvar_t	*
       Mat_VarCreateStruct(const char *name,   int rank,   const size_t	*dims,
	   const char **fields,	unsigned nfields);

DESCRIPTION
       The Mat_VarCreateStruct() function creates a structure  variable	 named
       name that can be	written	to a MAT file.

RETURN VALUES
       If  the	structure  variable was	successfully created, a	pointer	to the
       variable	is returned.  Otherwise	NULL is	returned.  The structure vari-
       able  pointer  should  be  free'd   when	  no   longer	needed	 using
       Mat_VarFree().  The names of the	fields are copied in the function, and
       thus should be released after calling the function if necessary.

EXAMPLES
       This  example  program  opens a MAT file	named by the first argument to
       the program, and	writes a structure named a to the file.

       #include	"matio.h"

       int
       main(int	argc, char **argv)
       {
	   mat_t    *matfp;
	   matvar_t *matvar;
	   matvar_t *field;
	   const char *fields[2] = {"field1", "field2"};
	   double	data1 =	1, data2 = 2;
	   size_t	dims[2]	= {1, 1};

	   matfp = Mat_Open(argv[1], MAT_ACC_RDWR);
	   if (	NULL ==	matfp )	{
	       fprintf(stderr, "Error opening MAT file %s0, argv[1]);
	       return EXIT_FAILURE;
	   }

	   dims[0] = 1;	dims[1]	= 1;
	   matvar = Mat_VarCreateStruct("a", 2,	dims, fields, 2);
	   if (	NULL ==	matvar ) {
	       Mat_Close(matfp);
	       return EXIT_FAILURE;
	   }

	   field = Mat_VarCreate(NULL, MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, &data1,
		       MAT_F_DONT_COPY_DATA);
	   Mat_VarSetStructFieldByName(matvar, "field1", 0, field);

	   field = Mat_VarCreate(NULL, MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, &data2,
		       MAT_F_DONT_COPY_DATA);
	   Mat_VarSetStructFieldByName(matvar, "field2", 0, field);

	   Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_NONE);
	   Mat_VarFree(matvar);

	   Mat_Close(matfp);
	   return EXIT_SUCCESS;
       }

SEE ALSO
       Mat_VarCreate(3), Mat_VarSetStructFieldByName(3)

FreeBSD	Ports 14.quarterly     November	20, 2023	MAT_VARCREATESTRUCT(3)

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

home | help