wmean文档

wmean函数计算加权平均或加权平均值。

回到气候数据工具的内容

内容

语法

M = wmean(权重)M = wmean(…,“所有”)M = wmean(…,“暗”,暗)M = wmean (…,“nanflag”)

描述

M = wmean(权重)返回元素的加权平均数一个沿着第一个数组维度的大小不等于1。的尺寸一个必须匹配的尺寸吗权重

M = wmean(…,“所有”)在所有元素计算加权平均数。(需要Matlab R2018b或晚。)

M = wmean(…,“暗”,暗)返回的意思是沿着维度暗淡。例如,如果一个是一个矩阵,然后呢wmean(重量,‘暗’,2)是一个列向量包含每一行的加权平均数。

M = wmean (…,“nanflag”)指定是否包括省略值计算的任何以前的语法。wmean(重量,“includenan”)包括所有在计算值wmean(重量,“omitnan”)忽略了它们。

示例1:一维数组

这是一组值y和他们的意思是没有任何特殊的权重:

y = 0:2:10意味着(y)
y =列1到5 0 2.00 4.00 6.00 10.00 8.00列6 ans = 5.00

上面的回答是相当于使用wmean中每一个值相等的权重y:

重量= [1 1 1 1 1 1];wmean (y,重量)
ans = 5.00

但也许你做的计算值接近于零加权最严重,是这样的:

重量= logspace (1 0 6) wmean (y,重量)
体重10.00 6.31 3.98 2.51 1.58 = 1到5列列6 1.00 ans = 2.61

示例2:二维矩阵

这是一个二维矩阵一个,就像在示例1,我们将开始全面使用相等的权重:

%一个数据矩阵:一个= [0 1 2 4 2 3 4 5 6 6 7 8]% =重量无处不在:w = 1(大小(A)) wmean (w),
= 0 1.00 2.00 2.00 3.00 4.00 4.00 5.00 6.00 6.00 7.00 8.00 w = 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 ans = 3.00 4.00 5.00

如果你需要行的列的操作一个2,指定尺寸如下:

wmean (w,“暗”,2)
ans = 1.00 3.00 5.00 7.00

后如果你在家里,你可以向你自己证明上面的答案,所有的重量是相等的,给出了相同的答案意思是(2)

问题:我们如何的加权平均数一个结果等于第二行一个吗?

答:我能想到的两个方面。一种方法是设置所有的权重为零,除了第2行。或者,我们可以把这些行他们的方式,而不是设置权重的第二行一些疯狂的大量:

w(2) = 1与e100 wmean (w),
w = 1.00 1.00 1.00 10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104.00 10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104.00 10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104.00 1.00 1.00 1.00 1.00 1.00 1.00 ans = 2.00 3.00 4.00

如果一个元素一个吗?

(2,2)=南wmean (w),
= 0 1.00 2.00 2.00南4.00 4.00 5.00 6.00 6.00 7.00 4.00 8.00 ans = 2.00南

我们可以忽略缺失的条目,而不是把整个解决方案这一列:

wmean (w,“omitnan”)
ans = 2.00 4.33 4.00

示例3:面积加权

这里是海洋表面温度的地图使用一些示例数据,CDT:

%加载示例数据:负载global_sst%从开尔文转换成摄氏度:海温(sst - 273.15;%绘制太平洋:imagescn cmocean(经度、纬度、sst)% colormapcb = colorbar;ylabel (cb、“海洋表面温度\ circC”)

初学者可能会试图获得全球平均海平面温度的未加权的意思是所有的风场价值观:

意思是(sst,“所有”,“omitnan”)
ans = 13.84

然而,我们必须记得,对海温网格对应等距的纬度和经度,这是所有相等的区域。行经度收敛在两极,所以一个area-averaged海温需要衡量权重的意思是每个网格单元。

为此,打开纬度数组转化为网格和使用cdtarea每个网格的面积。这里是每个网格单元的区域:

%将纬度,经度数组为网格:(经度、纬度)= meshgrid(经度、纬度);%获得每个网格单元的面积:一个= cdtarea(纬度,经度,平方公里的);imagescn(经度、纬度)边界%国界cb = colorbar;ylabel (cb、“网格单元面积(公里^ 2)”)

与网格单元区域一个,我们现在可以得到area-averaged海洋表面温度wmean:

wmean (sst,“所有”,“omitnan”)
ans = 18.45

这差别很大从13.8度值我们获得使用未加权的意思!这并不奇怪:“减重”是指在这种情况下其实是一个误称,因为给予同等重量平均SST中的每个网格单元计算,我们实际上是给小电网过度的体重,冷网格细胞两极附近。所以也就不足为奇了,“减重”意味着SST价值低于area-averaged SST价值。

作者信息

这个函数的一部分气候数据为Matlab工具箱。的功能和支持文档是乍得a·格林写的金宝app德州大学奥斯丁分校。