首页 > 代码库 > c/c++中读取和写入mat文件 --- MAT File I/O Library(二)
c/c++中读取和写入mat文件 --- MAT File I/O Library(二)
本篇记述c/c++中读取mat文件示例
测试数据matioTest.zip下载地址:
http://pan.baidu.com/s/1sjPkMsd
1. 读取matioTest.zip中s.mat文件,数据为普通matrix
1 #include <iostream> 2 #include <cassert> 3 #include <matio.h> 4 5 6 int main() 7 { 8 mat_t *matfp; 9 const char* matFilePath = "testRes\\s.mat";10 matfp = Mat_Open(matFilePath, MAT_ACC_RDONLY);11 if (NULL == matfp) {12 fprintf(stderr, "Error opening MAT file %s\n", matFilePath);13 return EXIT_FAILURE;14 }15 matvar_t* matVar = NULL;16 // read data ‘x‘17 matVar = Mat_VarRead(matfp, "x");18 if (matVar) {19 assert(matVar->data_type == MAT_T_DOUBLE);20 size_t xSize = matVar->nbytes / matVar->data_size;21 const double* xData = http://www.mamicode.com/static_cast<const double*>(matVar->data);22 for (int i = 0; i < xSize; ++i) {23 std::cout << xData[i] << " ";24 }25 std::cout << std::endl;26 for (int i = 0; i < matVar->rank; ++i) {27 std::cout << matVar->dims[i] << " ";28 }29 std::cout << std::endl;30 }31 // read data ‘y‘32 matVar = Mat_VarRead(matfp, "y");33 if (matVar) {34 assert(matVar->data_type == MAT_T_DOUBLE);35 size_t ySize = matVar->nbytes / matVar->data_size;36 const double* yData = http://www.mamicode.com/static_cast<const double*>(matVar->data);37 for (int i = 0; i < ySize; ++i) {38 std::cout << yData[i] << " ";39 }40 std::cout << std::endl;41 for (int i = 0; i < matVar->rank; ++i) {42 std::cout << matVar->dims[i] << " ";43 }44 std::cout << std::endl;45 }46 // read ‘minX‘ and ‘step‘ is similar47 Mat_VarFree(matVar);48 Mat_Close(matfp);49 system("pause");50 return EXIT_SUCCESS;51 }
2. 读取matioTest.zip中image_0001.mat文件,数据为struct
1 #include <iostream> 2 #include <cassert> 3 #include <matio.h> 4 5 int main() 6 { 7 mat_t *matfp; 8 const char* matFilePath = "testRes\\image_0001.mat"; 9 matfp = Mat_Open(matFilePath, MAT_ACC_RDONLY);10 if (NULL == matfp) {11 fprintf(stderr, "Error opening MAT file %s\n", matFilePath);12 return EXIT_FAILURE;13 }14 matvar_t *feaSetStruct = NULL, *feaArr = NULL;15 feaSetStruct = Mat_VarRead(matfp, "feaSet");16 if (feaSetStruct) {17 assert(MAT_T_STRUCT == feaSetStruct->data_type);18 feaArr = Mat_VarGetStructFieldByName(feaSetStruct, "feaArr", 0);19 if (feaArr) {20 assert(MAT_T_DOUBLE == feaArr->data_type);21 size_t Size = feaArr->nbytes / feaArr->data_size;22 const double* Data = http://www.mamicode.com/static_cast<const double*>(feaArr->data);23 // print Data or copy to other memory container24 }25 }26 Mat_VarFree(feaSetStruct);27 system("pause");28 return EXIT_SUCCESS;29 }
参考资料:
http://sourceforge.net/p/matio/discussion/609377/thread/b703ce7a/
http://sourceforge.net/p/matio/discussion/609376/thread/9df1158c/?limit=50#1cac/10aa
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。