【问题标题】:Reading .csv file into MATLAB将 .csv 文件读入 MATLAB
【发布时间】:2013-02-16 23:00:28
【问题描述】:

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

【问题讨论】:

    标签: matlab csv


    【解决方案1】:

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

    【讨论】:

    • 嗨,mfbutner。我也尝试输入文件 ID,但我遇到了同样的问题。
    • 所以你的代码现在看起来像 f = fopen('filename.csv'); data =textscan(f,'%f %s %s %s %s %s %s %s %s %f','HeaderLines', 1, 'Delimiter', ',');
    【解决方案2】:

    您可能想尝试使用readtable

    t = readtable('filename.csv');
    

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

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

    uiimport('filename.csv')
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      相关资源
      最近更新 更多