我应该如何在MATLAB中执行此分级和平均?

时间:2009-11-24 00:28:57

标签: matlab mean binning

我正在尝试执行合并平均值。我正在使用代码:

Avg = mean(reshape(a,300,144,27));
AvgF = squeeze(Avg);

最后一行摆脱了单身尺寸。

可以看出,我平均得分超过300分。它的工作正常,除非我的总点数不等于144 * 300的倍数。

即使总点数不是144 * 300的倍数,有没有办法让这个分档平均值工作?

编辑:很抱歉,如果我的问题听起来很混乱。澄清...

我有一个包含43200行和27列的文件。我通过一次分组300行来平均,这意味着最后我留下了一个大小 144-by-27 的矩阵。

我上面编写的代码只有在我有43200行时才有效。在某些情况下,我有43199,43194等。当我的总行数是300(bin大小)的倍数时,reshape函数可以工作。当我的总行数不是300的倍数时,有没有办法让这个分箱平均值工作?

1 个答案:

答案 0 :(得分:2)

我想我现在更好地理解这个问题......

如果a是从您的文件中读取的数据(大小 N-by-27 ,其中N理想情况下为4300),那么我认为您需要执行以下操作:

nRemove = rem(size(a,1),300);  %# Find the number of points to remove
a = a(1:end-nRemove,:);        %# Trim points to make an even multiple of 300
Avg = mean(reshape(a,300,[],27));
AvgF = squeeze(Avg);

这将删除点,以使a中的行数为300的倍数。然后您的重塑和平均值应该有效。请注意,我在RESHAPE的调用中使用[],这样可以确定列数应该是多少。