当前位置: 代码迷 >> 其他开发语言 >> matlab:csv资料含有一列字符串,读取方法探讨
  详细解决方案

matlab:csv资料含有一列字符串,读取方法探讨

热度:3321   发布时间:2013-02-26 00:00:00.0
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,这个函数真了不起,将文件转换成二进制进行读取,基本的文件格式都支持!你可以看看!
  相关解决方案