现在有一个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.然后是读入的代码

  1. //read .mat from matlab
  2. #include <iostream>
  3. #include <mat.h>
  4. #include<iomanip>
  5. #include <fstream>
  6. #include <vector>
  7. using std::vector;
  8. int main()
  9. {
  10. MATFile *pmatFile = NULL;
  11. mxArray *pMxArray = NULL, *pMxArray_i = NULL;
  12. double *pMx_cell_i = NULL;
  13. //读入.MAT
  14. pmatFile = matOpen("D:/Program Files/MATLAB/R2014a/work/mywork/test_for_data/mydata1.mat", "r");
  15. //std::cout << pmatFile;
  16. pMxArray = matGetVariable(pmatFile, "w");
  17. //size_t M = mxGetM(pMxArray);
  18. //size_t N = mxGetN(pMxArray);
  19. //std::cout << N;
  20. int num_of_cell{ (int)mxGetNumberOfElements(pMxArray) };
  21. std::cout << "the number of the CELL we have got for the T :" << num_of_cell << std::endl;
  22. //int A[10];由于数组 的长度需要事先给定,所以改用vector
  23. vector<int> V_A;
  24. //Matrix<double> A(num_of_cell, 1);
  25. for (int i{ }; i < num_of_cell; i++)
  26. {
  27. pMxArray_i = mxGetCell(pMxArray, i);
  28. int num_of_cell_i = (int)mxGetNumberOfElements(pMxArray_i);
  29. std::cout << "the number of the CELL " << i << " we have got for the T :" << num_of_cell_i << std::endl;
  30. double sum_i = ;
  31. for (int j{ }; j < num_of_cell_i; j++)
  32. {
  33. pMx_cell_i = mxGetPr(pMxArray_i);
  34. std::cout << std::setw() << *(pMx_cell_i + j);
  35. sum_i = sum_i + *(pMx_cell_i + j);
  36. }
  37. std::cout << std::endl;
  38. std::cout << "sum " << i << " is " << sum_i << std::endl;
  39. //A[i] = sum_i;
  40. V_A.push_back(sum_i);
  41. //
  42. }
  43. matClose(pmatFile);
  44. //mxFree(pMxArray);
  45. //mxFree(pMxArray_i);
  46. //mxFree(pMx_cell_i);
  47.  
  48. //写到e:/data.TXT中
  49. FILE *p=NULL;
  50. //if ((p = fopen("e:\\data.txt", "wt")) != NULL)
  51. //for (int i = 0; i<10; i++)
  52. // fprintf(p, "%d \n", A[i]);
  53. //fclose(p);
  54. //FILE *p;
  55. if ((p = fopen("e:\\data_V.txt", "wt")) != NULL)
  56. for (int i = ; i<num_of_cell; i++)
  57. fprintf(p, "%d \n", V_A.at(i));
  58. fclose(p);
  59. }

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

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

