MAT_VARCREATESTRUCT(3)

NAME
Mat_VarCreateStruct - Creates a structure variable.

SYNOPSIS
#include <matio.h>
matvar_t *
Mat_VarCreateStruct(const char *name, int rank, size_t *dims, const char **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(3) . 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_VarCreate(3), Mat_VarSetStructFieldByName(3)