如何计算阵列单元阵列的加权平均值?
在我之前的问题的概括中,如何对单元格元素(即并且将保留数组本身)的加权平均值执行?
我首先修改gnovice的答案,如下所示:
dim = ndims(c{1}); %# Get the number of dimensions for your arrays
M = cat(dim+1,c{:}); %# Convert to a (dim+1)-dimensional matrix
meanArray = sum(M.*weigth,dim+1)./sum(weigth,dim+1); %# Get the weighted mean across arrays
在此之前,确保weight
具有正确的形状。我认为需要照顾的三个案例是
weight = 1(或任何常数)=>返回通常的平均值
numel(weight)== length(c)=> weight是每个单元格c {n}(但对于固定n的每个数组元素都相等)
numel(weight)== numel(cell2mat(c))=>每个数组元素都有自己的权重...
案例一很容易,案例3不太可能发生,所以此刻我对案例2感兴趣:如何将权重转换为数组,使得M.*weight
在上面的总和中具有正确的维度?当然,也可以看到显示另一种获得加权平均值的方法的答案。
编辑事实上,如果权重与c具有相同的结构,案例3甚至比案例1更为微不足道(重言式,道歉)。
这是我对案例2的意思的一个例子:
c = { [1 2 3; 1 2 3], [4 8 3; 4 2 6] };
weight = [ 2, 1 ];
应该回来
meanArray = [ 2 4 3; 2 2 4 ]
(例如,对于第一个元素(2 * 1 + 1 * 4)/(2 + 1)= 2)
没有找到相关结果
已邀请:
1 个回复
屠创氓读叔