我有一个包含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]
答案 0 :(得分:2)
我不完全清楚你的数据是如何布局的,所以我会给你一个我认为你的意思的解决方案。
假设你有
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
并且您希望平均值排在第1行到第4行,第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
。