MATLAB:如何导入具有混合数据类型的多个CSV文件

时间:2012-02-12 12:33:38

标签: matlab file-io csv import

我刚刚开始学习MATLAB,并且难以将csv文件导入二维数组..

以下是我需要的示例csv :(所有csv文件的格式与固定列相同)

Date,                Code,         Number....
2012/1/1,            00020.x1,             10
2012/1/2,            00203.x1,            0300
...

由于csvread()仅适用于整数,我应该单独导入数字数据和文本数据,还是有任何快速方法可以导入多个csv 文件混合数据类型< /强>

非常感谢!!

2 个答案:

答案 0 :(得分:4)

您正在寻找的功能可能是 xlsread

它会打开Excel识别的任何文件,并自动将文本数据与数值数据分开。

问题是至少在我的计算机上的默认分隔符是; ,而不是(至少对于我在巴西的语言环境而言)。因此,xlsread将尝试使用; 分隔文件中的字段,而不是您想要的逗号。

要更改您必须更改系统区域设置以将逗号添加为列表分隔符。因此,如果您愿意,可以在Windows Vista中执行此操作,单击“开始”,“控制面板”,“区域和语言选项”,“自定义此格式”,然后从“;”更改“列表分隔符”。至 ','。在其他窗口上,过程应该几乎相同。

完成后,输入:

[num, txt, all] = xlsread('your_file.csv');

会返回类似的内容:

num =

10
300


txt = 

'01/01/2012'    ' 00020.x1'
'02/01/2012'    ' 00203.x1'


all = 

'01/01/2012'    ' 00020.x1'    [ 10]
'02/01/2012'    ' 00203.x1'    [300]

请注意,如果您的语言环境已将列表分隔符设置为“,”,则无需更改系统上的任何内容即可使其正常工作。

如果您不想仅仅使用 xlsread 功能更改系统,则可以使用此处所述的 textscan 功能:http://www.mathworks.com/help/techdoc/ref/textscan.html < / p>

问题在于它并不像调用它那么简单,因为你必须打开文件,迭代行,并明确地告诉matlab文件的格式。

祝你好运

答案 1 :(得分:0)

我最近写了一个函数来解决这个问题。请参阅delimread

值得注意的是,csv文件中的xlsread仅适用于Windows。在Linux或Mac上,xlsread适用于基本的&#39;无法读取csv文件的模式。在longrun中使用xlsread可能不是一个好主意,以防您需要跨平台迁移或在Linux服务器上自动运行代码。

xlsread也比其他文本解析函数慢得多,因为它打开一个Excel会话来读取文件。