900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Matlab求加权平均数 MATLAB Accumarray加权平均值

Matlab求加权平均数 MATLAB Accumarray加权平均值

时间:2020-11-03 14:15:05

相关推荐

Matlab求加权平均数 MATLAB Accumarray加权平均值

您可以将行索引用作“vals”(

second input到

accumarray)并定义您自己的函数,该函数对数据组执行加权平均值:

Weights = data(:,3); Vals = data(:,2); % pick your columns here

WeightedMeanFcn = @(ii) sum(Vals(ii).*Weights(ii))/sum(Weights(ii));

wmeans = accumarray(Groups, 1:numel(Groups), [], WeightedMeanFcn)

示范

从数据(带权重的新输入)和您的唯一命令开始:

data = [1,215,12; 1,336,17; 1,123,11; 2,111,6; 2,246,20; 2,851,18];

[ID, ~, Groups] = unique(data(:,1),'stable');

accumarray的用法如下(每次更改数据时重新定义WeightedMeanFcn!):

>> Weights = data(:,3); Vals = data(:,2); % pick your columns here

>> WeightedMeanFcn = @(ii) sum(Vals(ii).*Weights(ii))/sum(Weights(ii));

>> app = accumarray(Groups, 1:numel(Groups), [], WeightedMeanFcn)

app =

241.1250

475.0909

使用第一组手动检查:

ig = 1;

sum(data(Groups==ig,2).*data(Groups==ig,3))/sum(data(Groups==ig,3))

ans =

241.1250

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。