Documentation of complex_eof_heat_content


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


Help text

  Area average heat so process is quicker

Cross-Reference Information

This script calls

Listing of script complex_eof_heat_content


clear
cd /home/disk/hayes2/dvimont/csiro/data
tim = [551:1000];
tim = [101:550];
cd /home/disk/tao/dvimont/matlab/CSIRO
ctlim = [115 285 -60 67.5];
tim = 101:550; lev = 1:7;
[temp, lat, lon, depth, middepth] = getheat(lev, tim, ctlim);
get_global; default_global; FRAME = ctlim;

[ntim, nlat, nlon] = size(temp);

heat = shiftdim(temp, 1);
lat = mean([lat(1:2:nlat)'; lat(2:2:nlat)'])';
lon = mean([lon(1:2:nlon)'; lon(2:2:nlon)'])';
for i = 1:(nlat/2);
  for j = 1:(nlon/2);
    yk = 2*(i-1)+[1:2]; xk = 2*(j-1)+[1:2];
    heat2(i,j,:) = mean2(mean2(heat(yk,xk,:)));
  end
end
heat = shiftdim(heat2, 2); clear heat2;
[ntim, nlat, nlon] = size(heat);

heat = reshape(heat, ntim, nlat*nlon);
heat = detrend(heat);
heat = cosweight(heat, lat);

clim = mean(heat);
kp = find(~isnan(clim));
heat = heat(:, kp);

%  Filter Heat

yr = 4.5;
[b,a]=butter(6,(2/yr));
heatlp = filtfilt(b, a, heat);
heathp = heat - heatlp;

[lam, lds, pcs, per] = complex_eof(heatlp);

lamlp = lam; 
ldslp = lds;
perlp = per; 
pcslp = pcs;

cd /home/disk/tao/dvimont/matlab/CSIRO/Data
% save ceof_heat1-7_yr551-1000.mat lamlp ldslp perlp pcslp kp lat lon tim ctlim
% save comp_eof_hp_heat1-7.mat lamhp ldshp perhp pcshp kp lat lon tim ctlim

%  Do plots:

clear

cd /home/disk/tao/dvimont/matlab/CSIRO/Data
load comp_eof_hp_heat1-7.mat
load comp_eof_lp_heat1-7.mat
load ceof_heat1-7_yr551-1000.mat
load ceof_heat1-7_yr101-550.mat
default_global; FRAME = ctlim;

pc10 = pcs;
ld10 = lds;

ntim = size(pc10, 1);
npt = size(ld10, 1);
nlat = length(lat); nlon = length(lon);

weight1 = std(real(pc10));
weight2 = std(imag(pc10));
pc10 = real(pc10).*(ones(ntim, 1)*(1./weight1)) + ...
      sqrt(-1)*imag(pc10).*(ones(ntim, 1)*(1./weight2));
ld10 = real(ld10).*(ones(npt, 1)*weight1) + ...
      sqrt(-1)*imag(ld10).*(ones(npt, 1)*weight2);



figure(1); figure_landscape;
cint = 10; clims = [-100:cint:100];
num = 1;
tem = NaN * ones(1, nlat*nlon);
tem(kp) = real(ld10(:,num))';
tem = reshape(tem, nlat, nlon);
sp2(1);
%     clma
     gcont(tem, clims); dc;%, 'giso');
%     dcm2
     title(['HEAT to 275m:  REAL CEOF' num2str(num)])  
     xlabel(['Contour Interval:  ' num2str(cint) ' C (std)^-^1'])
tem = NaN * ones(1, nlat*nlon);
tem(kp) = imag(ld10(:,num))';
tem = reshape(tem, nlat, nlon);
sp2(2);
%     clma
     gcont(tem, clims); dc;%, 'giso');
%     dcm2
     title(['HEAT to 275m:  IMAG CEOF' num2str(num)])  
     xlabel(['Contour Interval:  ' num2str(4.2*cint) 'x10^6 J m^-^2 std^-^1'])

figure(2);%  figure_orient;
for m = 1:4
     subplot(4,1,m)
     tind = [floor((ntim/4)*(m-1)+[1:(ntim/4)]) 112*m+1];
     plot(tind, real(pc10(tind, num)), '-k', ...
	  tind, imag(pc10(tind, num)), '--k');
     axis([min(tind-1) max(tind+1) -3 3]);
     set(gca, 'YTick', [-3:3], 'XTick', [0:10:ntim]);
     grid
end
     subplot(4,1,1)
     title(['AVERAGE TEMP to 620m; CPC', num2str(num), ...
	    ':  Dashed = IMAG, Solid = REAL']);
     subplot(4,1,4)
     xlabel('Years')

cd /home/disk/tao/dvimont/matlab/CSIRO/Plots


%  Look at various phases of this pattern

figure(1); clf;
lag = 0; lg = lag*pi/180;
num = 1;
nfrm = 6;
j = sqrt(-1);

for i = 1:nfrm;

  if i == 1; figure(1); figure_landscape;
  elseif i == 3; figure(2); figure_landscape;
  elseif i == 5; figure(3); figure_landscape;
  end

  wgt = conj(exp(j * ((i-1) * pi/nfrm + lg) ) * ones(npt, 1));  
  pat = real(wgt .* ld10(:,num));

     tem = NaN * ones(nlat*nlon, 1);
     tem(kp, 1) = pat;
  figure(1); clf;
lag = 0; lg = lag*pi/180;
num = 1;
nfrm = 6;
j = sqrt(-1);

