matlab:csv文件含有一列字符串,读取方法探讨?
本帖最后由 waterhill 于 2011-03-06 17:50:10 编辑 在网上查了好多,没找到有效的方法,问题如下:
数据源文件test.csv内容为:
方向,价格,买卖手数
B, 13, 10
B, 13, 5
S, 13, 5
我尝试了两种读入方法:
1)用textread对csv文件读取
[BorS,price,volume] = textread('test.csv','%s %d %d','headerlines',1);
结果:
BorS为3*1的cell
'B,13,10'
'B,13,5'
'S,13,5'
但price,volume均为3*1的0
2)用textread对text文件读取
先将test.csv文件打开并另存为test.txt文件,然后再读取
[BorS,price,volume] = textread('test.txt','%s %d%d','headerlines',1);
结果:
BorS为3*1的cell,内容为:
'B‘
'B'
'S'
price = [13;13;13];
volume = [10;5;5];
即结果正确,刚好为想要的,但是这种方法需要每次把csv文件转换为txt文件,文件较多时不可行
至于csvread,dlmread也试过,不行;
data = importdata('test.csv');虽然可以,但需要对data再次拆分,也不太好;
此外,打开了textread.m,里面有个dataread函数,该函数貌似无法看到源文件,若可以,修改下或许能实现。
以上是我尝试的几种方法,希望高手给些引导,谢谢先~~
[解决办法]
csv文件转换为txt文件,文件较多时不可行
文件多时 貌似有批量转换工具。
[解决办法]
你可以试试fopen,这个函数真了不起,将文件转换成二进制进行读取,基本的文件格式都支持!你可以看看!