数组的平均值

时间:2012-08-17 07:19:56

标签: matlab average

我有一个包含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]

1 个答案:

答案 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