我刚刚开始学习MATLAB,并且难以将csv文件导入二维数组..
以下是我需要的示例csv :(所有csv文件的格式与固定列相同)
Date, Code, Number....
2012/1/1, 00020.x1, 10
2012/1/2, 00203.x1, 0300
...
由于csvread()
仅适用于整数,我应该单独导入数字数据和文本数据,还是有任何快速方法可以导入多个csv 文件混合数据类型< /强>
非常感谢!!
答案 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会话来读取文件。