之前有个老朋友,让帮忙将一个mat中的数据重新保存到txt中,由于数据比较多需要用到批处理,之前弄过很多次,但每次一到要用的时候总是忘记怎么写了,现在记录一下,免得后面老是需要上网搜。这里先说一个比较有意思的matlab函数--dlmwrite,用这个函数将数据导入到txt文件中,其实用save也是可以的,但是这个函数的功能更强大,而且可以按不同的要求导入数据。因为将数据导入到txt中时,需要用逗号分隔,其主要函数格式如下:

1.dlmwrite(filename, M)

使用默认的分隔符(')将矩阵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文档中(批处理)的更多相关文章

  1. C++ code: 将程序的输出,保存到txt文档中,且每35个数,自动换行

    // write the predicted score into txt files       ofstream file("/home/wangxiao/Downloads/caffe ...

  2. JDBC Java 程序从 MySQL 数据库中读取数据,并备份到 xml 文档中

    MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL) 相关内容:JDBC Java 程序从 MySQL 数据库中读取数据,并 ...

  3. Java读取接口中的数据,并保存到txt文件中!

    //创建读取接口中数据的方法 public static String read() { URL url = null; BufferedReader reader = null; HttpURLCo ...

  4. 获取选中行中的数据提取并且保存到txt

    function getchcount(query: TADOQuery): Integer;var i:integer;begin i:=0; with Query do begin Query.F ...

  5. 用matlab查找txt文档中的关键字,并把关键字后面的数据存到起来用matlab处理

    用matlab查找txt文档中的关键字,并把关键字后面的数据存到起来用matlab处理 我测了一组数据存到txt文件中,是个WIFI信号强度文档,里面有我们需要得到的数据,有没用的数据,想用matla ...

  6. 一个简易的Python爬虫,将爬取到的数据写入txt文档中

    代码如下: import requests import re import os #url url = "http://wiki.akbfun48.com/index.php?title= ...

  7. 用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)

    前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过 ...

  8. 向post请求中写入数据,最终保存在了HttpWebRequest.Params中

    一.向post请求中写入数据,最终保存在了HttpWebRequest.Params中: 1)如果存入的是IDictionary类型的字符串变量,如:“username=administrator”, ...

  9. 网络抓取功能实现 将获取的结果进行过滤并写入到TXT文档中

    下面是自己编写的 网络抓取功能实现 将获取的结果进行过滤并写入到TXT文档中 (以防忘记) 原创哟 import java.io.BufferedReader;import java.io.Buffe ...

随机推荐

  1. async 和 await 例子

    /// <summary> /// C# 5.0 /// .net framework4.5 /// CLR4.0 /// 引入了async 和 await.这两个关键字可以让你更方便的写 ...

  2. 数值计算方法实验之newton多项式插值 (Python 代码)

    一.实验目的 在己知f(x),x∈[a,b]的表达式,但函数值不便计算或不知f(x),x∈[a,b]而又需要给出其在[a,b]上的值时,按插值原则f(xi)=yi (i=0,1,……, n)求出简单函 ...

  3. 牛客网机试题-求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)的值 ( ...

  4. tp5--相对路径和绝对路径

    首先,我们要先明白相对路径和绝对路径的理论: 绝对路径:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\window ...

  5. vue项目中使用bpmn-基础篇

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...

  6. 如何在mysql中实现自然排序

    背景 熟悉mysql的同学应该清楚,mysql在对字符串做order by排序时是按照字典序进行排序的,但是如果字符串中包含数字的话(我们称这种类型的字符串为alphanumeric),仅按照字典序的 ...

  7. event兼容性解决

    event出现undefind错误 解决方法: $('#normalImgDiv').mousemove(function (e) { var e = window.event || e; var p ...

  8. 自定义fastjson对枚举类型的序列化及反序列化过程

    通常,fastjson在序列化及反序列化枚举时,一般以下几种策略: 1).根据枚举的name值序列化及反序列化(默认) 2).根据枚举的ordinal序列化及反序列化 3).根据枚举的toString ...

  9. SQL Server 字段和对应的说明操作(SQL Server 2005 +)

    为什么80%的码农都做不了架构师?>>>   添加说明 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value ...

  10. String(字符串) 比较大小 如果有A+B>B+A 则A>B

    题目引入: 给定N个整数,那任意顺序排列连成一个数,得到的最大的数是多少? 分析:贪心,字典序排序,都不对大小比较也不对,今天我跟别人想了很久绞尽脑汁,各种模拟都失败了.最后才发现对于俩个数a=313 ...