如何将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);
有没有办法可以将数据读入每列的不同变量?
答案 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。