当前位置: 代码迷 >> 其他开发语言 >> matlab:csv文件含有一列字符串,读取方法探讨?该怎么处理
  详细解决方案

matlab:csv文件含有一列字符串,读取方法探讨?该怎么处理

热度:8479   发布时间:2013-02-26 00:00:00.0
matlab:csv文件含有一列字符串,读取方法探讨?
在网上查了好多,没找到有效的方法,问题如下:

数据源文件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,这个函数真了不起,将文件转换成二进制进行读取,基本的文件格式都支持!你可以看看!
  相关解决方案