在MATLAB中导入CSV文件

时间:2012-01-22 07:29:40

标签: matlab file-io csv import textscan

如何将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);

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

2 个答案:

答案 0 :(得分:2)

textscan documentation中的示例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{1} = {'abc'; 'def'}
    C{2} = [2; NaN]
    C{3} = [NaN; 5]
    C{4} = [3; 6]
    C{5} = [4; 7]

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

答案 1 :(得分:1)

如果你有MATLAB 2011b,那么你可以使用spreadsheet import tool