manpagez: man pages & more
man Mat_VarCreateStruct2(3)
Home | html | info | man
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
     variable 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)

macOS 15.7                      January 5, 2026                     macOS 15.7

matio 1.5.30 - Generated Wed Jan 7 07:44:25 CST 2026
© manpagez.com 2000-2026
Individual documents may contain additional copyright information.