Documentation of svd_slp_taux


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


Help text

  Load data

Cross-Reference Information

This script calls

Listing of script svd_slp_taux


clean
limslp = [110 270 -90 -20];
limsst = [120 285 -20 20];
dofilt = 1; %  LP9
seas = 0; % 3 mo. running mean
doyear = 1; % annual data
if doyear; %  Annual data
  cd /home/disk/hayes2/dvimont/csiro/matlab_data/Heat_Content
  load ML_ANN_slp.mat
%  load z250_ML_annave.mat; slp = z250; clear z250;
  load taux_ML_annave.mat; sst = txann; clear txann;
  back
  [lat1, lon1, depth, lm1] = getll('temp', limslp);
  [lat2, lon2, depth, lm2] = getll('temp', limsst);
  [xk1, yk1] = keep_var(limslp, lon, lat);
  [xk2, yk2] = keep_var(limsst, lon, lat);
  slp = slp(:, yk1, xk1);
  sst = sst(:, yk2, xk2);
else ; %  Seasonal data
  cd /home/disk/hayes2/dvimont/csiro/data
  filin1 = 'spsl_qm1_0036-0365.nc'; varn1 = 'psl';
  filin2 = 'stax_qm1_0036-0365.nc'; varn2 = 'tax';
  nc = netcdf(filin1, 'nowrite');
    [lat1, lon1, yk1, xk1] = get_nclatlon2(limslp, nc);
    slp = nc{varn1, 1}(:,:,yk1,xk1);
  nc = close(nc);
  nc = netcdf(filin2, 'nowrite');
    [lat2, lon2, yk2, xk2] = get_nclatlon2(limsst, nc);
    sst = nc{varn2, 1}(:,:,yk2,xk2);
  nc = close(nc);
  [tem, tem, tem, lm1] = getll('temp', limslp);
  [tem, tem, tem, lm2] = getll('temp', limsst);
  [ntim, nmo, nlat1, nlon1] = size(slp);
  [ntim, nmo, nlat2, nlon2] = size(sst);
  slp2 = NaN*ones(ntim*nmo, nlat1, nlon1);
  sst2 = NaN*ones(ntim*nmo, nlat2, nlon2);
  for i = 1:ntim;
    ind = 12*(i-1)+[1:12];
    slp2(ind,:,:) = slp(i,:,:,:);
    sst2(ind,:,:) = sst(i,:,:,:);
  end
  slp2 = annave(slp2);
  sst2 = annave(sst2);
  if seas
    slp = NaN*ones(4*ntim-1, nlat1, nlon1);
    sst = NaN*ones(4*ntim-1, nlat2, nlon2);
    for i = 1:(4*ntim-1);
      ind = 3*(i-1)+[3:5];
      slp(i,:,:) = mean(slp2(ind,:,:));
      sst(i,:,:) = mean(sst2(ind,:,:));
    end
  else
    slp = slp2;
    sst = sst2;
  end
  clear slp2 sst2
end
  
[ntim, nlat1, nlon1] = size(slp);
[ntim, nlat2, nlon2] = size(sst);

%  Get rid of NaNs, mean, trend, etc
sst = detrend(sst);
slp = detrend(slp);

slp = cosweight(slp, lat1);
sst = cosweight(sst, lat2);

slp = reshape(slp, ntim, nlat1*nlon1);
sst = reshape(sst, ntim, nlat2*nlon2);

if dofilt
  [b, a] = butter(9, 2/9);
  slp = filtfilt(b, a, slp);
  sst = filtfilt(b, a, sst);
end

kp2 = find(~isnan(lm2));
sst = sst(:, kp2);

%  Perform SVD analysis

c = slp'*sst/(ntim-1);

[slpu, s, sstv] = svd(c);
slpx = slp*slpu;
ssty = sst*sstv;

%  Statistics of the SVD:

rmsc = (sum(sum(c.^2))./(sum(var(sst))*sum(var(slp))))^0.5;
scv = diag(s).^2./sum(diag(s).^2);

%  Look at pslpx

slp2 = getflx('psl', limslp, 101:1000);
[lat, lon] = getll('temp', limslp);
slp2 = detrend(slp2);
slp2 = cosweight(slp2, lat);
[ntim, nlat, nlon] = size(slp2);
if dofilt
  slp2 = filtfilt(b, a, slp2);
end
slp2 = reshape(slp2, ntim, nlat1*nlon1);
pslpxd = slp2*slpu;

%  Look at pslpx

if doyear; %  Annual data
  cd /home/disk/hayes2/dvimont/csiro/matlab_data/Heat_Content
  load ATM_ANN_slp.mat; slp = slp2;
  [lat3, lon3] = getll('temp', limslp);
  [xk1, yk1] = keep_var(limslp, lon, lat);
  slp = slp(:, yk1, xk1);
else ; %  Seasonal data
end
slp = detrend(slp);
slp = cosweight(slp, lat3);
[ntim, nlat, nlon] = size(slp);
if dofilt
  slp = filtfilt(b, a, slp);
end
slp = reshape(slp, ntim, nlat1*nlon1);
pslpxa = slp*slpu;

slpx = slpx(:,1:10);
slpu = slpu(:,1:10);
pslpxd = pslpxd(:,1:10);
pslpxa = pslpxa(:,1:10);
tauxv = sstv(:, 1:10); tauxy = ssty(:, 1:10);
cd ~/Papers/mlcsiro/matlab/Data2
save SH_MIX_slpx_DYN_ATM_pslpx_LP9.mat slpx pslpxd pslpxa slpu rmsc scv ...
    limsst limslp tauxv tauxy