找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4232|回复: 1
打印 上一主题 下一主题
收起左侧

VC保存数据到MATLAB的mat文件

[复制链接]
跳转到指定楼层
楼主
ID:77367 发表于 2015-4-18 21:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        一、配置VC++的 包含文件 库文件 目录,如  
    C:\MATLAB7\extern\include   
  

   C:\MATLAB7\extern\lib\win32\microsoft\msvc71   

    
  

二、一定要加入 #include "mat.h" ,如果要对mxArray进行操作,加入 #include "matlab.h" 。   
  

  三、包含库文件
#pragma comment(lib, "libmat.lib")  NumberPoints #pragma comment(lib,"libmx.lib")    

  四、test
    
  

【保存数据】按钮的代码如下
  

void CGRIP2002DemoDlg::OnBnClickedButton9()
  {
    CString filePath;
    char   szANSIString   [MAX_PATH];
    MATFile *pMF = NULL; // mat文件
    mxArray *pMA = NULL; // 矩阵指针
    double *Array;   
      
    Array = new double[4*NumberPoints];      //    4*500

  

    CFileDialog dlgSave(FALSE,_T(".mat"),_T("Untitled.mat"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("MAT file(*.mat)|*.mat|All files(*.*)|*.*||"));  //save as
    if (dlgSave.DoModal() == IDOK)
    {
    filePath = dlgSave.GetPathName();
    TRACE1("%s\n",filePath);
    }
    WideCharToMultiByte(CP_ACP,0,filePath.GetBuffer(),-1,szANSIString,MAX_PATH,NULL,NULL);
    pMF = matOpen(szANSIString, "w");
    pMA = mxCreateDoubleMatrix(NumberPoints,4,mxREAL);  // 新建一个NumberPoints*4的矩阵只有实部(在MATLAB里矩阵都是复矩阵)
  

    mxSetName(pMA, "data");
  

    Array = mxGetPr(pMA);
     
    memcpy(Array,XValues,sizeof(double)*NumberPoints);
    memcpy(Array+NumberPoints,YValues,sizeof(double)*NumberPoints);
    memcpy(Array+2*NumberPoints,YValues2,sizeof(double)*NumberPoints);
    memcpy(Array+3*NumberPoints,YValues3,sizeof(double)*NumberPoints);
  

    // 将矩阵写到*.mat文件内
    if(pMA != NULL) matPutArray(pMF, pMA);
  

    mxDestroyArray(pMA);
    if(pMF != NULL) matClose(pMF);
  

  }   
  

  假设保存在pend.mat文件,用MATLAB打开它,有一个500*4的矩阵data,显示数据
     >> x=data(:,1);
>> y=data(:,2);
>> y2=data(:,3);
>> y3=data(:,4);
>> plot(x,y,'b',x,y2,'r',x,y3,'g')  

或者
>>plot(data(:,1),data(:,2:4))

   
  

  





分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:80248 发表于 2015-5-17 14:18 | 只看该作者
我也是想用vc++把数据保存成.mat,上面的代码可以实现么。还要配置什么文件么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表