利用上面M-K趋势分析的结果,只让置信度大于95%的数据在地图上显示。
这里,可以先自定义一个colorbar
。
mycolor = colormap; %mycolor名称任意
save mycolor mycolor;
下次画图时,只要先load mycolor;
再输入colormap(mycolor)
就可以直接用这个colorbar了。
% 逐点变化显著性
% 导入数据Y1、Y2
Y=Y2-Y1;
Y=Y(:,:,3:35);
YA=Y(:,:,1:19);
YB=Y(:,:,20:33);
% 1981-1999年的
for j=1:128
for i=1:72
y=YA(i,j,:);
n = 19;
dt=1;
% 计算统计量
s = 0;
for p = 1:n-1
for q = p+1:n
s = s + sign( y(q) - y(p) );
end
end
% 方差( assuming no tied groups )
v = ( n * ( n - 1 ) * ( 2 * n + 5 ) ) / 18;
% 检验统计量
if s == 0
z = 0;
elseif s > 0,
z = ( s - 1 ) / sqrt( v );
else
z = ( s + 1 ) / sqrt( v );
end
% should calculate Normal value here
nor = 1.64;
if abs( z ) < nor,
sya(i,j) = 0;
else
% 计算斜率
ndash = n * ( n - 1 ) / 2;
s = zeros( ndash,1 );
s=nan;
r = 1;
for p = 1:n-1
for q = p+1:n
s(r) = ( y(q) - y(p) ) / ( q - p ) / dt;
r = r + 1;
end
end
sya(i,j) = median( s );
end
end
end
pcolor(sya);
shading flat;
load mycolor;
colormap(mycolor);
% 1999-2013年的
for j=1:128
for i=1:72
y=YB(i,j,:);
n = 14;
dt=1;
% 计算统计量
s = 0;
for p = 1:n-1
for q = p+1:n
s = s + sign( y(q) - y(p) );
end
end
% 方差( assuming no tied groups )
v = ( n * ( n - 1 ) * ( 2 * n + 5 ) ) / 18;
% 检验统计量
if s == 0
z = 0;
elseif s > 0,
z = ( s - 1 ) / sqrt( v );
else
z = ( s + 1 ) / sqrt( v );
end
% should calculate Normal value here
nor = 1.64;
if abs( z ) < nor,
syb(i,j) = 0;
else
% 计算斜率
ndash = n * ( n - 1 ) / 2;
s = zeros( ndash,1 );
s=nan;
r = 1;
for p = 1:n-1
for q = p+1:n
s(r) = ( y(q) - y(p) ) / ( q - p ) / dt;
r = r + 1;
end
end
syb(i,j) = median( s );
end
end
end
pcolor(syb);
shading flat;
load mycolor;
colormap(mycolor);
这时即可画出NCEP数据和观测数据平均温度差值1981-1999年和2000-2013年的在95%置信水平下的逐点变化趋势。(图略)
如果白色区域有颜色,就需要在Figure窗口手动调整,点击Edit菜单,选择Colormap,进入Colormap Editor,将数值的最小最大值调成绝对值相同的数值,这里我调成了-0.2和0.2,色彩空间保持HSV,然后确定即可。
类似地,最高温度和最低温度也可以得到这样的图。(图略)
相关链接:
Matlab处理气象数据——目录