c/c++中读取和写入mat文件 --- MAT File I/O Library(二)

本篇记述c/c++中读取mat文件示例

测试数据matioTest.zip下载地址:

http://pan.baidu.com/s/1sjPkMsd

1. 读取matioTest.zip中s.mat文件,数据为普通matrix

 1 #include <iostream>
 2 #include <cassert>
 3 #include <matio.h>
 4
 5
 6 int main()
 7 {
 8     mat_t *matfp;
 9     const char* matFilePath = "testRes\\s.mat";
10     matfp = Mat_Open(matFilePath, MAT_ACC_RDONLY);
11     if (NULL == matfp) {
12         fprintf(stderr, "Error opening MAT file %s\n", matFilePath);
13         return EXIT_FAILURE;
14     }
15     matvar_t* matVar = NULL;
16     // read data ‘x‘
17     matVar = Mat_VarRead(matfp, "x");
18     if (matVar) {
19         assert(matVar->data_type == MAT_T_DOUBLE);
20         size_t xSize = matVar->nbytes / matVar->data_size;
21         const double* xData = static_cast<const double*>(matVar->data);
22         for (int i = 0; i < xSize; ++i) {
23             std::cout << xData[i] << " ";
24         }
25         std::cout << std::endl;
26         for (int i = 0; i < matVar->rank; ++i) {
27             std::cout << matVar->dims[i] << " ";
28         }
29         std::cout << std::endl;
30     }
31     // read data ‘y‘
32     matVar = Mat_VarRead(matfp, "y");
33     if (matVar) {
34         assert(matVar->data_type == MAT_T_DOUBLE);
35         size_t ySize = matVar->nbytes / matVar->data_size;
36         const double* yData = static_cast<const double*>(matVar->data);
37         for (int i = 0; i < ySize; ++i) {
38             std::cout << yData[i] << " ";
39         }
40         std::cout << std::endl;
41         for (int i = 0; i < matVar->rank; ++i) {
42             std::cout << matVar->dims[i] << " ";
43         }
44         std::cout << std::endl;
45     }
46     // read ‘minX‘ and ‘step‘ is similar
47     Mat_VarFree(matVar);
48     Mat_Close(matfp);
49     system("pause");
50     return EXIT_SUCCESS;
51 }

2. 读取matioTest.zip中image_0001.mat文件,数据为struct

 1 #include <iostream>
 2 #include <cassert>
 3 #include <matio.h>
 4
 5 int main()
 6 {
 7     mat_t *matfp;
 8     const char* matFilePath = "testRes\\image_0001.mat";
 9     matfp = Mat_Open(matFilePath, MAT_ACC_RDONLY);
10     if (NULL == matfp) {
11         fprintf(stderr, "Error opening MAT file %s\n", matFilePath);
12         return EXIT_FAILURE;
13     }
14     matvar_t *feaSetStruct = NULL, *feaArr = NULL;
15     feaSetStruct = Mat_VarRead(matfp, "feaSet");
16     if (feaSetStruct) {
17         assert(MAT_T_STRUCT == feaSetStruct->data_type);
18         feaArr = Mat_VarGetStructFieldByName(feaSetStruct, "feaArr", 0);
19         if (feaArr) {
20             assert(MAT_T_DOUBLE == feaArr->data_type);
21             size_t Size = feaArr->nbytes / feaArr->data_size;
22             const double* Data = static_cast<const double*>(feaArr->data);
23             // print Data or copy to other memory container
24         }
25     }
26     Mat_VarFree(feaSetStruct);
27     system("pause");
28     return EXIT_SUCCESS;
29 }

参考资料:

http://sourceforge.net/p/matio/discussion/609377/thread/b703ce7a/

http://sourceforge.net/p/matio/discussion/609376/thread/9df1158c/?limit=50#1cac/10aa

c/c++中读取和写入mat文件 --- MAT File I/O Library(二),布布扣,bubuko.com

