- 积分
- 8737
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-11-15
- 最后登录
- 1970-1-1
|
发表于 2016-4-7 17:36:18
|
显示全部楼层
data=sst_data(69:112,120:291,:);%原始三维数据
[a,b,c]=size(data);
x=reshape(data,a*b,c);%二维数据
x1=data(:,:,1);%任意一个时刻的场
x(isnan(x(:,1)),:)=[];%%%这一步就是把陆地上缺测的位置扣去
[m,n]=size(x);
xd=x-repmat(sum(x,2)/n,1,n);%求距平
sq=xd'*xd/(m-1);%时空转化
[lq,dq]=eig(sq);
dq=flipud(diag(dq));%上下颠倒
d=dq*m/n;%s的特征值
sig=d(1)/sum(d);%方差贡献
l=xd*fliplr(lq);%s的特征向量
l1=l(:,1)/sqrt(m*dq(1));%单位化的第一个特征向量
y1=l1'*xd/sqrt(d(1));%标准化的第一主成分
t=1980:1:2013;
plot(t,y1,'*-'
title('PC-1');
print(gcf,'-dpng','PC-1')
l1=l1*sqrt(d(1));%第一模态单位℃
x1(isnan(x1)==0)=l1;%%%这一步就是把扣去的陆地缺测值补全画图
[lon1,lat1]=meshgrid(119.5:1:290.5,-21.5:1:21.5);
m_proj('miller','lon',[120,290],'lat',[-20:20]);
m_contourf(lon1,lat1,x1);
m_coast('patch','w');
m_grid('linestyle','none','box','fancy','tickdir','out');
caxis([-1,1]);
colorbar
title('EOF-1 (67%) ℃');
print(gcf,'-dpng','EOF-1')
这是我之前编过的程序,你可以选对你有用的,我觉的对你有用的两步便是我标记%%%的 |
|