【发布时间】:2013-06-12 00:34:20
【问题描述】:
使用 MATLAB,如何找到矩阵特定列的 3 天移动平均线并将移动平均线附加到该矩阵?我正在尝试计算矩阵底部到顶部的 3 天移动平均线。我已经提供了我的代码:
给定以下矩阵 a 和掩码:
a = [1,2,3;4,5,6;7,8,9;10,11,12;13,14,15;16,17,18];
mask = ones(3,1);
我已尝试实施 conv 命令,但收到错误消息。这是我一直试图在矩阵 a 的第二列使用的 conv 命令:
a(:,4) = conv(a(:,2),mask,'valid');
我想要的输出在以下矩阵中给出:
desiredOutput = [1,2,3,5;4,5,6,8;7,8,9,11;10,11,12,14;13,14,15,0;16,17,18,0;]
如果您有任何建议,我将不胜感激。谢谢!
【问题讨论】:
-
[1 1 1]是移动平均的卷积核吗? -
是的,没错。我认为这是在调用 conv 时表示 3 天移动平均线的方式。
-
您想要的输出看起来不像移动平均线。您是如何获得这些值的?
-
对于矩阵 a 的第 2 列,我按如下方式计算 3 天移动平均线,并将结果放在矩阵 a 的第 4 列中(我将矩阵 a 重命名为“desiredOutput”只是为了说明)。 17、14、11的3天平均值为14; 14、11、8的3天平均值为11; 11、8、5的3天平均值为8; 8、5、2 的 3 天平均值为 5。第 4 列的底部 2 行没有值,因为 3 天移动平均线的计算从底部开始。 “有效”输出至少要到 17、14 和 11 点才会显示。希望这有意义吗?
标签: matlab matrix append convolution moving-average