在matlab中平均向量的每n个元素

gtd*_*vel 4 matlab average vector

我想在Matlab中平均一个向量的每3个值,然后将平均值分配给产生它的元素.

例子:

x=[1:12];
y=%The averaging operation;
Run Code Online (Sandbox Code Playgroud)

手术后

y=
[2 2 2 5 5 5 8 8 8 11 11 11]
Run Code Online (Sandbox Code Playgroud)

因此,产生的矢量具有相同的大小,并且每3个值的跳跃平均值替换用于产生平均值的值(即1 2 3,由三个值的平均值替换2 2 2).有没有循环的方法吗?

我希望这是有道理的.

谢谢.

glg*_*lgl 9

我会这样走:

重塑矢量,使其为3×x矩阵:

x=[1:12];
xx=reshape(x,3,[]);
% xx is now [1 4 7 10; 2 5 8 11; 3 6 9 12]
Run Code Online (Sandbox Code Playgroud)

之后

yy = sum(xx,1)./size(xx,1)
Run Code Online (Sandbox Code Playgroud)

现在

y = reshape(repmat(yy, size(xx,1),1),1,[])
Run Code Online (Sandbox Code Playgroud)

产生你想要的结果.

您的参数3(表示值的数量)仅在一个地方使用,并且可以根据需要轻松修改.