作为我的任务的一部分,我必须阅读.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命令,但它给出了错误。
答案 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', ',');