时间: 2024-10-07 06:32:40

c/c++中读取和写入mat文件 --- MAT File I/O Library(二)的相关文章

Asp.net读取和写入txt文件方法(实例)!

Asp.NET读取和写入txt文件方法(实例)! [程序第一行的引入命名空间文件 - 参考] System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; usi

Jsoup学习笔记9:Jsoup 解析saz文件,读取其中的htm文件到字符串,提取字符串中的数据写入csv文件中

本篇笔记将上篇笔记的操作做些改进,不再把saz文件中的htm文件解析出来,而是不解压直接读取其中的数据成字符串,基本思路如下: 1.自定义一个从文本文件读取内容到字符串的类:解析saz文件中的htm文档,将文件的内容读取到字符串中 2.自定义利用Jsoup解析htm字符串的类:利用Jsoup解析传入的htm字符串,将解析结果写入csv文件中 3.解析时,指定好文件路径,直接调用上面的两个工具类即可 示例代码如下: package com.daxiang.saztest; /** * 自定义一个从

C#读取和写入XML文件

关于xml是属于一个比较重要的东西,在平时开发的过程中,这块内容最主要的是要掌握XML内容的读取和写入操作. 一.什么是XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义,您需要自行定义标签 XML 被设计为具有自我描述性 XML 是W3C 的推荐标准 二.XML语法: 1.一个XML包含以下几部分内容: 文档声明,元素,属性,注释,CDATA(特

C#读取并写入XML文件

XML(可扩展标记语言)文件,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. XML与HTML的设计区别是:XML 被设计为传输和存储数据,其焦点是数据的内容.而HTML 被设计用来显示数据,其焦点是数据的外观.HTML 旨在显示信息,而 XML 旨在传输信息. XML和HTML语法区别:HTML的标记不是所有的都需要成对出现,XML则要求所有的标记必须成对出现:HTML标记不区分大小写,XML则大小敏感,即区分大小写. 在Asp.Net中我们需要通过C#来对已

python读取并写入csv文件

新建csvData.csv文件 1 import csv 2 3 # 读取csv文件方式1 4 csvFile = open("csvData.csv", "r") 5 reader = csv.reader(csvFile) # 返回的是迭代类型 6 data = [] 7 for item in reader: 8 print(item) 9 data.append(item) 10 11 print(data) 12 csvFile.close() 13 14

python之读取和写入csv文件

写入csv文件源码: 1 #输出数据写入CSV文件 2 import csv 3 data = [ 4 ("Mike", "male", 24), 5 ("Lee", "male", 26), 6 ("Joy", "female", 22) 7 ] 8 9 #Python3.4以后的新方式,解决空行问题 10 with open('d://write.csv', 'w', newline

Objc执行时读取和写入plist文件遇到的问题

以下是本猫保持游戏NPC和物件交互的plist文件: 随着游戏和玩家逐步发生互动,玩家会改动人物和物件的交互的状态.这也是RPG游戏最主要的功能. 在切换每一个地图时须要将上一个地图发生的改变存储到plist文件里去. 我採用的方法为现将plist文件读入结构对象中,然后改动之,再写会plist文件里. 读入的代码例如以下: NSMutableDictionary *mapInfoMDict = [[NSDictionary dictionaryWithContentsOfFile:fullPa

C# 创建,读取,写入 XML文件1

XML格式如下 <?xml version="1.0" encoding="utf-8"?> <Advertisements> <Ad> <ImageUrl>001.jpg</ImageUrl> <NavigateUrl>001.aspx</NavigateUrl> <Impressions>10</Impressions> <Keyword>gu

C# 创建,读取,写入 XML文件

XML格式如下 <?xml version="1.0" encoding="utf-8"?><Advertisements>  <Ad>    <ImageUrl>001.jpg</ImageUrl>    <NavigateUrl>001.aspx</NavigateUrl>    <Impressions>10</Impressions>    <K