假设我有以下矩阵
a =
76 NaN 122 NaN
78 NaN 123 NaN84 NaN 124 54
77 NaN 126 58
82 45 129 62
90 50 135 45
76 63 133 66
79 52 122 49
88 56 140 24
有没有办法计算每列的指数移动平均线,忽略第一个NaN值?例如,如果我使用3天的指数因子,我希望得到一个矩阵,第一列中有2个NaN值,第2列中有6个NaN值,第3列中有2个NaN值,第3列中有2个NaN值。第四栏。有什么建议吗?提前谢谢
答案 0 :(得分:1)
只需在整个矩阵上使用滤波器,它将根据需要通过NaN。如果你想用NaN“感染”边缘值,在顶部边缘添加一些额外的东西,然后修剪结果:
kernel = [1 1 1].'; % Any 3-element kernel, as column vector
a2 = [repmat(NaN, 2, 4); a]; % Add extra NaN's at the start, to avoid partial answers
xtemp = filter(kernel, 1, a2);
x = xtemp(3:end, :);