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
