爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4935|回复: 6

[程序设计] 风应力旋度

[复制链接]

新浪微博达人勋

发表于 2018-4-23 15:42:13 | 显示全部楼层 |阅读模式

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

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

x
大佬们好:
小弟刚刚接触MATLAB,最近要画一个风应力旋度进而求解SverdrupTransoprt。
参照了一些程序


得到的图很奇怪,希望得到指正,不胜感谢


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

新浪微博达人勋

 楼主| 发表于 2018-4-23 15:42:47 | 显示全部楼层
clear;
    close all;
    load('lon.mat');
    load('lat.mat');
    load('tauu.mat');
    load('tauv.mat');
    R=6.3781e6; % earth's radius
    [lon , lat]   = meshgrid(lat,lon);
    [dx, ~]=gradient(lon);
    dx=dx.*(pi./180).*R.*cos(lat*pi./180);
   
    [~, dy]=gradient(lat);
    dy=dy.*(pi./180).*R;
  
    [~, du]=gradient(tauu(:,:,1,1));
    [dv, ~]=gradient(tauv(:,:,1,1));
    curlz=dv./dx-du./dy+tauu(:,:,1,1).*tan(lat.*pi./180)./R;
    curlz(abs(lat)==90)=NaN;
    contour(curlz);
这是我的代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-23 15:45:54 | 显示全部楼层
这是我绘制的图

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

新浪微博达人勋

发表于 2018-4-23 15:54:36 | 显示全部楼层
为什么不直接尝试一下MATLAB里的curl函数呢,把经纬度meshgrid之后,直接用[curlz,~]=curl(lon,lat,taux,tauy);就可以求出旋度了,当然经纬度要转换成距离,至于后面求解SverdrupTransoprt我就不太了解了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-23 16:54:25 | 显示全部楼层
我也看到了你这个方法的帖子,但是我的感觉是只要确保你的个点数据对应的不是经纬度,而是实际距离,那么地球曲率在其中产生的影响就不是那么大,即使在极地海区也是可以接受的,所以不一定非要采用球坐标系的计算方法
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-4-23 19:42:47 | 显示全部楼层
callmezoro 发表于 2018-4-23 15:54
为什么不直接尝试一下MATLAB里的curl函数呢,把经纬度meshgrid之后,直接用[curlz,~]=curl(lon,lat,taux,ta ...

谢谢,直接用图形和网格都不对不知道为什么
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-4-17 21:05:13 | 显示全部楼层
楼主解决了吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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