繁体   English   中英

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

[英]MATLAB: How to import multiple CSV files with mixed data types

我刚刚开始学习MATLAB,并且很难将csv文件导入到二维数组中。

这是我需要的一个示例csv :(所有csv文件的格式都相同,且固定列)

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

由于csvread()仅适用于整数,我应该分别导入数字数据和文本数据,还是有任何快速方法来导入具有混合数据类型的 多个csv文件?

非常感谢!!

您正在寻找的可能是xlsread函数。

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

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

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

之后,输入:

[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

问题在于它不像调用它那样简单,因为您将不得不打开文件,在行中进行迭代,并明确告知matlab文件的格式。

最好的祝福

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

值得注意的是,csv文件上的xlsread仅适用于Windows。 在Linux或Mac上,xlsread在“基本”模式下工作,无法读取csv文件。 从长远来看,如果需要跨平台迁移或自动化在Linux服务器上运行的代码,则使用xlsread可能不是一个好主意。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM