因此,我目前正在使用'accumarray'来查找与匹配ID相对应的一系列数字的平均值.输入输入:
ID----Value
1 215
1 336
1 123
2 111
2 246
2 851
Run Code Online (Sandbox Code Playgroud)
我当前的代码找到上述值的未加权平均值,使用ID作为'分隔符',这样我就不会将所有值的平均值作为一个数字一起得到,而是仅将具有相应ID的值的单独结果分开.EX输出:
ID----Value
1 224.66
2 402.66
Run Code Online (Sandbox Code Playgroud)
为此,我使用此代码:
[ID, ~, Groups] = unique(StarData2(:,1),'stable');
app = accumarray(Groups, StarData2(:,2), [], @mean);
Run Code Online (Sandbox Code Playgroud)
使用StarData2作为函数的输入.这对我的目的来说是完美的,直到现在,我需要知道是否可以使用accumarray给我一个加权平均值,这样app中的每个点(在找到平均值之前)都可以赋予权重或@mean可以被替换为可以实现此目的的功能.新输入将如下所示:
ID----Value----Weight
1 215 12
1 336 17
1 123 11
2 111 6
2 246 20
2 851 18
Run Code Online (Sandbox Code Playgroud)
新代码必须求和(val(i)*weight(i))/ sum(weight)而不仅仅是标准均值.谢谢你的帮助.