accumarray
dans Matlab est incroyable, et je l'utilise souvent. J'ai un problème où la fonction que je voudrais passer à accumarray
est une moyenne pondérée. c'est-à-dire qu'il prend deux vecteurs, pas un seul vecteur. Cela semble être un cas d'utilisation non pris en charge par accumarray
.Utiliser accumarray pour une moyenne pondérée?
Est-ce que je comprends bien?
Tenir compte, la fonction weightedAverage
function [ result ] = weightedMean(values, weights)
result = sum(values(:).*weights(:))/sum(weights(:));
end
Maintenant, nous voulons exécuter accumarray
comme suit:
subs = [1 1 1 2 2 3 3 3];
vals = [1 2 3 4 5 6 6 7];
weights = [3 2 1 9 1 9 9 9];
accumarray(subs, [vals;weights],[], @weightedMean)
mais revient Matlab:
Error using accumarray
Second input VAL must be a vector with one element for each row in SUBS, or a scalar.
Je ne sais pas. Pouvez-vous nous donner un exemple? Peut-être que le code que vous avez essayé? – beaker