爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2663|回复: 3

[程序设计] matlab求南海夏季风指数差别很大

[复制链接]

新浪微博达人勋

发表于 2023-3-14 19:26:56 | 显示全部楼层 |阅读模式

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

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

x
求助,想问问这个程序哪里出了问题,最后算出的南海夏季风指数与李崇银老师的差别过大了程序参考了这个帖子↓
李崇银南海夏季风指数matlab程序
http://bbs.06climate.com/forum.p ... &fromuid=128407
(出处: 气象家园)

  1. clc
  2. clear
  3. close all;

  4. div1=zeros(9,5);
  5. div2=zeros(9,5);
  6. D=zeros(9,5,9);
  7. Id=zeros(9,5,9);
  8. u=ncread('I:\NCEPdata\pressure\uwnd.1984.nc','uwnd');
  9. v=ncread('I:\NCEPdata\pressure\vwnd.1984.nc','vwnd');
  10. ncdisp I:\NCEPdata\pressure\uwnd.1984.nc
  11. ncdisp I:\NCEPdata\pressure\vwnd.1984.nc
  12. u_lon=ncread('I:\NCEPdata\pressure\uwnd.1984.nc','lon');
  13. u_lat=ncread('I:\NCEPdata\pressure\uwnd.1984.nc','lat');

  14. U=squeeze(u(43:51,40:44,2,:));
  15. V=squeeze(v(43:51,40:44,2,:));
  16. U1=squeeze(u(43:51,40:44,8,:));
  17. V1=squeeze(v(43:51,40:44,8,:));
  18. [X,Y]=meshgrid(u_lon(43:51),u_lat(40:44));
  19. for time=1:365
  20.     div1(:,:,time)=divh_atmos(Y',X',U(:,:,time),V(:,:,time));%850hap
  21. end
  22. for time=1:365
  23.     div2(:,:,time)=divh_atmos(Y',X',U1(:,:,time),V1(:,:,time));%200hap
  24. end
  25. for i=1:365
  26.    D(i)=nanmean(nanmean((div1(:,:,i)-div2(:,:,i)),1),2);
  27. end
  28. for i=2:365
  29.     Id(i)=D(i)/sqrt(sum(D(1:i).^2)/i);
  30. end
  31. Id(1)=0;
  32. Id(:);
  33. xlswrite('ceshi.xlsx',Id(:),'sheet1','C2')
复制代码
  1. function divh=divh_atmos(longitude, latitude, u, v)
复制代码
  1. function dy=dy_atmos(latitude)
  2.     R=6.3781e6; % earth's radius
  3.     [~, dy]=gradient(latitude);
  4.     dy=dy.*(pi./180).*R;
  5. end
复制代码
  1. function dx=dx_atmos(longitude, latitude)
  2.     R=6.3781e6; % earth's radius
  3.     [dx, ~]=gradient(longitude);
  4.     dx=dx.*(pi./180).*R.*cos(latitude*pi./180);
  5. end
复制代码

                               
登录/注册后可看大图


算出的指数全部都小于0,出图的形状也不相似
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2023-3-15 11:22:09 | 显示全部楼层
你的散度如果是月资料求的,就不对。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-3-15 14:51:19 | 显示全部楼层
本帖最后由 陈伯英 于 2023-3-15 15:00 编辑

是算空间平均的地方出了问题吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2023-3-15 14:58:14 | 显示全部楼层
膘膘 发表于 2023-3-15 11:22
你的散度如果是月资料求的,就不对。

用的是ncep再分析资料逐天的
Snipaste_2023-03-15_14-24-36.png Snipaste_2023-03-15_14-25-08.png
下面这个是算散度的程序
  1. function divh=divh_atmos(longitude, latitude, u, v)
  2.     R=6.3781e6; % earth's radius
  3.     dx=dx_atmos(longitude, latitude);
  4.     dy=dy_atmos(latitude);
  5.     [du, ~]=gradient(u);
  6.     [~, dv]=gradient(v);
  7.     divh=du./dx+dv./dy-v.*tan(latitude.*pi./180)./R;
  8.     divh(abs(latitude)==90)=NaN;
  9. end
复制代码


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

使用道具 举报

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

本版积分规则

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

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

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