1

我想读取具有不规则矩阵的 csv 文件。我需要以迭代的方式阅读 A 列(日期)和 B 列(测量)。下面是一个示例格式。

       A, B, C,        A, B, C,        A, B, C   ...  ...                               
4/1/1970, 2, 5, 3/1/1971, 6, 5, 2/1/1972, 7, 5   ...  ...
7/1/1970, 3, 5, 7/1/1971, 2, 5, 4/1/1972, 3, 5   ...  ... 
        ,  ,  , 4/1/1971, 8, 5, 5/1/1972, 6, 5   ...  ... continued with this format
        ,  ,  ,         ,  ,  , 7/1/1972, 8, 5
        ,  ,  ,         ,  ,  , 8/1/1972, 11,5

最终,我想得到

        A, B
 4/1/1970, 2
 7/1/1970, 3
 3/1/1971, 6       
 7/1/1971, 2
     .
     .

有没有高手可以帮帮我?先感谢您。

4

2 回答 2

0

你可以textscan用于那个目的

fid = fopen('data.txt');
A = textscan(fid, '%s%f%f%s%f%f%s%f%f', 'Delimiter', ',', 'Headerlines', 1);
fclose(fid);

A是一个细胞。日期读取为字符串 ( %s),而数字读取为双精度 ( %f)。如果缺少数字或日期,您将分别得到 aNaN''in A

于 2012-10-11T08:42:03.763 回答
0

您可以使用 CSVIMPORT。它将 csv 文件读入一个元胞数组或矩阵。

见: http: //www.mathworks.com/matlabcentral/fileexchange/23573-csvimport

如果将其读入矩阵 M,则可以使用两个 for 循环轻松遍历数据。警告,我这里写的是伪代码,所以没有测试。祝你好运。

for row = 1:size(M,1)
    for col = 1:size(M,2)
        if M(row,col) != ""
            % do some work
于 2012-10-11T07:30:37.003 回答