gpt4 book ai didi

matlab - 使用 MATLAB,如何找到移动平均线?

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:51 26 4
gpt4 key购买 nike

如何使用 MATLAB 找到矩阵特定列的 3 天移动平均值并将移动平均值 append 到该矩阵?我正在尝试计算从矩阵底部到顶部的 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;]

如果您有任何建议,我将不胜感激。谢谢!

最佳答案

一般来说,如果您显示错误,将会有所帮助。在这种情况下,您做错了两件事:

首先你的卷积需要除以三(或者移动平均线的长度)

c = conv(a(:,2),mask,'valid')/3

c =

5
8
11
14

其次,注意c 的大小。您不能只将 c 放入 a 中。获得移动平均线的典型方法是使用 same:

a(:,4) = conv(a(:,2),mask,'same')/3

a =

1.0000 2.0000 3.0000 2.3333
4.0000 5.0000 6.0000 5.0000
7.0000 8.0000 9.0000 8.0000
10.0000 11.0000 12.0000 11.0000
13.0000 14.0000 15.0000 14.0000
16.0000 17.0000 18.0000 10.3333

但这看起来不像你想要的。

相反,您被迫使用几行:

c = conv(a(:,2),mask,'valid')/3;
a(1:length(c),4) = c

a =

1 2 3 5
4 5 6 8
7 8 9 11
10 11 12 14
13 14 15 0
16 17 18 0

关于matlab - 使用 MATLAB,如何找到移动平均线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com