Performance 用nan值计算矩阵中的指数移动平均值

Performance 用nan值计算矩阵中的指数移动平均值,performance,matlab,matrix,moving-average,Performance,Matlab,Matrix,Moving Average,假设我有下面的矩阵 a= 76南122南 78南123南 84南124 54 77南126 58 82 45 129 62 905013545 76 63 133 66 795212249 885614024 是否有任何方法可以计算每列的指数移动平均值,而不考虑第一个NaN值?例如,如果我使用3天指数因子,我希望得到一个矩阵,第一列中有2个NaN值,第二列中有6个NaN值,第三列中有2个NaN值,第四列中有4个NaN值。有什么建议吗?提前感谢您只需在整个矩阵上使用过滤器,它将根据需要通过NaN。

假设我有下面的矩阵

a=

76南122南

78南123南

84南124 54

77南126 58

82 45 129 62

905013545

76 63 133 66

795212249

885614024


是否有任何方法可以计算每列的指数移动平均值,而不考虑第一个NaN值?例如,如果我使用3天指数因子,我希望得到一个矩阵,第一列中有2个NaN值,第二列中有6个NaN值,第三列中有2个NaN值,第四列中有4个NaN值。有什么建议吗?提前感谢您

只需在整个矩阵上使用过滤器,它将根据需要通过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, :);

谢谢我按照你的答案,我得到了我想要的NaN,但最终的矩阵返回a的值之和。有什么方法可以代替计算指数移动平均值吗?我只是使用了一个值[1]的样本过滤器内核,它可以添加值。我打算用您想要的任何3元素过滤器内核替换该内核。我不确定你是如何定义指数移动平均的,所以我没有为你写一个内核。