for i = 1:nfrm;

  if i == 1; figure(1); figure_landscape;
  elseif i == 3; figure(2); figure_landscape;
  elseif i == 5; figure(3); figure_landscape;
  end

  wgt = conj(exp(j * ((i-1) * pi/nfrm + lg) ) * ones(npt, 1));  
  pat = real(wgt .* ld10(:,num));

     tem = NaN * ones(nlat*nlon, 1);
     tem(kp, 1) = pat;
     tem = reshape(tem, nlat, nlon);

     sp2(2-rem(i,2));
       if ismap(gca); clma; end
       gcont(tem, [-200:10:200]);dc;%, 'giso');
       title(['4.5YR LP CEOF' num2str(num)...
              ', Phase = ' num2str(((i-1)*180)/nfrm+lag) ', YEARS 101-550'])
       xlabel(['Contour Interval:  10 K std^-^1'])

     if ~rem(i,2)
       cd /home/disk/tao/dvimont/matlab/CSIRO/Plots3
       eval(['print -dps2 LP_CEOF' num2str(num)...
             '_Phase_' num2str((i-1)*180/nfrm) 'yr101-550.ps'])
     end

end
for i = 3:-1:1; figure(i); end;
   tem = reshape(tem, nlat, nlon);

     sp2(2-rem(i,2));
       if ismap(gca); clma; end
       gcont(tem, [-200:10:200]);dc;%, 'giso');
       title(['4.5YR LP CEOF' num2str(num)...
              ', Phase = ' num2str(((i-1)*180)/nfrm+lag) ', YEARS 101-550'])
       xlabel(['Contour Interval:  10 K std^-^1'])

     if ~rem(i,2)
       cd /home/disk/tao/dvimont/matlab/CSIRO/Plots3
       eval(['print -dps2 LP_CEOF' num2str(num)...
             '_Phase_' num2str((i-1)*180/nfrm) 'yr101-550.ps'])
     end

end
for i = 3:-1:1; figure(i); end;

%  Look at lagged correlations between real and imag cpc's

figure(4); figure_orient;
for i = 1:6

  if i == 1;
    v1 = real(pc10(:,1)); v2 = imag(pc10(:,1)); lab = ['Re(CPC1)'; 'Im(CPC1)'];
  elseif i == 6;
    v1 = real(pc10(:,1)); v2 = real(pc10(:,2)); lab = ['Re(CPC1)'; 'Re(CPC2)'];
  elseif i == 3;
    v1 = real(pc10(:,1)); v2 = imag(pc10(:,2)); lab = ['Re(CPC1)'; 'Im(CPC2)'];
  elseif i == 4;
    v1 = imag(pc10(:,1)); v2 = real(pc10(:,2)); lab = ['Im(CPC1)'; 'Re(CPC2)'];
  elseif i == 5;
    v1 = imag(pc10(:,1)); v2 = imag(pc10(:,2)); lab = ['Im(CPC1)'; 'Im(CPC2)'];
  elseif i == 2;
    v1 = real(pc10(:,2)); v2 = imag(pc10(:,2)); lab = ['Re(CPC2)'; 'Im(CPC2)'];
  end


  a = zeros(21,1);
  for lag = -10:10;
    a(lag+11) = corr(v1, v2, lag);
  end

  subplot(3,2,i);
    bar(-10:10, a);
    title(['< ' lab(1,:) ', ' lab(2,:) ' >'])
    xlabel([lab(1,:) ' leads ' lab(2,:) ' | ' lab(2,:) ' leads ' lab(1,:)])
    axis([-11 11 -1 1])
    set(gca, 'XTick', -10:5:10, 'YTick', -1:.25:1)
    grid on

end


%  Look at power spectrum of CPCs:

for i = 1:2;
if i == 1; ctann = real(pc10(1:2:ntim,num)); tit = ['Real CPC' num2str(num)];
else; ctann = imag(pc10(1:2:ntim,num)); tit = ['Imag CPC' num2str(num)];
end
nx = length(ctann);
nfft = 64; 
noverlap = nfft/2;

[p, f] = spectrum(ctann, nfft, noverlap);
n2 = nfft/2;
f2 = 0.25 * (0:n2)/n2;
%f2 = 2 * (0:n2)/n2;
rho = (corr(ctann, ctann, 1));% + sqrt(corr(ctann, ctann, 2)))/2;
%      (corr(ctann, ctann, 3)^(1/3))) / 3;
%rho = corr(ctann, ctann, 1);
rn = (1-rho^2) ./ (1-2*rho*cos((pi/n2)*(0:n2))+rho^2);
rn = rn / mean(rn);
rn = rn * mean(p(:,1));
rner1 = rn * 2.03;
rner5 = rn * 1.66;
dofx = nx / n2; 
figure(2)
sp(i)
     semilogy(f2, p(:,1), 'b-', f2, rn, 'b-', ...
              f2, rner5, 'b--', f2, rner1, 'b-.')
     axis([0 .25 .1 10])
     grid
     title(['Power Spectrum for ' tit ':  SSTA(180:95w 6s:6n)'])
     xlabel(['Frequency:  yr^-^1;  Degrees of Freedom:  15.6;'...
             '  Bandwidth:  7.8 x 10^-^3 yr^-^1'])
     legend('CT Spectrum', 'Red Noise', '95% Confidence', '99% Confidence');

end

cd /home/disk/tao/dvimont/matlab/CSIRO/Plots