138 views (last 30 days)

Show older comments

Dear all, I hope all is well. I am working with a 2D Matrix that is 376x481. I would like to calculate the weighted average of this matrix for each row, such that the desired output should be sized 376 X 1. I would greatly appreciate any help with this problem.

Thanks.

James Tursa
on 7 Aug 2018

E.g.,

w = 1x481 vector of weights

M = your 376x481 matrix of values

result = sum(M.*w,2) / sum(w);

or

sum(bsxfun(@times,M,w),2) / sum(w);

Thorsten
on 8 Aug 2018

X = rand(376, 481);

w = rand(1, size(X, 2));

Xw = bsxfun(@times, X, w);

m = mean(Xw, 2);

stelios loizidis
on 23 May 2019

Hello,

I saw the commands you wrote above and I have the following question; I have a matrix e.g

[ 5 3 3 1

3 4 5 2

5 0 0 0

3 4 5 2 ]

For this matrix I have to make a weighted average for each row. That is [5+3+(4/5)*(3+1)] / 4 =16/5. Also, if there is only one number and the rest zero (row 3) the weighted average should be [5+0+0+0]/ 1 =5 and the end we choose the largest weight average. How does this work?

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!