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  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 instances, the data
     type  may	not match the class type.  For example, 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 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  typi-
     cally 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  re-
     turned.  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 15.quarterly	October 26, 2025		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+15.1.quarterly>

home | help