在创建新列matlab时迭代通过列

时间:2016-07-08 13:41:41

标签: matlab matrix iterator

我有一个小数据集,并希望构建一个允许我在一个列中运行的迭代循环(在此阶段循环对我来说更直观)并使用结果在同一个表中构造一个新列。

我的tallard.txt文件:

Date - precipitation
1/1/2012 - 4
1/2/2012 - 1
1/3/2012 - 3
1/4/2012 - 0
1/5/2012 - 1
1/6/2012 - 0

我需要将每日降水量加起来并分配到中位数日期,这样我就可以确定降雨事件(多天)的降水量,因此建议的列最终会像这样:

Date - precipitation
1/1/2012 - 4 - NaN  % or 0
1/2/2012 - 1 - 8    % (4+3+1)
1/3/2012 - 3 - NaN  % or 0 or original value if that's easier
1/4/2012 - 0 - 0
1/5/2012 - 1 - 1
1/6/2012 - 0 - 0

这就是我到目前为止所做的事情:

clear all
load tallard.txt;
X = 2;  % columns
Y = 11416;  % rows
counter = 2;

for i = 1:Y
    if tallard(counter, 2) >= 1
        tallard(counter:Y,2) = tallard(counter,2)+ tallard(counter-1,6);
    else
        tallard(counter:Y,2) = tallard(counter,2);
    end
    counter = counter+1;
end

但这仅适用于连续2个降水日,因为这是3天或更长时间,但这并没有成功。数据集包含11000天。

1 个答案:

答案 0 :(得分:0)

我不知道我是否理解你的问题。但这是我认为你想要的东西。

'y[0-9]{2,4}m[0-9]{1,2}d[0-9]{1,2}\w*'