- 积分
- 975
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-5-24
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本人初学matlab,想求一组时间序列数据与1948-2011年年平均SLP的空间相关性,查阅论坛自己写的代码如下:
ncid = netcdf.open('slp.mon.mean.nc','nowrite')
ncdisp('slp.mon.mean.nc')
tim = ncread('slp.mon.mean.nc','time');
time_datenum = tim / 24 + datenum('1800-01-01 00:00:0');
dv = datevec(time_datenum);
Lon = ncread('slp.mon.mean.nc','lon');
Lat = ncread('slp.mon.mean.nc','lat');
a = find(Lon>=0 & Lon<=357.5);
b = find(Lat>=-90 & Lat<= 90);
c = find(dv(:,1)>=1948 & dv(:,1)<= 2011)
lon_num = length(a);
lat_num = length(b);
tim_num = length(c);
slp = ncread('slp.mon.mean.nc','slp',[a(1) b(1) c(1)],[lon_num lat_num tim_num]);
for i = 1:144
for j = 1:73
for x = 1:12:768
m(i,j,x) = mean(slp(i,j,x:11+x));
n(i,j,(x-1)/12+1) = m(i,j,x);
end
end
end;
EOF = xlsread('testEOF.xlsx'); %时间序列数据
slpcor = [];
for i = 1:144
slpi = [];
for j = 1:73
rij = corrcoef(EOF(:,2),n(i,j,:))
slpi = [slpi,rij(2)];
end
slpcor = [slpcor;slpi]
end;
contourf(Lon,Lat,slpcor')
hold on
load coast
plot(long,lat,'-k','LineWidth', 1.8);%-颜色,1.8线宽
colorbar
但最后做出图成这样
现有以下几个问题想问各位大佬:
1、这样调整是否可行,有没有更好的办法解决它?
2、另外想只显示通过显著相关性的区域,该怎么添加代码?自己尝试了好久,是在写不出来、、、
3、感觉自己写的代码可能太臃肿,如有大佬能指出那些可以简化,不胜感激
|
-
由于matlab初始出图与coast 坐标不匹配,前者经度范围为0-360,而后者为-180-180°,因此需要对Lon数组进 ...
-
|