我正在尝试执行合并平均值。我正在使用代码:
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的倍数时,有没有办法让这个分箱平均值工作?
答案 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的调用中使用[]
,这样可以确定列数应该是多少。