将.csv文件读入MATLAB

时间:2013-03-02 12:56:22

标签: matlab csv

作为我的任务的一部分,我必须阅读.csv文件。该文件包含列下的文本,数字数据和缺失数据的混合: 编号,标题,描述(> 100字,可变长度),位置,时间,期限,公司,类别,来源。

行数超过50万。

建议我将这个文件读入MATLAB的命令。

我已经尝试了以下内容:

uiopen('filename.csv',1)

它给出错误:使用textscan读取更复杂的格式。然后我试了一下:

data =textscan('filename.csv','%f %s %s %s %s %s %s %s %s %f','HeaderLines', 1, 'Delimiter', ',');

此命令运行完成,但它只提供一个数组(1X10)的单元格(为空)。因此,我没有得到我想要的东西。

我也试过了textread命令,但它给出了错误。

2 个答案:

答案 0 :(得分:4)

textscan是你想要使用的,但是根据textscan的matlab文档页面,第一个参数应该是文件id。现在你正在传递一个字符串。

答案 1 :(得分:1)

您可能想尝试使用readtable

t = readtable('filename.csv');

这将在Matlab中创建一个表,它可以包含字符串和数字数据。

或者,您可以使用导入工具(可从Matlab UI上的“导入数据”按钮访问),也可以使用uimport打开它:

uiimport('filename.csv')

这将显示您的数据的图形表示,并可以为您生成导入代码。

使用文本扫描可能遇到的困难是您需要使格式(%f,%s等)正确,并且其中的任何变化都可能导致失败。例如,如果由于某些数据丢失/错误而在数字字段中包含字符串,则可能会失败。如果您选择使用文本扫描并且无法获得您期望的结果,那么您可能希望尝试使用所有'%s'格式规范。

textscan(f,'%s %s %s %s %s %s %s %s %s %s','HeaderLines', 1, 'Delimiter', ',');