首页 > 代码库 > C++读取mat文件 & VS2010 环境配置

C++读取mat文件 & VS2010 环境配置

1.vs2010的配置

    新建一个工程,在属性管理器中选择Debug|Win64->Microsoft.Cpp.Win64.user->VC++目录。设置包含目录为:D:\MATLAB\R2010a\extern\include(我的matlab装在D盘);设置库目录为:D:\MATLAB\R2010a\extern\lib\win32\microsoft。

http://blog.sina.com.cn/s/blog_7f18a96b0100tojj.html

 

2、http://blog.csdn.net/left_la/article/details/8206645

一、工程配置:
1.C/C++->常规->附加包含目录 添加:
MATLAB\R2010b\extern\include
MATLAB\R2010b\extern\include\win64
2.链接器->常规->附加库目录 添加:
MATLAB\R2010b\extern\lib\win64\microsoft
MATLAB\R2010b\extern\lib\win32\microsoft
3.链接器->输入->附加依赖库 添加:
libmat.lib
libmx.lib
libmex.lib
libeng.lib

由于所安装的matlab为64位,要调用其函数,需要将工程转换为X64
4.顶菜单->生成->配置管理器->平台:X64
5.链接器->高级->目标计算机:
MachineX64(/MACHINE:X64)

6.计算机环境变量->path 添加:
E:\DevTools\MATLAB\R2010b\extern\lib\win64\microsoft;
E:\DevTools\MATLAB\R2010b\bin\win64;

二、所用到的基本读取写入mat文件代码示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <mat.h>
 
void main(){
    MATFile *pmatFile = NULL;
    mxArray *pMxArray = NULL;
 
    // 读取.mat文件(例:mat文件名为"initUrban.mat",其中包含"initA")
    double *initA;
 
    pmatFile = matOpen("initUrban.mat","r");
    pMxArray = matGetVariable(pmatFile, "initA");
    initA = (double*) mxGetData(pMxArray);
    M = mxGetM(pMxArray);
    N = mxGetN(pMxArray);
    Matrix<double> A(M,N);
    for (int i=0; i<M; i++)
        for (int j=0; j<N; j++)
            A[i][j] = initA[M*j+i];
 
    matClose(pmatFile);
    mxFree(initA);
 
    // 生成.mat文件
    double *outA = new double[M*N];
    for (int i=0; i<M; i++)
        for (int j=0; j<N; j++)
            outA[M*j+i] = A[i][j];
    pmatFile = matOpen("A.mat","w");
    pMxArray = mxCreateDoubleMatrix(M, N, mxREAL);
    mxSetData(pMxArray, outA);
    matPutVariable(pmatFile, "A", pMxArray);
    matClose(pmatFile);
}