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

在matlab中求向量的每n个元素的平均值,matlab,vector,average,Matlab,Vector,Average,我想在Matlab中对向量的每3个值求平均值,然后将平均值分配给生成它的元素 示例: x=[1:12]; y=%The averaging operation; 手术后, y= [2 2 2 5 5 5 8 8 8 11 11 11] 因此,生成的向量大小相同,每3个值的跳跃平均值替换用于生成平均值的值(即,1 2 3替换为三个值的平均值,2)。有没有一种没有循环的方法 我希望这是有道理的 谢谢。我想走这条路: 重塑向量,使其成为3×x矩阵: x=[1:12]; xx=reshape(x,3

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

示例:

x=[1:12];
y=%The averaging operation;
手术后,

y=
[2 2 2 5 5 5 8 8 8 11 11 11]
因此,生成的向量大小相同,每3个值的跳跃平均值替换用于生成平均值的值(即,
1 2 3
替换为三个值的平均值,
2
)。有没有一种没有循环的方法

我希望这是有道理的

谢谢。

我想走这条路:

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

x=[1:12];
xx=reshape(x,3,[]);
% xx is now [1 4 7 10; 2 5 8 11; 3 6 9 12]
之后

yy = sum(xx,1)./size(xx,1)
现在呢

y = reshape(repmat(yy, size(xx,1),1),1,[])
产生你想要的结果


您的参数
3
,表示值的数量,仅在一个位置使用,如果需要,可以很容易地进行修改。

您可以使用以下方法找到每个三个值的平均值:


x=1:12
m=平均值(重塑(x,3,[]);

要复制平均值并重塑形状以匹配原始向量大小,请使用:


y=m(一(3,1),:)%重复行向量3次
y=y(:)';%用线性指数表示阵列的矢量

谢谢,太好了!只是跟进一下。如果你重塑矩阵,但是向量的大小不能被3整除,那么矩阵将如何重塑?
mean
比手动操作要好,使用
ones()
y(:)
索引也是很好的方法。但是我会用
,而不是
,我知道这是一个古老的答案。不过,请考虑按<代码> > < <代码> >替换<代码> <代码>。原因:
不带
用于获取复杂共轭转置,称为。当使用复杂值时,这将是有问题的,并且很难找到。参考文档:非共轭转置运算符
A.
”,在没有共轭的情况下执行转置。也就是说,它不会改变元素虚部的符号。