Поэтому в настоящее время я использую «accumarray», чтобы найти средние значения диапазона чисел, которые соответствуют совпадающим идентификаторам. Пример ввода:
ID----Value
1 215
1 336
1 123
2 111
2 246
2 851
Мой текущий код находит невзвешенное среднее вышеперечисленных значений, используя идентификатор в качестве «разделителя», поэтому я не получаю среднее значение для всех значений вместе как одно число, а скорее отдельные результаты только для значений, которые имеют соответствующие идентификаторы . Экс выход:
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
Новый код должен вычислять сумму(значение(i)*вес(i))/сумму(вес) вместо стандартного среднего значения. Спасибо за любую помощь.