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

FreeBSD Manual Pages

  
 
  

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

NAME
     Mat_VarCreateStruct2 -- Creates a structure variable.

SYNOPSIS
     #include <matio.h>

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

DESCRIPTION
     The Mat_VarCreateStruct2() 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 vari-
     able is returned.	Otherwise NULL	is  returned.	The  structure	variable
     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.  The names of the fields has to be
     a NULL-terminated array.

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[3] = {"field1", "field2", NULL};
	 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_VarCreateStruct2("a", 2, dims, fields);
	 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 15.quarterly	 January 5, 2026	 MAT_VARCREATESTRUCT2(3)

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

home | help