使用visual studio 2013读取.mat文件的更多相关文章

  1. Visual Studio 2013编辑HTML文件无设计视图的解决方案

    在Visual Studio 2013中编辑HTML文件,会发现没有设计视图. 解决方法:点击Visual Studio 2013的”工具“菜单,再点击”选项“—>文本编辑器—>文件扩展名 ...

  2. Visual Studio 2013新建工程导入现有代码文件夹并且保持目录结构

    本文提供了一个在Windows环境下使用Visual Studio 2013编辑现有源代码并且保持目录结构的方法.本文使用VS2013中文社区版做示例(本版本为免费版,可在VS官网下载),其他版本的V ...

  3. Visual Studio 2013 错误系统找不到指定文件,0x80070002

    错误:Visual Studio 2013 按照成功后,可以创建空web项目,但不能建webform 和 mvc 项目. 提示系统找不到指定文件,0x80070002. 解决方式: Step1: Wi ...

  4. Visual Studio 2013 无法创建MVC项目,系统找不到指定的文件.(Exception from HRESULT:08x0070002)

    在Visual Studio 2013中创建新MVC项目,(PS:现在创建个MVC项目,差点都找不到在哪,汗!-) 确定后提示,系统找不到指定的文件.(Exception from HRESULT:0 ...

  5. 新手一步一步OpenCV+Win7+Visual Studio 2013环境配置

    地点:湖南大学软件大楼211 时间:2013.12.19 昨天导师布置了个任务,要求是找出用相机拍出同一移动场景下的两张照片,计算机能根据其中的差异计算场景移动的距离和旋转角度.据说以前很牛逼的师兄完 ...

  6. Win7系统Visual Studio 2013配置OpenCV3.1图文详解

    Win7系统Visual Studio 2013配置OpenCV3.1图文详解 OpenCV3.1对硬件加速和移动开发的支持相对于老版本都有了较大改进,支持新的开发工具,更易于扩展,配置方式也比以前简 ...

  7. 让Visual Studio 2013为你自动生成XML反序列化的类

    Visual Sutdio 2013增加了许多新功能,其中很多都直接提高了对代码编辑的便利性.如: 1. 在代码编辑界面的右侧滚动条上显示不同颜色的标签,让开发人员可以对所编辑文档的修改.查找.定位情 ...

  8. [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图

    [.net 面向对象程序设计深入](2)UML——在Visual Studio 2013/2015中设计UML用例图  1.用例图简介 定义:用例图主要用来描述“用户.需求.系统功能单元”之间的关系. ...

  9. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图

    [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...

随机推荐

  1. Mybatis入门案例中设计模式的简单分析

    Talk is cheap, show me the code! public class TestMybatis { public static void main(String[] args) t ...

  2. appium+ios+macaca自动化测试环境部署

    环境准备(供参考) mac v10.14.4 xcode v10.2 python v3.6 确保上述环境已满足,即可开始搭建appium+ios测试环境 1 jdk安装 下载mac版本的jdk并安装 ...

  3. nginx负载均衡的相关配置

    一台nginx的负载均衡服务器(172.25.254.131) 两台安装httpd作为web端 一.准备工作 1.1 安装nginx yum -y install gcc openssl-devel ...

  4. 菜鸟系列Fabric源码学习 — committer记账节点

    Fabric 1.4 源码分析 committer记账节点 本文档主要介绍committer记账节点如何初始化的以及committer记账节点的功能及其实现. 1. 简介 记账节点负责验证交易和提交账 ...

  5. $HDU$ 4336 $Card\ Collector$ 概率$dp$/$Min-Max$容斥

    正解:期望 解题报告: 传送门! 先放下题意,,,已知有总共有$n$张卡片,每次有$p_i$的概率抽到第$i$张卡,求买所有卡的期望次数 $umm$看到期望自然而然想$dp$? 再一看,哇,$n\le ...

  6. DecoratorPattern(装饰器模式)-----Java/.Net

    装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装

  7. c++中减字符0的作用(转)

    在刷OJ题的时候遇到要读取“2013-3-1”形式的日期然后计算这个日期是该年的第几天, 显然我们读取的是字符串,但是计算第几天却要整型数来计算,这是这个问题的难点,下面是解决这个问题的代码: int ...

  8. ArcEngine DEM叠加影像

    代码执行前: 代码执行后: 影像叠加代码: /// <summary> /// 叠加DEM /// </summary> /// <param name="pR ...

  9. Sql Server学习笔记

    1.指定路径创建数据库 create database student on--创建库的时候必须写 ( name=student, filename='E:\database\student.mdf' ...

  10. C语言之函数用法总结

    C语言函数概述: 构成C语言程序的基本模块,模块化编程的最小单位. 函数调用的基本方式: 函数调用时的数据传递: 函数调用的过程: 函数原型与函数定义的区别: 函数封装: 1.外界对函数的影响仅限于入 ...