数组的平均值
问题描述:
我有一个有4行和400,000列的矩阵。我需要获得连续4行的平均值。也就是说,第1行到第4行,第5行到第8行的平均值等。数组的平均值
4列应该保持原样。我知道这可能是幼儿园水平问题,但我很欣赏在Matlab中编写程序的任何提示;我有一些编写Matlab程序的经验。
数据的一个例子可以如下:
[1 2 3 2;
5 6 7 2;
9 6 7 6;
5 2 3 2;
9 8 7 6;
6 5 4 3;
4 3 2 1;
9 8 7 6]
我想要的结果为:
[5 4 5 3],[7 6 5 4]
答
这是不完全清楚,我的数据是如何奠定了,所以我我会给你一个解决方案,我认为你的意思。
假设你有
a = [
1 2 3 4 %# row 1
2 3 4 5
3 4 5 6
4 5 6 7 %# row 4
5 6 7 8 %# row 5
...
]; %# row m
,并且希望通过4平均下来行1列,5至8等 你可以做到这一点只需
averages = reshape(mean(reshape(a,4,4,[])),[],4)
故障:
A = reshape(a,4,4,[])
将矩阵中的数据重新排列为3D数组。该阵列的每个3D“层”都是一个4x4
矩阵。
B = mean(A)
这需要沿列的方向(方向1
)。请阅读help mean
了解更多信息。
C = reshape(B,[],4)
该重新排列平均的阵列回Nx4
矩阵,其中N=m/4
。
社区通常期望您发布一些代码,演示您已经尝试过的内容,或许需要帮助更正部分代码。您可以通过点击上面的“编辑”链接来编辑您的问题。 – razlebe 2012-08-17 07:42:21
现在是什么? 4行400k列或4列和400k行?看起来像后者... – 2012-08-17 07:55:42