table of contents
| MAT_VARCREATESTRUCT(3) | Library Functions Manual | MAT_VARCREATESTRUCT(3) |
NAME¶
Mat_VarCreateStruct —
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,
unsigned nfields);
DESCRIPTION¶
The
Mat_VarCreateStruct()
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.
DEPRECATED¶
This function is deprecated since version 1.5.30. Use Mat_VarCreateStruct2 instead.
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[2] = {"field1", "field2"};
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_VarCreateStruct("a", 2, dims, fields, 2);
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_VarCreateStruct2(3), Mat_VarCreate(3), Mat_VarSetStructFieldByName(3)
| January 5, 2026 | Nixpkgs |