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

FreeBSD Manual Pages

  
 
  

home | help
MAT_VARCREATE(3)       FreeBSD 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, size_t *dims, 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 specifies 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 in-
     stances, the data type may	not match the class type.  For example,	an ar-
     ray 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	mini-
     mum 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 typ-
     ically 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	13.0			March 18, 2012			  FreeBSD 13.0

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_VarCreate&sektion=3&manpath=FreeBSD+12.2-RELEASE+and+Ports>

home | help