将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 ...
随机推荐
- async 和 await 例子
/// <summary> /// C# 5.0 /// .net framework4.5 /// CLR4.0 /// 引入了async 和 await.这两个关键字可以让你更方便的写 ...
- 数值计算方法实验之newton多项式插值 (Python 代码)
一.实验目的 在己知f(x),x∈[a,b]的表达式,但函数值不便计算或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)=yi (i=0,1,……, n)求出简单函 ...
- 牛客网机试题-求root(N,k)
题目描述 N<k时,root(N,k) = N,否则,root(N,k) = root(N',k).N'为N的k进制表示的各位数字之和.输入x,y,k,输出root(x^y,k)的值 ( ...
- tp5--相对路径和绝对路径
首先,我们要先明白相对路径和绝对路径的理论: 绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\window ...
- vue项目中使用bpmn-基础篇
内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...
- 如何在mysql中实现自然排序
背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...
- event兼容性解决
event出现undefind错误 解决方法: $('#normalImgDiv').mousemove(function (e) { var e = window.event || e; var p ...
- 自定义fastjson对枚举类型的序列化及反序列化过程
通常,fastjson在序列化及反序列化枚举时,一般以下几种策略: 1).根据枚举的name值序列化及反序列化(默认) 2).根据枚举的ordinal序列化及反序列化 3).根据枚举的toString ...
- SQL Server 字段和对应的说明操作(SQL Server 2005 +)
为什么80%的码农都做不了架构师?>>> 添加说明 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value ...
- String(字符串) 比较大小 如果有A+B>B+A 则A>B
题目引入: 给定N个整数,那任意顺序排列连成一个数,得到的最大的数是多少? 分析:贪心,字典序排序,都不对大小比较也不对,今天我跟别人想了很久绞尽脑汁,各种模拟都失败了.最后才发现对于俩个数a=313 ...