[英]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.