Documentation of get_NAO


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


Help text

  Save data

Cross-Reference Information

This script calls

Listing of script get_NAO


clean
lims1 = [270 360 20 70];
lims2 = [0 40 20 70];
lims = [-90 40 20 70];
cd /home/disk/hayes2/dvimont/csiro/data/Individual_levels
filin = 'spsl_c10_056-1055.nc';
varn = 'psl';
tim = 1:1000;
nc = netcdf(filin, 'nowrite');
  [lat, lon, yk, xk] = get_nclatlon2(lims1, nc);
  slp1 = nc{varn, 1}(tim,:,yk,xk);
  [lat2, lon2, yk2, xk2] = get_nclatlon2(lims2, nc);
  slp2 = nc{varn, 1}(tim,:,yk2,xk2);
nc = close(nc);
slp = shiftdim([shiftdim(slp1, 3); shiftdim(slp2, 3)], 1);
lon = [lon-360; lon2];
clear slp1 slp2 lat2 lon2
[slp, ntim, nlat, nlon] = reshape_ann_to_mon(slp);
[slp, clim] = annave(slp);
slp2 = cosweight(slp, lat);
slp2 = reshape(slp2, ntim, nlat*nlon);
[lam, lds, pcs, per] = eof_dan(slp2);
cd /home/disk/tao/dvimont/matlab/CSIRO/ATLANTIC/Data
save NAO_slp_pcs.mat lims1 lims2 lims tim varn lam lds pcs per ...
    ntim nlat nlon

%  Get regressions
clean

cd /home/disk/tao/dvimont/matlab/CSIRO/ATLANTIC/Data
load NAO_slp_pcs.mat

lims1 = [240 360 -20 90];
lims2 = [0 90 -20 90];
lims = [-120 90 -20 90];

cd /home/disk/hayes2/dvimont/csiro/data/Individual_levels
tim = 1:1000;

filin = 'spsl_c10_056-1055.nc';
varn = 'psl';

filin = 'stax_c10_056-1055.nc';
varn = 'tax';

nc = netcdf(filin, 'nowrite');
  [lat, lon, yk, xk] = get_nclatlon2(lims1, nc);
  slp1 = nc{varn, 1}(tim,:,yk,xk);
  [lat2, lon2, yk2, xk2] = get_nclatlon2(lims2, nc);
  slp2 = nc{varn, 1}(tim,:,yk2,xk2);
nc = close(nc);

if 0;
  filin = 'temp_M_L1_1000_years_new.nc';
  varn = 'temp';

  nc = netcdf(filin, 'nowrite');
    [lat, lon, yk, xk] = get_nclatlon2(lims1, nc);
    slp1 = nc{varn, 1}(:,1,yk,xk);
    [lat2, lon2, yk2, xk2] = get_nclatlon2(lims2, nc);
    slp2 = nc{varn, 1}(:,1,yk2,xk2);
  nc = close(nc);
  slp = shiftdim([shiftdim(squeeze(slp1), 2); ...
		  shiftdim(squeeze(slp2), 2)], 1);
  lon = [lon-360; lon2]; latsst = lat; lonsst = lon;
end

slp = shiftdim([shiftdim(slp1, 3); shiftdim(slp2, 3)], 1);
lon = [lon-360; lon2];

clear slp1 slp2 lat2 lon2

[slp, ntim, nlat, nlon] = reshape_ann_to_mon(slp);
[slp, clim] = annave(slp);

[pat1, c1] = regress_eof(slp, pcs(:,1), 0);
[pat2, c2] = regress_eof(slp, pcs(:,1), 6);

cd /home/disk/tao/dvimont/matlab/CSIRO/ATLANTIC/Data
save NAO_regs.mat pat1 pat2 c1 c2 pat1tx pat2tx c1tx c2tx ...
    pat1sst pat2sst c1sst c2sst lat lon lims latsst lonsst
    

get_global; dg(lat, lon); FRAME = lims;
figure(1); fo(1); clf;
  subplot(3,2,1);
    mcont2(c1, 0.2, 'mollweid');
    gridm on;
    axis_limits
    dcmfill(-1);
  subplot(3,2,2);
    mcont2(c2, 0.025, 'mollweid');
    gridm on;
    axis_limits
    dcmfill(-1);
  subplot(3,2,3);
    mcont2(c1tx, 0.2, 'mollweid');
    gridm on;
    axis_limits
    dcmfill(-1);
  subplot(3,2,4);
    mcont2(c2tx, 0.025, 'mollweid');
    gridm on;
    axis_limits
    dcmfill(-1);
  dg(latsst, lonsst);
  subplot(3,2,5);
    mcont2(c1sst, 0.1, 'mollweid');
    gridm on;
    axis_limits
    dcmfill(-1);
  subplot(3,2,6);
    mcont2(c2sst, 0.025, 'mollweid');
    gridm on;
    axis_limits
    dcmfill(-1);
    
figure(2); fo(1); clf;
tem = standardize(rave(pcs(:,1), 12));
  for i = 1:6;
    ind = 1200*(i-1)+[1:1200];
    subplot(6,1,i);
    plot(ind, tem(ind), 'k');
    axis([min(ind)-1 max(ind)+1 -3 3]);
    set(gca, 'XTick', ind(1):120:max(ind))
    grid on;
  end

  
figure(3); fo(1); clf;
for i = 1:3;
  if i~=3; ind = 3000*(i-1)+[1:3000]; else; ind = 1:12000; end;
  nfft = 128*12; noverlap = 64*12; n2 = nfft/2;
  tem = pcs(ind,1); nx = length(tem);
  [p,f] = spectrum(tem, nfft, noverlap, hamming(nfft), 12);
%  p = rave(p, 10);
  rho = corr(tem, tem, 1)
  rn = (1-rho^2) ./ (1-2*rho*cos((pi/n2)*(0:n2))+rho^2);
  rn = rn / mean(rn(3:(n2+1)));
  rn = rn * mean(p(3:(n2+1),1));
  f5 = finv(0.95, round(nx/n2), 1000000);
  f1 = finv(0.99, round(nx/n2), 1000000);
  subplot(3,1,i);
    ll = loglog((f), (p(:,1)), 'k', (f), (rn), 'k', ...
	      (f), (rn*f5), '--r', (f), (rn*f1), '--b');
    set(ll(1), 'linewidth', 2);
end