Documentation of eof_sst_slp


Global Index (short | long) | Local contents | Local Index (short | long)


Help text

  First, non-standardized

Cross-Reference Information

This script calls

Listing of script eof_sst_slp


clean
tim = 1:645;
lims1 = [110 260 20 70];
cd /home/disk/tao/data/nmc.reanalysis/monthly
[sst, lat1, lon1] = getnc2('skt.mon.mean.nc', 'skt', lims1, 1, tim);
lims2 = [110 270 20 90];
cd /home/disk/tao/data/nmc.reanalysis/monthly
[slp, lat2, lon2] = getnc2('slp.mon.mean.nc', 'slp', lims2, 1, tim);
lims3 = [110 300 20 90];
cd /home/disk/tao/data/nmc.reanalysis/monthly
[hgt, lat3, lon3] = getnc2('hgt.mon.mean.nc', 'hgt', lims3, 500, tim);
hgt = squeeze(hgt);
[lm, lat4, lon4] = getnc2('land.sfc.gauss.nc', 'land', lims1, 1, 1);
sst = annave(sst);
slp = annave(slp);
hgt = annave(hgt);
tem = squeeze(std(sst));
lm = lm + (tem > 1.25);
kp = find(lm==0);
[ntim, nlat1, nlon1] = size(sst);
[ntim, nlat2, nlon2] = size(slp);
[ntim, nlat3, nlon3] = size(hgt);
sst2 = cosweight(sst, lat1);
slp2 = cosweight(slp, lat2);
hgt2 = cosweight(hgt, lat3);

sst2 = sst2(:, kp);
slp2 = reshape(slp2, ntim, nlat2*nlon2);
hgt2 = reshape(hgt2, ntim, nlat3*nlon3);

[lam1, lds1, pcs1, per1] = eof_dan(sst2);
[lam2, lds2, pcs2, per2] = eof_dan(slp2);
[lam3, lds3, pcs3, per3] = eof_dan(hgt2);

%  Standardized
sst2 = standardize(sst);
slp2 = standardize(slp);
hgt2 = standardize(hgt);

sst2 = cosweight(sst2, lat1);
slp2 = cosweight(slp2, lat2);
hgt2 = cosweight(hgt2, lat3);

sst2 = sst2(:, kp);
slp2 = reshape(slp2, ntim, nlat2*nlon2);
hgt2 = reshape(hgt2, ntim, nlat3*nlon3);

[lam1b, lds1b, pcs1b, per1b] = eof_dan(sst2);
[lam2b, lds2b, pcs2b, per2b] = eof_dan(slp2);
[lam3b, lds3b, pcs3b, per3b] = eof_dan(hgt2);

%  Now, redo using only NDJFMA
tind = sort([11:12:ntim 12:12:ntim 1:12:ntim 2:12:ntim ...
	     3:12:ntim 4:12:ntim]);
ntim2 = length(tind);
%  First, non-standardized
sst2 = cosweight(sst(tind,:,:), lat1);
slp2 = cosweight(slp(tind,:,:), lat2);
hgt2 = cosweight(hgt(tind,:,:), lat3);

sst2 = sst2(:, kp);
slp2 = reshape(slp2, ntim2, nlat2*nlon2);
hgt2 = reshape(hgt2, ntim2, nlat3*nlon3);

[lam1c, lds1c, pcs1c, per1c] = eof_dan(sst2);
[lam2c, lds2c, pcs2c, per2c] = eof_dan(slp2);
[lam3c, lds3c, pcs3c, per3c] = eof_dan(hgt2);

%  Standardized
sst2 = standardize(sst(tind,:,:));
slp2 = standardize(slp(tind,:,:));
hgt2 = standardize(hgt(tind,:,:));

sst2 = cosweight(sst2, lat1);
slp2 = cosweight(slp2, lat2);
hgt2 = cosweight(hgt2, lat3);

sst2 = sst2(:, kp);
slp2 = reshape(slp2, ntim2, nlat2*nlon2);
hgt2 = reshape(hgt2, ntim2, nlat3*nlon3);

[lam1d, lds1d, pcs1d, per1d] = eof_dan(sst2);
[lam2d, lds2d, pcs2d, per2d] = eof_dan(slp2);
[lam3d, lds3d, pcs3d, per3d] = eof_dan(hgt2);

desc1 = ['1 = SST; 2 = SLP; 3 = HGT500'];
desc2 = ['  = Raw anomalies (all year);   ';
	 'b = Standardized data (all year)';
	 'c = Raw anomalies (NDJFMA);     ';
	 'd = Standardized data (NDJFMA)  '];

%  Save results
cd ~/matlab/NMC/Data
save NPAC_sst_slp_hgt500_eofs.mat ...
    desc1 desc2 lat1 lon1 lat2 lon2 lat3 lon3 lat4 lon4 lm kp ...
    lims1 lims2 lims3 tim tind ...
    lam1 lds1 pcs1 per1 ...
    lam2 lds2 pcs2 per2 ...
    lam3 lds3 pcs3 per3 ...
    lam1b lds1b pcs1b per1b ...
    lam2b lds2b pcs2b per2b ...
    lam3b lds3b pcs3b per3b ...
    lam1c lds1c pcs1c per1c ...
    lam2c lds2c pcs2c per2c ...
    lam3c lds3c pcs3c per3c ...
    lam1d lds1d pcs1d per1d ...
    lam2d lds2d pcs2d per2d ...
    lam3d lds3d pcs3d per3d

