所以我目前正在使用“accumarray”来查找与匹配 ID 相对应的一系列数字的平均值。防爆输入:
ID----Value
1 215
1 336
1 123
2 111
2 246
2 851
我当前的代码使用 ID 作为“分隔符”找到上述值的未加权平均值,这样我就不会将所有值的平均值作为一个数字,而是仅将具有相应 ID 的值的结果分开. 前输出:
ID----Value
1 224.66
2 402.66
为此,我正在使用以下代码:
[ID, ~, Groups] = unique(StarData2(:,1),'stable');
app = accumarray(Groups, StarData2(:,2), [], @mean);
StarData2 是函数的输入。到目前为止,这对我的目的来说非常有效,我需要知道是否可以让 accumarray 给我一个加权平均值,以便可以为应用程序中的每个点(在找到平均值之前)分配一个权重,或者 @mean 可以替换为可以实现此目的的功能。新输入将如下所示:
ID----Value----Weight
1 215 12
1 336 17
1 123 11
2 111 6
2 246 20
2 851 18
新代码必须执行 sum(val(i)*weight(i))/sum(weight) 而不仅仅是标准平均值。感谢您的任何帮助。