Provided by: libmatio-doc_1.5.29-1_all bug

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)

Debian                                          October 26, 2025                                MAT_VARCREATE(3)