| 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
| January 5, 2026 | Linux 6.18.3-arch1-1 |