3

如何将 CSV 文件导入 MATLAB?我正在使用的文件中的一行如下所示:

SUNW,2-Jan-98,1998,5,40.125,41.5

有 36 列和 10107 行。第一行包含列标题。看来 MATLAB 不支持导入此类 CSV 文件。使用以下textscan函数将整个数据读入一个元胞数组。

data = textscan(fid, '%s %s %d %d %f %f', ...
    'HeaderLines',1, 'Delimiter',',', 'CollectOutput',1);

有没有办法可以将数据读入每列的不同变量?

4

2 回答 2

2

textscan文档中的示例 6似乎涵盖了您感兴趣的用例:

使用文本编辑器,创建一个以逗号分隔的文件 data2.csv,其中包含以下行

    abc, 2, NA, 3, 4
    // Comment Here
    def, na, 5, 6, 7

指定 textscan 应视为注释或空值的输入:

    fid = fopen('data2.csv');
    C = textscan(fid, '%s %n %n %n %n', 'delimiter', ',', ...
                 'treatAsEmpty', {'NA', 'na'}, ...
                 'commentStyle', '//');
    fclose(fid);

textscan 返回一个 1×5 元胞数组 C,其中包含以下元胞:

    C{1} = {'abc'; 'def'}
    C{2} = [2; NaN]
    C{3} = [NaN; 5]
    C{4} = [3; 6]
    C{5} = [4; 7]

虽然它没有明确地将每一列分配给一个单独的变量,但您可以轻松地执行类似col1 = C{1};.

于 2012-01-22T08:03:27.310 回答
1

如果您有 MATLAB 2011b,那么您可以使用电子表格导入工具

于 2012-01-22T13:00:10.363 回答