我想在 Matlab 中计算示踪剂字段的平均值,但构成该字段的单元格大小不同。例如,我的跟踪器字段是:
T =
1 3 5 8
2 1 4 3
2 1 9 1
20 8 3 1
而且我还有 2 个字段,dx
它们dy
描述了组成的单元格的大小T
。
dx =
1 1 2 3
1 1 2 3
1 1 2 3
1 1 2 3
和
dy =
3 3 3 3
3 3 3 3
2 2 2 2
1 1 1 1
因此,直观地dx
告诉dy
我,跟踪字段的左下角T
应该对计算 的平均值的贡献最小T
,而右上角的贡献应该最大。
我最初尝试过mean(mean(T))
,但这显然超过了 等的左下角的重要性T
。经过一番调查后,我想我会彻底并手动计算平均值,包括权重,使用类似这样的东西:
T_mean_i = sum(T*dx)./sum(dx)
dy
与y 方向上的单元格宽度类似。但是,我不确定如何实现这一点。
编辑:这是我的问题的更多细节。
我的网格是 260*380 单元格,所以size(dy) = size(dx) = 260-by-380
. 示踪剂场是通过将表面通量场除以sflux
类似大小的盐度场来计算的salt
。因此,size(sflux) = size(salt) = 260-by-380-by-1000
,其中时间维度有长度1000
。
我想找到sflux(:,:)./salt(:,:,ii)
包括单元格宽度字段的权重的平均值,dx
并且dy
,在每个时间步ii
。(我不会使用 for 循环来做到这一点,别担心!!)
我正在做的事情是否正确?还是我想错了?请随时要求澄清。
干杯!