将mat文件中的数据按要求保存到txt文档中(批处理)
之前有个老朋友,让帮忙将一个mat中的数据重新保存到txt中,由于数据比较多需要用到批处理,之前弄过很多次,但每次一到要用的时候总是忘记怎么写了,现在记录一下,免得后面老是需要上网搜。这里先说一个比较有意思的matlab函数--dlmwrite,用这个函数将数据导入到txt文件中,其实用save也是可以的,但是这个函数的功能更强大,而且可以按不同的要求导入数据。因为将数据导入到txt中时,需要用逗号分隔,其主要函数格式如下:
使用默认的分隔符(')将矩阵M写入ASCII格式的文件中。在目标文件filname中,数据是从第一行的第一列开始写的。输入的filename是使用单引号括起来的字符串。
2.dlmwrite(filename, M, 'D')
将矩阵M写入一个ASCII格式的文件中,使用分隔符D来分割矩阵的元素。在目标文件filname中,数据是从第一行的第一列开始写的。逗号'是默认的分隔符,使用\t来产生制表符分割的文件。
还有不少带其他参数的格式,大家可以根据自己需要进行百度。
一 需求分析
首先,加载后是一个元胞数组results,里面有一个1*1的结构体,结构体里面放了数据的一些信息,需要导出的是res这个double矩阵里面的数据,如下所示:
保存之后的数据用逗号分隔。
二 单个mat数据保存到txt中
如果只是保存一个mat中的数据还是很好做的,用刚才提到的dlmwrite函数就可以很轻松的做到,代码如下:
clear,clc; a = load('OPE_Basketball.mat');
b = a.results; dlmwrite('res2.txt',b{1,1}.res,'delimiter',',','newline','pc');
保存之后的结果如下:
三 批处理导入
用于保存的txt文档的名字应该跟原mat的名字对应起来,比如basketball.mat导入到txt中后,该txt的名字应该是basketball.txt。因此需要用到dir函数获取文件夹下的mat文件的名字,代码如下:
namelist = dir('.\*.mat'); len = length(namelist);
for i = 1:len %循环读取当前文件夹下的.mat文件
file_name{i}=namelist(i).name;
a= load(file_name{i}); b = a.results; %取出其中的数据
wname = file_name{i}; % 取出mat文件的名字,用于给txt文件命名。
wname = ['.\',wname,'.txt']; % 用来保存数据的txt文档的名字,只能用[],不能直接相加
dlmwrite(wname,b{1,1}.res,'delimiter',',','newline','pc'); %把数据输出到txt文件中 end
其结果是:
数据没什么问题,但是txt文件的名字有问题,主要是读取的时候连后缀那些也取出来了,由于前后的字符数都是一样的,所以将mat文件名取出来的时候可以直接截取中间部分。网上有不少matlab截取字符的函数,这里的话,直接用下标截取是最方便的。代码如下:
namelist = dir('.\*.mat'); len = length(namelist);
for i = 1:len %循环读取当前文件夹下的.mat文件
file_name{i}=namelist(i).name;
a= load(file_name{i}); b = a.results; %取出其中的数据 wname = file_name{i}(5:end-4); % 取出mat文件的名字,用于给txt文件命名。 取字符串的第五个到倒数第四个子串 wname = ['.\',wname,'.txt']; % 用来保存数据的txt文档的名字,只能用[],不能直接相加
dlmwrite(wname,b{1,1}.res,'delimiter',',','newline','pc'); %把数据输出到txt文件中 end
现在基本上就没什么问题了,如下:
如果需要将这些txt文档放在指定文件下,只需要修改一下路径就可以了,比如:
namelist = dir('.\*.mat'); len = length(namelist);
for i = 1:len %循环读取当前文件夹下的.mat文件
file_name{i}=namelist(i).name;
a= load(file_name{i}); b = a.results; %取出其中的数据 wname = file_name{i}(5:end-4); % 取出mat文件的名字,用于给txt文件命名。 取字符串的第五个到倒数第四个子串 wname = ['.\li\',wname,'.txt']; % 用来保存数据的txt文档的名字,只能用[],不能直接相加
dlmwrite(wname,b{1,1}.res,'delimiter',',','newline','pc'); %把数据输出到txt文件中 end
结果如下:
将mat文件中的数据按要求保存到txt文档中(批处理)的更多相关文章
- C++ code: 将程序的输出,保存到txt文档中,且每35个数,自动换行
// write the predicted score into txt files ofstream file("/home/wangxiao/Downloads/caffe ...
- JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...
- Java读取接口中的数据,并保存到txt文件中!
//创建读取接口中数据的方法 public static String read() { URL url = null; BufferedReader reader = null; HttpURLCo ...
- 获取选中行中的数据提取并且保存到txt
function getchcount(query: TADOQuery): Integer;var i:integer;begin i:=0; with Query do begin Query.F ...
- 用matlab查找txt文档中的关键字,并把关键字后面的数据存到起来用matlab处理
用matlab查找txt文档中的关键字,并把关键字后面的数据存到起来用matlab处理 我测了一组数据存到txt文件中,是个WIFI信号强度文档,里面有我们需要得到的数据,有没用的数据,想用matla ...
- 一个简易的Python爬虫,将爬取到的数据写入txt文档中
代码如下: import requests import re import os #url url = "http://wiki.akbfun48.com/index.php?title= ...
- 用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)
前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过 ...
- 向post请求中写入数据,最终保存在了HttpWebRequest.Params中
一.向post请求中写入数据,最终保存在了HttpWebRequest.Params中: 1)如果存入的是IDictionary类型的字符串变量,如:“username=administrator”, ...
- 网络抓取功能实现 将获取的结果进行过滤并写入到TXT文档中
下面是自己编写的 网络抓取功能实现 将获取的结果进行过滤并写入到TXT文档中 (以防忘记) 原创哟 import java.io.BufferedReader;import java.io.Buffe ...
随机推荐
- 从零开始学习docker之在docker中运行springboot项目
一.docker环境配置 首先需要一个安装了docker的服务器(本地或者云服务器),如果没有请看上文,传送门---https://www.cnblogs.com/wdfordream/p/12737 ...
- SQL Server 之T-SQL基本语句 (2)
接下来继续用上述例子来总结知识点. 用通配符进行过滤 LIKE操作符 //用来选择与条件一样或部分相似的数据 select name from person where name like 'chen ...
- ASP.NET母版页
ASP.NET母版页:主要是设置一致界面的页面,在固定的页中进行更新. 如图1-1所示 页头 页中(页内容) 页尾 图1-1 母版页 一般网页是固定页头和页尾,只更新页内容,来实现网页的跳转或内容的 ...
- thinkphp5.1+ 使用 Redis 缓存
修改 config/cache.php 将其配置成多个缓存类型,示例 <?php // +---------------------------------------------------- ...
- 第九次-DFA最小化,语法分析初步
1.将DFA最小化:教材P65 第9题 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 3.自上而下语法分析,回溯产生的原因是什么? 4.P100 练习4,反复提取 ...
- Inno Setup, Pascal 字符串带双引号如何写
Windows 的路径中如果有空格,就需要用双引号括起来.只能填 ASCII-Code-Number (decimal),不能用一般的 escape 方法. # + path + # 查询这个表的第一 ...
- 再也不用c刷题了!!——c++刷题必备
致读者: 博主是一名数据科学与大数据专业大二的学生,真正的一个互联网萌新,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于困惑的读者.由于水平有限,博客中难免会有一些错误 ...
- angular2相关
脚手架安装一个项目 1.全局安装angular脚手架 npm install -g @angular/cli 2.初始化一个文件夹 ng new my-angular-demo 3.进入文件夹 cd ...
- DB2 Zos 浅谈 - DB2 LUW VS DB2 Zos
DB2 Zos 浅谈 - DB2 LUW VS DB2 Zos 概述: 各位可能对DB2 LUW了解得比较多,但对DB2 Zos(大机操作系统)知之甚少,因为IBM的内部资料一向是比较封闭的,特别是我 ...
- 高可用性GRE+IPSEC中心—分支
在实际网络运用中我们时常跑GRE+IPSEC来实现我们中心到分支的远程访问回话,这样以来容易配置,而来可用性高,我们知道L2L无论是链路备份还是设备备份,都不是状态备份,当一个点断掉后,用经过几十秒甚 ...