欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

使用visual studio 2013读取.mat文件

发布时间:2025/3/15 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 使用visual studio 2013读取.mat文件 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

现在有一个T.mat 文件需要在c++中处理然后以.mat 或是.txt形式返回

T.mat中存储了十个cell,每个cell中会有一个不等长的数组

1.以下是相关配置过程:

参考:http://wenku.baidu.com/link?url=3CiA3T6wtaBEUSJnpvmfmvZzaKXop1Ea68HM-s1S02fMZUm5dhYsqrC4tE4JNjbYbvnflEe7ZaRa5oqCQmNGBvmAi67ZujICsjxXKIuEzC

 

VC++ 包含目录 添加 D:\Program Files\MATLAB\R2014a\extern\include\win64;D:\Program Files\MATLAB\R2014a\extern\include;

连接器 常规 附加库目录 D:\Program Files\MATLAB\R2014a\extern\lib\win32\microsoft;D:\Program Files\MATLAB\R2014a\extern\lib\win64\microsoft

链接器 输入 附加依赖项 libmat.lib;libmx.lib;libmex.lib;libeng.lib

配置管理器中活动解决方案平台选择x64

更改环境变量path D:\Program Files\MATLAB\R2014a\extern\lib\win64\microsoft;D:\Program Files\MATLAB\R2014a\bin\win64

2.然后是读入的代码

//read .mat from matlab #include <iostream> #include <mat.h> #include<iomanip> #include <fstream> #include <vector> using std::vector; int main() {MATFile *pmatFile = NULL;mxArray *pMxArray = NULL, *pMxArray_i = NULL;double *pMx_cell_i = NULL;//读入.MATpmatFile = matOpen("D:/Program Files/MATLAB/R2014a/work/mywork/test_for_data/mydata1.mat", "r");//std::cout << pmatFile;pMxArray = matGetVariable(pmatFile, "w");//size_t M = mxGetM(pMxArray);//size_t N = mxGetN(pMxArray);//std::cout << N;int num_of_cell{ (int)mxGetNumberOfElements(pMxArray) };std::cout << "the number of the CELL we have got for the T :" << num_of_cell << std::endl;//int A[10];由于数组 的长度需要事先给定,所以改用vectorvector<int> V_A;//Matrix<double> A(num_of_cell, 1);for (int i{ 0 }; i < num_of_cell; i++){pMxArray_i = mxGetCell(pMxArray, i);int num_of_cell_i = (int)mxGetNumberOfElements(pMxArray_i);std::cout << "the number of the CELL " << i << " we have got for the T :" << num_of_cell_i << std::endl;double sum_i = 0;for (int j{ 0 }; j < num_of_cell_i; j++){pMx_cell_i = mxGetPr(pMxArray_i);std::cout << std::setw(10) << *(pMx_cell_i + j);sum_i = sum_i + *(pMx_cell_i + j);}std::cout << std::endl;std::cout << "sum " << i << " is " << sum_i << std::endl;//A[i] = sum_i; V_A.push_back(sum_i);// }matClose(pmatFile);//mxFree(pMxArray);//mxFree(pMxArray_i);//mxFree(pMx_cell_i);//写到e:/data.TXT中 FILE *p=NULL;//if ((p = fopen("e:\\data.txt", "wt")) != NULL)//for (int i = 0; i<10; i++) // fprintf(p, "%d \n", A[i]); //fclose(p);//FILE *p;if ((p = fopen("e:\\data_V.txt", "wt")) != NULL)for (int i = 0; i<num_of_cell; i++)fprintf(p, "%d \n", V_A.at(i));fclose(p); }

 


后记:这里主要还是验证配置的正确性,只进行了一个加和运算。

修改:使用vector来存储计算结果,可以适应数据的长度改变。

转载于:https://www.cnblogs.com/simayuhe/p/5246157.html

总结

以上是生活随笔为你收集整理的使用visual studio 2013读取.mat文件的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。