导入数据是个苦差事,有时候matlab不接受你给它的数据格式,譬如xls和xlsx明明能够打开,但是matlab却死活不认。

怎么办?如果能够将这些数据变成txt格式,会方便得多

给你们一个思想

大量数据xls首尾相接汇总到一个xls文件中可以使用 批处理方法。百度搜索 批处理大量数据汇总到一个文件中

 

①xlsread('文件名.xls',一些位置参数)

详细参数在命令框中输入 help xlsread

②csvread('文件名.csv',一些位置参数)

 

③批量读取一个文件夹中所有文件名字的好方法

file_read=dir('E:\股票数据\1沪深A\*.txt');%读取文件夹的位置

如此读取出来的file_read会是一个cell元组类型,如果你对matlab只是一知半解,那么操作这个cell,下面的命令可以帮你,用上面的

file_read生成的cell作为例子

如果你的cell长得就是矩阵模样,但是无法调用

要调用cell的某行某列,使用file_read(行号,列号) 即可,但是调用出来还是一个cell,就算这个cell就是一个数字,但是它都没办法直接输出和使用到别的地方。

怎么处理呢?

char(file_read(行号,列号))可以把这个单元cell转化成字符串形式

而利用str2num即可将本来就是数字的字符串转化成真正的数字

str2num(char(file_read(行号,列号)))=这个单元cell的数字,float双精度浮点数类型表示

补充:而我们知道,如果给定一个字符串,假如说ch='abcdefghi'

这种用法ch(3:5)='cde'是从字符串第一个字符数起开始调用的方法

 

补充2:要给cell的某行某列赋值,怎么办??

例如file_read(1,3)={[可以写任意数字或变量]} 

意味着给第一行第三列这个单元格赋值,这样。如果原来cell的规模根本没有到1行三列,matlab会自动将cell补齐空值到一行三列。就算你给那个单元格赋值非空,其他单元格会自动补齐空值[] 直到让cell成为矩阵

补充3:cell直接转化成数值矩阵

例子

C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]};

 M = cell2mat(C) ;

这样,M就变成了数值矩阵

M = 

1   2      3   4

5   6     7    8

9  10     11  12

 

④我怎么循环打开一个文件夹下的所有文件?

谈这个话题,怎么打开txt文件?

textread和textscan是好方法,具体不详述,你可以在CSDN论坛上搜索到这种用法

 

 

 

 

⑤合并字符串

 

有时候,在处理地址路径的循环迭代当中会用到

filename=strcat('E:\股票数据\1沪深A\',filename);

原本filename仅仅是'SH00001.txt'

这样的文件名,没有路径

但是strcat能够将两个字符串拼到一起,得到的结果就是

filename='E:\股票数据\1沪深A\SH00001.txt'

如此便能够和最上面说的,dir命令结合起来对文件夹进行循环



作者:王伟喆
链接:https://www.jianshu.com/p/7d6a0d3cc76b
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
posted on 2019-04-23 12:58  Fendi_ly  阅读(370)  评论(0编辑  收藏  举报