本篇记述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 = 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 = 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 similar
47     Mat_VarFree(matVar);
48     Mat_Close(matfp);
49     system("pause");
50     return EXIT_SUCCESS;
51 }
View Code

相关文章: