这是一个计算数组的加权平均值的MATLAB程序:

function weightedAverage = calculateWeightedAverage(data, numBins)
% data: 输入的数组
% numBins: 将最小值到最大值的区间划分为多少个小块

% 计算数据的最小值和最大值
minValue = min(data);
maxValue = max(data);

% 计算每个小块的宽度
binWidth = (maxValue - minValue) / numBins;

% 初始化小块计数器和加权计数器
binCounts = zeros(1, numBins);
weightedCounts = zeros(1, numBins);

% 计算每个数据所在的小块索引
binIndices = ceil((data - minValue) / binWidth);

% 统计数据落在每个小块的数量
for i = 1:length(data)
    binCounts(binIndices(i)) = binCounts(binIndices(i)) + 1;
end

% 计算每个小块的权重
weights = binCounts / length(data);

% 计算加权平均值
weightedAverage = sum(data .* weights);

end

使用示例:

% 生成一组随机数据
data = rand(1, 1000) * 100;

% 计算加权平均值,将数据划分为10个小块
weightedAverage = calculateWeightedAverage(data, 10);

disp("加权平均值为:" + weightedAverage);

希望对你有帮助


原文地址: https://www.cveoy.top/t/topic/iuxs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录