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

FreeBSD Manual Pages

  
 
  

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

NAME
       Mat_VarCreate --	Creates	a MAT variable structure.

SYNOPSIS
       #include	<matio.h>

       matvar_t	*
       Mat_VarCreate(const char	*name,		enum matio_classes class_type,
	   enum	matio_types data_type,	    int	rank,	   const size_t	*dims,
	   const void *data, int opt);

DESCRIPTION
       The  Mat_VarCreate()  function  creates	a MAT structure	variable named
       name that can be	written	to a MAT file.	The class_type argument	speci-
       fies the	class of the variable, and the	data_type  argument  specifies
       the  type of the	data.  For example, a double-precision class would use
       MAT_C_DOUBLE for	the class type and MAT_T_DOUBLE	for the	data type.  In
       some instances, the data	type may not match the class type.  For	 exam-
       ple,  an	array of integers can be written in the	double-precision class
       by using	MAT_T_INT32 for	data_type.

       The rank	argument specifies how many dimensions the data	has.  The min-
       imum rank is 2.	The number of elements in each dimension is  specified
       in the array dims.

       The  data  argument  is a pointer to the	variable data.	The pointer is
       typically a pointer to a	numeric	array (e.g. double, float, int,	 etc.)
       for real	variables.  For	complex	variables, the pointer is a pointer to
       a mat_complex_split_t which contains pointers to	the real and imaginary
       data  as	 fields	 of  the structure.  For sparse	variables, the pointer
       should be a mat_sparse_t	*.

RETURN VALUES
       If the variable was successfully	created, a pointer to the variable  is
       returned.   Otherwise  NULL is returned.	 The variable should be	free'd
       when no longer needed using Mat_VarFree().

EXAMPLES
       The example program below creates a MAT file named test.mat, and	writes
       two real	numeric	variables x and	y and a	 complex  variable  z  to  the
       file.

       #include	<stdlib.h>
       #include	<stdio.h>
       #include	"matio.h"

       int
       main(int	argc,char **argv)
       {
	   mat_t    *matfp;
	   matvar_t *matvar;
	   size_t    dims[2] = {10,1};
	   double    x[10] = { 1, 2, 3,	4, 5, 6, 7, 8, 9,10},
		     y[10] = {11,12,13,14,15,16,17,18,19,20};
	   struct mat_complex_split_t z	= {x, y};

	   matfp = Mat_CreateVer("test.mat", NULL, MAT_FT_DEFAULT);
	   if (	NULL ==	matfp )	{
	       fprintf(stderr, "Error creating MAT file
	       return EXIT_FAILURE;
	   }

	   matvar = Mat_VarCreate("x", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, x, 0);
	   if (	NULL ==	matvar ) {
	       fprintf(stderr, "Error creating variable	for 'x'0);
	   } else {
	       Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_NONE);
	       Mat_VarFree(matvar);
	   }

	   matvar = Mat_VarCreate("y", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, y, 0);
	   if (	NULL ==	matvar ) {
	       fprintf(stderr, "Error creating variable	for 'y'0);
	   } else {
	       Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_NONE);
	       Mat_VarFree(matvar);
	   }

	   matvar = Mat_VarCreate("z", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, &z,
			MAT_F_COMPLEX);
	   if (	NULL ==	matvar ) {
	       fprintf(stderr, "Error creating variable	for 'z'0);
	   } else {
	       Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_NONE);
	       Mat_VarFree(matvar);
	   }

	   Mat_Close(matfp);
	   return EXIT_SUCCESS;
       }

SEE ALSO
       Mat_VarCreateStruct(3), Mat_VarFree(3), Mat_VarWrite(3)

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

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

home | help