フィルターのクリア

How can I calculate a weighted mean in Matlab?

373 ビュー (過去 30 日間)
Jan-Erik
Jan-Erik 2013 年 2 月 18 日
回答済み: Micke Malmström 2019 年 10 月 3 日
I have a 180-by-360 matrix of (surface temperature) values and I want to calculate a weighted average of all values given in this matrix. However, I need to weight these values with respect to latitude. Is there a way to calculate a weighted mean in Matlab? Please help me.
Thanks in advance for any help!
- Jan-Erik
  1 件のコメント
shelley
shelley 2015 年 10 月 20 日
Normally taking dim 1 mean of some, say 3x5 matrix A, can be seen as w=[1/3 1/3 1/3], and w*A returns you the answer.
Now if we want to take dim 1 weighted mean of A, we can set our weight in w = [1/6 2/3 1/6], then take w*A, which should return you a 1x5 row vector.

サインインしてコメントする。

採用された回答

Matt J
Matt J 2013 年 2 月 18 日
編集済み: Matt J 2013 年 2 月 18 日
If A is your 180x360 matrix and W is a 180x1 vector of weights for the latitudes, do
weighted_mean = mean(W.'*A,2);
  6 件のコメント
Jason Garcia
Jason Garcia 2014 年 1 月 28 日
weighted_mean = mean(bsxfun(@times,A,w'),2)
Matt J
Matt J 2014 年 1 月 28 日
weighted_mean = mean(bsxfun(@times,A,w'),2)
If that's what the OP intended, it would be more efficient to do
weighted_mean=w'.*mean(A,2);

サインインしてコメントする。

その他の回答 (2 件)

John Hock
John Hock 2019 年 4 月 28 日
Hi Everyone
I just want to ask one thing that if i have 2d array 2*4 and want to get weighted average with vector of 1*4
i want first row of A get multiplied with B and give weighted average as an output similarly for next row.
Please help
  2 件のコメント
Image Analyst
Image Analyst 2019 年 4 月 28 日
Try
B = repmat(B, [2, 1]) % Make B 2*4
weightedMeans = sum(A.*B, 1); % Get weighted means within a row going across columns.
stelios loizidis
stelios loizidis 2019 年 5 月 27 日
Hello,
I have the following questuin: 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 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?

サインインしてコメントする。


Micke Malmström
Micke Malmström 2019 年 10 月 3 日

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by