{"id":19928890,"url":"https://github.com/njannasch/matio-examples","last_synced_at":"2025-05-03T10:31:24.503Z","repository":{"id":128569948,"uuid":"48757640","full_name":"NJannasch/matio-examples","owner":"NJannasch","description":"Examples for MAT File I/O Library (MATIO)","archived":false,"fork":false,"pushed_at":"2019-06-23T10:47:02.000Z","size":20,"stargazers_count":25,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-07T14:21:15.143Z","etag":null,"topics":["cpp","matio"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NJannasch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-12-29T16:55:49.000Z","updated_at":"2024-04-06T11:24:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"e788f29d-2af5-473e-9de9-55fcc03a37db","html_url":"https://github.com/NJannasch/matio-examples","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NJannasch%2Fmatio-examples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NJannasch%2Fmatio-examples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NJannasch%2Fmatio-examples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NJannasch%2Fmatio-examples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NJannasch","download_url":"https://codeload.github.com/NJannasch/matio-examples/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252178795,"owners_count":21707067,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","matio"],"created_at":"2024-11-12T22:40:22.207Z","updated_at":"2025-05-03T10:31:24.477Z","avatar_url":"https://github.com/NJannasch.png","language":null,"readme":"# Examples for MAT File I/O Library (MATIO)\n\n\n### Basics\n\n#### Header\n```cpp\n#include \u003cmatio.h\u003e\n```\n\n#### Create MAT file\n\n```cpp\nconst char *filename = \"myfile.mat\";\nmat_t *matfp = NULL; //matfp contains pointer to MAT file or NULL on failure\nmatfp = Mat_CreateVer(filename, NULL, MAT_FT_MAT5); //or MAT_FT_MAT4 / MAT_FT_MAT73\n//don't forget to close file with Mat_Close(matfp);\n```\n\n#### Create and save variables ([saveVariable.cpp](https://github.com/NJannasch/matio-examples/blob/master/Examples/saveVariable.cpp))\n\n- String\n\n```cpp\nchar* fieldname = \"MyStringVariable\";\nchar* mystring = \"Text\";\nsize_t dim[2] = { 1, sizeof(mystring)/sizeof(mystring[0]) };\nmatvar_t *variable = Mat_VarCreate(fieldname, MAT_C_CHAR, MAT_T_UTF8, 2, dim, mystring, 0);\nMat_VarWrite(matfp, variable, MAT_COMPRESSION_NONE); //or MAT_COMPRESSION_ZLIB\nMat_VarFree(variable);\n```\n\n- Integer\n\n```cpp\nchar* fieldname = \"MyIntegerVariable\";\nint myinteger = 42;\nsize_t dim[2] = { 1, 1 };\nmatvar_t *variable = Mat_VarCreate(fieldname, MAT_C_INT32, MAT_T_INT32, 2, dim, \u0026myinteger, 0);\nMat_VarWrite(matfp, variable, MAT_COMPRESSION_NONE); //or MAT_COMPRESSION_ZLIB\nMat_VarFree(variable);\n```\n\n\n- Double\n\n```cpp\nchar* fieldname = \"MyDoubleVariable\";\ndouble mydouble = 4.2;\nsize_t dim[2] = { 1, 1 };\nmatvar_t *variable = Mat_VarCreate(fieldname, MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dim, \u0026mydouble, 0);\nMat_VarWrite(matfp, variable, MAT_COMPRESSION_NONE); //or MAT_COMPRESSION_ZLIB\nMat_VarFree(variable);\n```\n\n\n- Complex double\n\n```cpp\nchar* fieldname = \"MyComplexDoubleVariable\";\ndouble real = 4.2;\ndouble imag = 1.5;\nmat_complex_split_t mycomplexdouble = {\u0026real, \u0026imag};\nsize_t dim[2]={ 1, 1 };\nmatvar_t *variable = Mat_VarCreate(fieldname, MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dim, \u0026mycomplexdouble, MAT_F_COMPLEX);\nMat_VarWrite(matfp,variable, MAT_COMPRESSION_NONE); //or MAT_COMPRESSION_ZLIB\nMat_VarFree(variable);\n```\n\n\n- Bool\n\n```cpp\nchar* fieldname = \"MyBoolVariable\";\nbool mybool = true;\nsize_t dim[2] = { 1, 1 };\nmatvar_t *variable = Mat_VarCreate(fieldname, MAT_C_INT16, MAT_T_INT16, 2, dim, \u0026mybool, MAT_F_LOGICAL);\nMat_VarWrite(matfp, variable, MAT_COMPRESSION_NONE); //or MAT_COMPRESSION_ZLIB\nMat_VarFree(variable);\n```\n\n#### Create and save arrays ([nDimensionalArray.cpp](https://github.com/NJannasch/matio-examples/blob/master/Examples/nDimensionalArray.cpp))\n\n- 1-D\n\n```cpp\nconst int first = 3; //rows\nint array1d[first]= { 0 };\n\n// fill 1d array\nfor (int i = 0; i \u003c first; i++)\n\tarray1d[i] = (i + 1);\n\n// write\nchar* fieldname1d = \"array1d\";\nsize_t dim1d[1] = { first };\nmatvar_t *variable1d = Mat_VarCreate(fieldname1d, MAT_C_INT32, MAT_T_INT32, 1, dim1d, \u0026array1d, 0); //rank 1\nMat_VarWrite(matfp, variable1d, MAT_COMPRESSION_NONE);\nMat_VarFree(variable1d);\n\n```\n\n- 2-D (Matrix)\n\n```cpp\nconst int second = 4; //columns\nint array2d[first][second] = { 0 };\n\n// fill 2d array\nfor (int i = 0; i \u003c first; i++)\n\tfor (int j = 0; j \u003c second; j++)\n\t\tarray2d[i][j] = (i + 1) * (j + 1);\n\n// write\nchar* fieldname2d = \"array2d\";\nsize_t dim2d[2] = { first, second };\nmatvar_t *variable2d = Mat_VarCreate(fieldname2d, MAT_C_INT32, MAT_T_INT32, 2, dim2d, \u0026array2d, 0); //rank 2\nMat_VarWrite(matfp, variable2d, MAT_COMPRESSION_NONE);\nMat_VarFree(variable2d);\n```\n\n- 3-D\n\n```cpp\nconst int third = 5;\nint array3d[first][second][third] = { 0 };\n\n// fill 3d array\nfor (int i = 0; i \u003c first; i++)\n\tfor (int j = 0; j \u003c second; j++)\n\t\tfor (int k = 0; k \u003c third; k++)\n\t\t\tarray3d[i][j][k] = (i + 1) * (j + 1) * (k + 1);\n\n// write\nchar* fieldname3d = \"array3d\";\nsize_t dim3d[3] = { first, second, third };\nmatvar_t *variable3d = Mat_VarCreate(fieldname3d, MAT_C_INT32, MAT_T_INT32, 3, dim3d, \u0026array3d, 0); //rank 3\nMat_VarWrite(matfp, variable3d, MAT_COMPRESSION_NONE);\nMat_VarFree(variable3d);\n```\n\n- N-D\n\n```cpp\n// for N dimensional array create:\nint arrayNd[first][second][third][...][N] = { 0 };\n\n// fill Nd array\n// ...\n\n// write\nchar* fieldnameNd = \"arrayNd\";\nsize_t dimNd[N] = {first, second, third, ..., N};\nmatvar_t *variableNd = Mat_VarCreate(fieldnameNd, MAT_C_INT32, MAT_T_INT32, N, dimNd, \u0026arrayNd, 0); //rank N\nMat_VarWrite(matfp, variableNd, MAT_COMPRESSION_NONE);\nMat_VarFree(variableNd);\n```\n\n#### Create and save structs ([saveStruct.cpp](https://github.com/NJannasch/matio-examples/blob/master/Examples/saveStruct.cpp))\n\n- 1 x 1 struct\n\n```cpp\n//Create a 1 x 1 struct 'Data' with fields: name, unit, value\nchar *structname = \"Data\";\nconst char *fieldnames[3] = { \"name\",\"unit\",\"value\" };\nsize_t structdim[2] = { 1, 1 }; // create 1 x 1 struct\n//main struct: Data with 3 fields\nmatvar_t* matstruct = Mat_VarCreateStruct(structname, 2, structdim, fieldnames, 3); \nchar* mystring = \"Speed\";\nsize_t dim[2] = { 1, 5 }; //string dimension\nmatvar_t *variable = Mat_VarCreate(fieldnames[0], MAT_C_CHAR, MAT_T_UTF8, 2, dim, mystring, 0);\nMat_VarSetStructFieldByName(matstruct, fieldnames[0], 0, variable); //insert in Data.name\nMat_VarWrite(matfp, matstruct, MAT_COMPRESSION_NONE);\nMat_VarFree(matstruct);\n```\n\n- 1 x n struct\n\n```cpp\n//Create a 1 x n struct 'Data' with fields: name, unit, value\nchar *structname = \"Data\";\nconst char *fieldnames[3] = { \"name\",\"unit\",\"value\" };\nsize_t structdim[2] = { 1, n }; // create 1 x n struct\n//main struct: Data with 3 fields\nmatvar_t* matstruct = Mat_VarCreateStruct(structname, 2, structdim, fieldnames, 3); \nchar* mystring = \"Speed\";\nsize_t dim[2] = { 1, 5 }; //string dimension\nmatvar_t *variable = Mat_VarCreate(fieldnames[0], MAT_C_CHAR, MAT_T_UTF8, 2, dim, mystring, 0);\nMat_VarSetStructFieldByName(matstruct, fieldnames[0], p, variable); //insert Data(p).name (1 \u003c= p \u003c= n)\nMat_VarWrite(matfp, matstruct, MAT_COMPRESSION_NONE);\nMat_VarFree(matstruct);\n```\n\n- nested struct\n\n```cpp\nchar *structname = \"Test\";\nconst char *fieldnames[1] = { \"Data\"};\nsize_t structdim0[2] = { 1, p }; // create 1 x p struct\nmatvar_t* matstruct0 = Mat_VarCreateStruct(structname, 2, structdim0, fieldnames, 1); //main struct: Test\nchar* mystring0 = \"Data\";\nconst char *Datafieldnames[3] = { \"name\", \"unit\", \"value\" };\nsize_t structdim1[2] = { 1, 1 };\nmatvar_t* matstruct1 = Mat_VarCreateStruct(mystring0, 2, structdim1, Datafieldnames, 3);\n//Set Test(p).Data (1 \u003c= p \u003c= n)\nMat_VarSetStructFieldByName(matstruct0, fieldnames[0], p, matstruct1);\nMat_VarWrite(matfp, matstruct0, MAT_COMPRESSION_NONE);\nMat_VarFree(matstruct0);\n```\n\n----------\n\n\n\u003e **About matio:**\n\u003e \n\u003e matio is an open-source library for reading and writing MATLAB MAT files. \n\u003e \n\u003e Further information on http://sourceforge.net/projects/matio/ or on https://github.com/tbeu/matio\n\u003e \n\u003e - For file compression please compile matio with zlib\n\u003e [http://zlib.net](http://zlib.net)\n\u003e \n\u003e - For file version 7.3 please compile matio with HDF-5\n\u003e [https://www.hdfgroup.org/HDF5/release/obtain5.html](https://www.hdfgroup.org/HDF5/release/obtain5.html)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjannasch%2Fmatio-examples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnjannasch%2Fmatio-examples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnjannasch%2Fmatio-examples/lists"}