现在有一个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;
//读入.MAT
pmatFile = 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];由于数组 的长度需要事先给定,所以改用vector
vector<int> V_A;
//Matrix<double> A(num_of_cell, 1);
for (int i{ }; 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 = ;
for (int j{ }; j < num_of_cell_i; j++)
{
pMx_cell_i = mxGetPr(pMxArray_i);
std::cout << std::setw() << *(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 = ; i<num_of_cell; i++)
fprintf(p, "%d \n", V_A.at(i));
fclose(p);
}

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

修改:使用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. Centos 7.5安装 Mysql5.7.24

    1. 下载 MySQL 本文采用的Linux为是腾讯云 标准型S2 (1 核 1 GB) Centos 7.5 64位  1.1 官网下载地址: https://dev.mysql.com/downl ...

  2. 网络知识02:TCP/IP概述

    一  DOD模型 传输控制协议IRI特网协议(TCP/IP)组是由美国国防部(DOD)所创建的,主要用来确保数据的完整性及在毁灭性战争中保持通信 是由一组不同功能的协议组合在一起的协议簇 利用一组协议 ...

  3. Linux中 ps命令的参数讲解

    Linux命令ps: (Process Status的缩写)该命令常常用来用来列出系统中当前运行的进程.ps是显示瞬间进程的状态,并不动态连续:如果想对进程进行实时监控应该用top命令 -a 显示所有 ...

  4. 洛谷$P1712\ [NOI2016]$区间 线段树

    正解:线段树 解题报告: 传送门$QwQ$ $umm$很久以前做的了来补个题解$QwQ$ 考虑给每个区间按权值($r-l$从大往小排序,依次加入,然后考虑如果有一个位置被覆盖次数等于$m$了就可以把权 ...

  5. 洛谷$P4755\ Beautiful\ Pair$ 最大值分治

    正解:最大值分治 解题报告: 传送门$QwQ$ 昂考虑如果已经钦定了点$x$是这个$max$了,然后现在要求有多少对$[l,r]$满足$a_x=max\left\{a_i\right\},i\in[l ...

  6. Callable,阻塞队列,线程池问题

    一.说说Java创建多线程的方法 1. 通过继承Thread类实现run方法   2. 通过实现Runnable接口 3. 通过实现Callable接口 4. 通过线程池获取 二. 可以写一个Call ...

  7. Python保存时提示“SyntaxError: Non-ASCII character '\xe8' in file”

    原因 Python 默认的是ASCII 编码方式,如果出现中文会出现问题,所哟必须在代码的第二行或第一行 显示的声明编码方式(已注释的方式,即"#"开始) 解决方法 在文件头部加上 ...

  8. 【原创】(十六)Linux内存管理之CMA

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  9. 虚拟机下 windows 自动配置 IPv4 地址 169.254.X.X(首选)

    问题: windows server上,自己手动配置的ip不生效,自动获取地址虽然ok,但是服务器必须指定ip. 诊段: ipconfig/all里查看 自动配置 IPv4 地址  169.254.X ...

  10. 【LC_Overview1_5】---学会总结回顾

    刷LeetCode题目一周,主要采用C++和Python编程手段,截至目前做了5道简单的leetcode题目,做下阶段性的小结: 小结主要通过手撕代码,复习加回顾,尽量避免自己眼高手低的情况发生,对于 ...