Mat_VarCreateStruct (3) - Linux Manuals

Mat_VarCreateStruct: Creates a structure variable.

NAME

Mat_VarCreateStruct - Creates a structure variable.

SYNOPSIS

Fd #include <matio.h> Ft matvar_t * Fo Mat_VarCreateStruct Fa const char *name Fa int rank Fa size_t *dims Fa const char **fields Fa unsigned nfields Fc

DESCRIPTION

The Fn Mat_VarCreateStruct function creates a structure variable named Fa 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_VarFree3 . The names of the fields are copied in the function, and thus should be released after calling the function if necessary.

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 %s,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_VarCreate3, Mat_VarSetStructFieldByName3