MATLAB-如何使用迭代方式从文本文件中读取某些列

时间:2012-10-11 07:17:17

标签: matlab

我想阅读一个有不规则矩阵的csv文件。 我需要读的是迭代方式的A列(Dates)和B列(Measurements)。 以下是一个示例格式。

       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
     .
     .

有专家可以帮助我吗? 先感谢您。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)。如果缺少数字或日期,则分别在NaN中获得''A