VS2010 C++读写.mat格式文件

运行环境:Win10(64位)+VS2010(64位)旗舰版+Matlab R2012b(64位)


一.环境配置
1.计算机环境变量配置
在path中添加

X:\XXX\MATLAB\R2012b\extern\lib\win64\microsoft;
X:\XXX\MATLAB\R2012b\extern\lib\win64

2.工程变量配置
右键工程名–>属性
(1).C/C++–>常规–>附加包含目录 添加:

X:\XXX\MATLAB\R2012b\extern\include
X:\XXX\MATLAB\R2012b\extern\include\win64

(2).链接器–>常规–>附加库目录 添加:

X:\XXX\MATLAB\R2012b\extern\lib\win64\microsoft
X:\XXX\MATLAB\R2012b\extern\lib\win32\microsoft

(3).链接器–>输入–>附加依赖库 添加:

libmat.lib libmx.lib libmex.lib libeng.lib

(4).配置管理器–>新建活动解决方案平台–>命名X64
打开配置管理


新建活动解决方案平台


命名X64


二、新建工程和代码实现
1.新建–>项目–>Win32控制台应用程序–>空文档
2.添加.cpp源文件
3.输入代码

#include "mat.h"
#include "matrix.h"
#include <iostream>
using namespace std;  
#pragma comment(lib,"libmat.lib")
#pragma comment(lib,"libmx.lib")
int main()
{
    MATFile *pmatFile = NULL;  
    mxArray *pReadArray = NULL;  
    mxArray *pWriteArray = NULL;
    const char **dir;  
    int  ndir;        //矩阵的数目
    const char *name;       //矩阵的名称
    const char *file   //文件路径
    // 读取.mat文件(mat文件名为"a.mat",其中包含"m"名称的矩阵)  
    double *data; 
    file =  "C:\\Users\\ASUS\\Desktop\\a.mat";
    pmatFile =matOpen(file,"r"); 
    if (pmatFile == NULL) {
    printf("Error opening file %s\n", file);
    return(1);
    } 
    dir = (const char **)matGetDir(pmatFile, &ndir);
    if (dir == NULL) {
    printf("Error reading directory of file %s\n", file);
    return(1);
    } else {
    printf("Directory of %s:\n", file);
    for (i=0; i < ndir; i++)
      printf("%s\n",dir[i]);
    }
    mxFree(dir);  
    pReadArray = matGetVariable(pmatFile, "m");   
    size_t M = mxGetM(pReadArray);  //矩阵行数
    size_t N = mxGetN(pReadArray);  //矩阵列数
    //第一种获取.mat中矩阵的方法
    data = = (double*) mxGetData(pReadArray);  
    //第二种获取数据的方法
    memcpy((double*)data, (double*)(mxGetPr(pReadArray)), sizeof(data)*M*N);
    for (int row=0; row<M; row++)  
            for (int col=0; col<N; col++)  
                cout<<"序号:"<<M*j+i<<"的数据为:"<<outA[M*j+i]<<endl;
    //获取数据时是以列获取的
    matClose(pmatFile);  

    // 生成.mat文件  
    pmatFile =matOpen("C:\\Users\\ASUS\\Desktop\\K.mat","w");
    //创建一个M*N的矩阵  
    pWriteArray = mxCreateDoubleMatrix(M, N, mxREAL);  
    //把data的值赋给pWriteArray指针
    memcpy((void *)(mxGetPr(pWriteArray)), (void *)data, sizeof(data)*M*N);
    //给矩阵命名为A
    matPutVariable(pmatFile, "A", pWriteArray); 
    matClose(pmatFile);  
    system("pause");
    return 0;
}

本文地址:VS2010 C++读写.mat格式文件
参考网址:

  1. C++读写.mat文件
  2. MathWorks官方文档
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值