请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 31266|回复: 22

[程序设计] MATLAB丨绘制引导气流回归场(风场矢量)并进行显著性检验(含代码和数据)

[复制链接]

新浪微博达人勋

发表于 2020-8-2 15:55:36 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 Chwithin 于 2020-8-6 10:12 编辑

MATLAB版本:MATLAB R2019a

数据:
NCEP-DOE Reanalysis 2: Pressure Level 1979年1月-2020年6月 2.5°× 2.5° 17层 纬向风(uwnd)和经向风(vwnd)
原网址下载:https://psl.noaa.gov/data/gridded/data.ncep.reanalysis2.pressure.html
百度云下载:https://pan.baidu.com/s/11DLkPuH2ZD8SsNYmXzujMQ#list/path=%2F
(由于原始数据 uwnd.mon.mean.ncvwnd.mon.mean.nc 比较大,所以就没有放到附件里面了,可以在上面的链接直接下载;或者用处理后的 data.mat 也可以直接画图)

引导气流的计算公式:
参考世界气象组织《Global Guide to Tropical Cyclone Forecasting》(2017)中的第90页

                               
登录/注册后可看大图


                               
登录/注册后可看大图


附件预览:

                               
登录/注册后可看大图


                               
登录/注册后可看大图


代码预览(详细注释):

                               
登录/注册后可看大图


                               
登录/注册后可看大图


附件: quiver_Chwithin.zip (36.32 MB, 下载次数: 1630)

评分

参与人数 2金钱 +30 贡献 +2 收起 理由
四叶 + 10 + 1 很给力!
神奇小宝包 + 20 + 1 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2020-11-19 21:48:53 | 显示全部楼层
yebugu 发表于 2020-11-15 21:43
老师你好,谢谢你的分享。有些问题不太懂。Line115-116能不能麻烦稍微解释下哈。
1.r_u与r_v指的是p值?  ...

r_u和r_v是每个格点上的风场和热带气旋频数之间的相关系数(Line94-101)。显著区域的检验一般看大体形式就好了,细微的散点是否被包括进去应该影响不大。用m_scatter画出来的话可能有很多斑点的感觉,不能连成一片,不一定好看,不过可以试着画来看看。
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2020-8-3 10:01:08 | 显示全部楼层
不太理解为什么要乘纬度的余弦,如果88°N的纬向风距平比较大,比如是10m/s。那乘cos(88°)以后画在图上缺只有0.3m/s的大小。 如果赤道上纬向风距平是1m/s,乘cos(0)以后还是1m/s。这样在图上看岂不是赤道上实际1m/s的箭头比88°N上10m/s的箭头还要长吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-8-4 00:04:27 | 显示全部楼层
本帖最后由 Chwithin 于 2020-8-4 00:11 编辑
灰色节能君 发表于 2020-8-3 10:01
不太理解为什么要乘纬度的余弦,如果88°N的纬向风距平比较大,比如是10m/s。那乘cos(88°)以后画在图上 ...


                               
登录/注册后可看大图

我的理解是,我们画图前在matlab中的数据是一个矩阵,类似于一个平面直角坐标系;而在m_map中也许是要先把数据转换(即乘以余弦)基于球坐标系,之后再通过不同的投影方式画图。

平时我们在画温度、湿度、位势高度之类的物理量时,这些物理量都是一维的点,不需要转换,所以我们没有留意到这个问题;而现在画的风速矢量是一条二维的线,所以就需要转换一下。

如果我们选用米勒投影,就可以画出我们一般想要呈现的效果,即10m/s风矢量的长度,在赤道画出来是1cm,在20°N画出来也是1cm(因为米勒投影的结果是各个纬圈的长度相等)。

如果选用别的投影方式,则风矢量在各个纬度之间画出来的长度会是不一样的,这里的不一样是投影方式所导致的(即各个纬圈所呈现的长度是不一样的)。

你可以再看看下面的图片和代码,看能否理解。注:在不同的投影方式中,图中所画的风矢量的数值大小是一样的。

                               
登录/注册后可看大图

画图代码: test.m (3.78 KB, 下载次数: 16)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-8-4 09:25:58 | 显示全部楼层
Chwithin 发表于 2020-8-4 00:04
我的理解是,我们画图前在matlab中的数据是一个矩阵,类似于一个平面直角坐标系;而在m_map中也许是要 ...

确实,我试了一下,米勒投影没问题得乘余弦值才对,箭头标注也是对的。第三个投影球坐标系我发现如果不乘余弦值箭头是一样长的,那可能真的是因为mmap用的是球坐标系。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-10-27 17:21:52 | 显示全部楼层
所以除了Miller投影之外,其他投影都需要乘以cosd(纬度)吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-11-7 17:17:28 | 显示全部楼层
姚志雄博士在科学网上的博文(http://blog.sciencenet.cn/blog-419857-624284.html)写的确实很对,我之前试图把箭头图例尝试放在左上角和右下角(纬度不相同),结果两个箭头差距十分大,后来根据这个博客修改之后,同样大小数据显示的箭头也一样大了,楼主程序写的非常棒给你点赞
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-11-10 19:53:48 | 显示全部楼层
挺好的博文,学习了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-11-15 21:43:03 | 显示全部楼层
老师你好,谢谢你的分享。有些问题不太懂。Line115-116能不能麻烦稍微解释下哈。
1.r_u与r_v指的是p值? 应该与X和Y维度一样,不知道怎么定义的。
2. 显著区域的m_counterf 是生成等高线的,单独p<0.05的散点会不会不被包括。m_scatter是不是更好点
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-11-20 11:19:22 | 显示全部楼层
Chwithin 发表于 2020-11-19 21:48
r_u和r_v是每个格点上的风场和热带气旋频数之间的相关系数(Line94-101)。显著区域的检验一般看大体形式 ...

谢谢老师的答疑解惑,祝科研似锦。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表