导入数据是个苦差事,有时候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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。