将.csv导入Matlab

时间:2014-08-20 15:15:32

标签: matlab csv import

我尝试加载.csv:

Time    Column01    Column02    Column03    
11.03.2004  09:17:02    236.81  237.31  236.45
11.03.2004  09:17:05    236.6   237.06  236.18
11.03.2004  09:17:08    236.67  237.16  236.28
11.03.2004  09:17:12    236.83  237.24  236.41
11.03.2004  09:17:15    233.84  234.2   233.4
...

使用:

b=csvimport('u1.csv','columns',{'Time'});
c=csvimport('u1.csv','columns',{'Column03'});

第一次工作,但第二次没有。谁知道为什么?我有这个错误:

使用csvimport时出错(第200行) 无法在文件'u1.csv'中找到列标题'Column03'。列标题名称 区分大小写。

TSFP出错(第4行) C = csvimport( 'u1.csv', '列',{ 'Column03'});

Here是关于此功能的描述。

2 个答案:

答案 0 :(得分:3)

您的档案中没有逗号!

严格来说,它不是逗号分隔值文件。从它的外观来看,它的标签分开了。

与第一个示例中一样,使用dlmread可能会有更好的结果:

M = gallery('integerdata', 100, [5 8], 0); 
dlmwrite('myfile.txt', M, 'delimiter', '\t')
dlmread('myfile.txt')
ans =
    96    77    62    41     6    21     2    42
    24    46    80    94    36    20    75    85
    61     2    93    92    82    61    45    53
    49    83    74    42     1    28    94    21
    90    45    18    90    14    20    47    68

答案 1 :(得分:1)

如果您要导入所有数据,我会使用textscandlmread只会导入数字数据,但您的日期和时间列需要被视为字符串。

filename='u1.csv';
fid=fopen(filename,'r');
C=textscan(fid, '%s%s%f%f%f', 'HeaderLines', 1);
fclose(fid);

C是一个单元格数组,因此要访问日期列中的第二个值和Column01中的第二个值,请执行以下操作:

date = C{1}{2};
value = C{3}(2);

值得注意的是,这会分别导入日期和时间,因为文件中它们之间有空格。如果你想重新组合它们,你可以这样做:

C={strcat(C{1}, {' '}, C{2}), C{3:5}};