爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 183172|回复: 214

[源程序] NCEP风场求散度和涡度

  [复制链接]

新浪微博达人勋

发表于 2012-4-23 20:41:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 wlzhongouc 于 2017-5-28 02:05 编辑

闲着,继续玩,Matlab中有直接求散度和涡度的函数,散度命令:divergence,涡度命令:curl,以下为用NCEP风场数据做的北极上空的散度场和涡度场图:
NCEP_UV.jpg
上传图片的格式限制,就传了jpg的,看起来不是很好,有问题欢迎指出:)
代码见附件中 NCEP_wind.m (252.79 KB, 下载次数: 465)

评分

参与人数 3金钱 +36 贡献 +7 体力 +100 收起 理由
Aires + 20 + 2 学长必顶~
膘膘 + 6
mofangbao + 10 + 5 + 100 又见好帖

查看全部评分

本帖被以下淘专辑推荐:

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

新浪微博达人勋

发表于 2012-10-28 10:39:14 | 显示全部楼层
本帖最后由 ShaG 于 2012-10-28 10:43 编辑

哈哈又见楼主,不过我觉气象上计算涡度和散度的时候是不可以用MATLAB自带的函数的,应该要把地球的曲率也考虑进去

% calculate curvature vorticity
R=6.3781e6; % earth's radius
[dx, ~]=gradient(longitude);
dx=dx*pi./180;
[~, dy]=gradient(latitude);
dy=dy*pi./180;
dy(1, :)=NaN;  
dy(73, :)=NaN; % 由于使用差分的缘故,把dy的头尾元素设定为缺测
[dv, ~]=gradient(v);
[~, du]=gradient(u.*cos(latitude*pi./180));
curlz=(dv./dx-du./dy)./(R.*cos(latitude*pi./180));

最后画的图

最后画的图

评分

参与人数 1金钱 +20 贡献 +2 收起 理由
wlzhongouc + 20 + 2 赞一个!

查看全部评分

密码修改失败请联系微信:mofangbao
回复 支持 7 反对 0

使用道具 举报

新浪微博达人勋

发表于 2012-5-8 11:00:40 | 显示全部楼层

很不错!你的程序我没看,但你的量级肯定不对,一般是1e-8 - 1e-5附近吧,具体记不清啦!
估计你是直接用lon lat做的,实际上应该用距离,curl等函数一样!
如下:
%%-------calculate global wind curl using tau data;
%------- 0.2 lat*1/3 lon----------
[m,n]=size(ua);
R0=6371004;
pi=3.1415926;
  %---calculate deltx delty dx dy,and x y--units m actual location
  deltx(1:m)=2*pi*R0*cosd(lat)/360*mean(diff(lon));  % x lon
  delty(1:n)=2*pi*R0/360*mean(diff(lat));            % y lat
  clear pi R0
  for i=1:m
      dx(i)=sum(deltx(1:i),2);
  end
  clear i m deltx
  for i=1:n
      dy(i)=sum(delty(1:i),2);
  end
  clear i n delty
  
  %y=repmat(deltx',[1,n]);
  %x=repmat(delty,[m,1]);
  [x,y]=meshgrid(dy,dx);
  [w,cav]=curl(x,y,ua,va);
  [sn,cav]=curl(x,y,va,ua);
  ss = divergence(x,y,va,ua);
  W(:,:) = (sn).^2 + (ss).^2 - w.^2 ;
  clear sn ss w cav dx dy x y

评分

参与人数 2金钱 +40 贡献 +7 收起 理由
mofangbao + 20 + 5
wlzhongouc + 20 + 2 哈哈 太好了 终于有人给指出错误了

查看全部评分

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

新浪微博达人勋

发表于 2012-11-9 08:58:52 | 显示全部楼层
请问诸位大侠,小生计算到这里,如何把散度场绘制出来??
x=-5:0.1:5;
>> y=x;
>> u=x.*x;
>> v=-y.*y;
>> [xx,yy]=meshgrid(x,y);
>> [uu,vv]=meshgrid(u,v);
>> div=divergence(xx,yy,uu,vv);

谢过~~
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2016-4-6 23:43:41 | 显示全部楼层
感谢楼主的分享
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2012-4-23 20:48:58 | 显示全部楼层
图看起来不错哦,学习了,O(∩_∩)O谢谢楼主分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-4-23 20:57:08 | 显示全部楼层
原来是猛牛作品啊,不错啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-4-23 21:36:34 | 显示全部楼层
matlab怎么读 nc文件呀。我搞了几次 没搞好
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-4-23 22:10:20 | 显示全部楼层
图片很漂亮,支持一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-4-23 22:11:05 | 显示全部楼层
这个设置真有必要,现在只顾着索取的人太多了,而且提问之前自己不做足功课,看来论坛在某些方面需要改进了。再次感谢楼主的分享!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-4-23 22:11:49 | 显示全部楼层
戴戴 发表于 2012-4-23 21:36
matlab怎么读 nc文件呀。我搞了几次 没搞好

那就继续搞吧...现有的教程加上自己的思考应该能解决的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-4-24 08:23:51 | 显示全部楼层
随缘 发表于 2012-4-23 20:57
原来是猛牛作品啊,不错啊

图中靠近0度经线的地方缺了一小块 可能是数据分辨率的问题 也没找到办法解决。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-4-24 08:24:57 | 显示全部楼层
戴戴 发表于 2012-4-23 21:36
matlab怎么读 nc文件呀。我搞了几次 没搞好

在网上一搜吧 很多关于这方面的内容的 不同版本用的NC插件还不太一样
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-4-24 08:30:14 | 显示全部楼层
mofangbao 发表于 2012-4-23 22:11
这个设置真有必要,现在只顾着索取的人太多了,而且提问之前自己不做足功课,看来论坛在某些方面需要改进了 ...

呵呵 清风不用客气 论坛你贡献最大啊
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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