0

作为我作业的一部分,我必须阅读一个 .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 命令,但它给出了错误。

4

2 回答 2

4

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

于 2013-03-03T05:42:49.830 回答
1

您可能想尝试使用readtable

t = readtable('filename.csv');

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

或者,您可以使用 Import Tool(可从 Matlab UI 上的 Import Data 按钮访问),或者您可以使用 uiimport 打开它:

uiimport('filename.csv')

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

使用 textscan 您可能面临的困难是您需要正确获取格式(%f、%s 等),并且其中的任何变化都可能导致失败。例如,如果由于某些缺失/错误数据而在数字字段中有字符串,则它可能会失败。如果您选择使用 textscan 并且没有得到您期望的结果,您可能需要尝试使用所有 '%s' 格式规范。

textscan(f,'%s %s %s %s %s %s %s %s %s %s','HeaderLines', 1, 'Delimiter', ',');
于 2015-05-27T15:19:38.390 回答