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

macOS 15.7                     October 26, 2025                     macOS 15.7

matio 1.5.29 - Generated Tue Nov 11 07:24:02 CST 2025
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.