%  Get regressions
clean

lims = [0 360 -90 90];
tim = 1:645;

cd ~/matlab/NMC/Data
load NPAC_sst_slp_hgt500_eofs.mat 

cd /home/disk/tao/data/nmc.reanalysis/monthly
[sst, lat1, lon1] = getnc2('skt.mon.mean.nc', 'skt', lims, 1, tim);

cd /home/disk/tao/data/nmc.reanalysis/monthly
[slp, lat2, lon2] = getnc2('slp.mon.mean.nc', 'slp', lims, 1, tim);

cd /home/disk/tao/data/nmc.reanalysis/monthly
[hgt, lat3, lon3] = getnc2('hgt.mon.mean.nc', 'hgt', lims, 500, tim);
hgt = squeeze(hgt);

sst = annave(sst);
slp = annave(slp);
hgt = annave(hgt);

[ntim, nlat1, nlon1] = size(sst);
[ntim, nlat2, nlon2] = size(slp);
[ntim, nlat3, nlon3] = size(hgt);

%   Get regressions
pat1 = repmat(NaN, [4 3 nlat1 nlon1]);
c1 = pat1;
pat2 = repmat(NaN, [4 3 nlat2 nlon2]);
c2 = pat2;
pat3 = repmat(NaN, [4 3 nlat3 nlon3]);
c3 = pat3;

for i = 1:3;
  disp(i)
  [pat1(1,i,:,:), c1(1,i,:,:)] = regress_eof(sst, pcs1(:,i), 0);
  [pat1(2,i,:,:), c1(2,i,:,:)] = regress_eof(sst, pcs1b(:,i), 0);
  [pat1(3,i,:,:), c1(3,i,:,:)] = ...
      regress_eof(sst(tind,:,:), pcs1c(:,i), 0);
  [pat1(4,i,:,:), c1(4,i,:,:)] = ...
      regress_eof(sst(tind,:,:), pcs1d(:,i), 0);
  
  [pat2(1,i,:,:), c2(1,i,:,:)] = regress_eof(slp, pcs1(:,i), 0);
  [pat2(2,i,:,:), c2(2,i,:,:)] = regress_eof(slp, pcs1b(:,i), 0);
  [pat2(3,i,:,:), c2(3,i,:,:)] = ...
      regress_eof(slp(tind,:,:), pcs1c(:,i), 0);
  [pat2(4,i,:,:), c2(4,i,:,:)] = ...
      regress_eof(slp(tind,:,:), pcs1d(:,i), 0);
  
  [pat3(1,i,:,:), c3(1,i,:,:)] = regress_eof(hgt, pcs1(:,i), 0);
  [pat3(2,i,:,:), c3(2,i,:,:)] = regress_eof(hgt, pcs1b(:,i), 0);
  [pat3(3,i,:,:), c3(3,i,:,:)] = ...
      regress_eof(hgt(tind,:,:), pcs1c(:,i), 0);
  [pat3(4,i,:,:), c3(4,i,:,:)] = ...
      regress_eof(hgt(tind,:,:), pcs1d(:,i), 0);
end

desc3 = ['pat1 = sst; pat2 = slp; pat3 = hgt'];
desc4 = ['pat1(i,j,:,:);  i = a, b, c or d (desc2); j = mode 1 2 or 3'];

%  Save data
cd ~/matlab/NMC/Data
save NPAC_sst_slp_hgt500_regs.mat ...
    tim lims tind lat1 lon1 lat2 lon2 lat3 lon3 ...
    desc1 desc2 desc3 desc4 ...
    pat1 pat2 pat3 c1 c2 c3


%  Plot the data
clean

cd ~/matlab/NMC/Data
load NPAC_sst_slp_hgt500_regs.mat

cd /home/disk/tao/data/nmc.reanalysis/monthly
[lm, lat4, lon4] = getnc2('land.sfc.gauss.nc', 'land', lims, 1, 1);
lm = 1-lm;
lm(lm ~= 1) = NaN;

figure_landscape(1); clf
global_axes(2.75, 1.75, 0.25, 0.25, 1.5);

global_latlon(lat1, lon1, [90 300 -30 75]);
for i = 1:3;
  subplot2(3,i); cla;
  maxes('mollweid');
  map_contour_pn(lm .* squeeze(c1(1,i,:,:)), 0.1);
  fill_landmap('over', 0.5*[1 1 1]);
  tightmap;
  gridm on;
end

global_latlon(lat2, lon2, [90 300 -30 75]);
for i = 1:3;
  subplot2(3,3+i); cla;
  maxes('mollweid');
  map_contour_pn(squeeze(c2(1,i,:,:)), 0.1);
  fill_landmap('over', 0.5*[1 1 1]);
  tightmap;
  gridm on;
end

global_latlon(lat3, lon3, [90 300 -30 75]);
for i = 1:3;
  subplot2(3,6+i); cla;
  maxes('mollweid');
  map_contour_pn(squeeze(c3(1,i,:,:)), 0.1);
  fill_landmap('over', 0.5*[1 1 1]);
  tightmap;
  gridm on;
end