This function calculates the weighted arithmetic, harmonic, or geometric mean of a set of input value arrays and weight arrays.
There are really two modes of operation:
1) If there is only one input value array and weight array, the weighted mean is calculated across all elements in this array. The user can specify which dimension to calculate the weighted mean across, or even specify 'all' in which case the arrays are flattened and only a scalar value is returned.
2) If there are multiple input value arrays and weight arrays, the element-by-element weighted mean is output across the N input value and weight arrays.
>> scalarMean = weighted_mean('harmonic',[1 2 3],[0.2, 0.3, 0.2]); %the output is single scalar value
>> arrayMean = weighted_mean('arithmetic',[1 2 3],[0.2, 0.3, 0.2],1); %the output is a vector of size (3x1)
>> arrayMean = weighted_mean('geometric',[1,2,3],[4,5,6],[0.2,0.3,0.2],[0.2,0.1,0.1]); %the output is a vector of size (1x3)