Documentation of sst_eof


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


Help text

  The following files are in the directory below:

  filin = 'temp_A_L1_1000_years.nc'    % SST
  filin = 'temp_A_L1-5_1000_years.nc'  % Averaged Pot. Temp., Top 160m
  filin = 'temp_A_L1-10_1000_years.nc' % Averaged Pot. Temp., Top 620m
  filin = 'temp_M_L1_1000_years_new.nc'  % Monthly SST
  filin = 'temp_M_L5_1000_years_new.nc'  % Monthly layer 5 temp

Cross-Reference Information

This script calls

Listing of script sst_eof


clear

cd /home/disk/hayes2/dvimont/csiro/data

nc = netcdf(filin, 'nowrite');
  lat = nc{'latitude'}(:);
  lon = nc{'longitude'}(:);

%  ctlim = [130 285 -50 65];
  ctlim = [180 270 -6 6];
%  ctlim = [-.1 360 -90 90];
  [xk, yk] = keep_var(ctlim, lon, lat);

  temp = nc{'temp'}(:,1,yk,xk);
%  temp = nc{'temp'}(:,yk,xk);
  mv = nc{'temp'}.missing_value(:);
nc = close(nc);
temp = squeeze(temp);
[ntim, nlat, nlon] = size(temp);

temp(find(temp == mv)) = NaN * ones(size(find(temp == mv)));
lat = lat(yk); lon = lon(xk);
%temp = reshape(temp, ntim, nlat*nlon);
%temp = rave(temp, 1);
%temp = reshape(temp, ntim, nlat, nlon);

get_global;
XAX = lon; YAX = lat; FRAME = ctlim;

if 0
  ctlim2 = [180 270 -6 6];
  [xk, yk] = keep_var(ctlim2, lon, lat);
  ctstar = squeeze(mean2(mean2(shiftdim(temp(:,yk,xk),1))));
end

%ctann = detrend(ctstar);
%ctann = (ctann - rave(rave(ctann, 2), 2));
%ctann = rave(rave(ctann, 2), 2);
ctann = detrend(chi);
ctann = (ctann - mean(ctann)) / std(ctann);
ctpat = ctann' * reshape(temp, ntim, nlat*nlon) / ntim;
tem = reshape(ctpat, nlat, nlon);

%[temp, clim] = annave(temp);
%temp2 = (temp - ones(ntim, 1)*mean2(temp));

%[temp, clim] = remove_mean(temp);
temp = reshape(temp, ntim, nlat*nlon);
clim = mean2(temp);
temp = detrend(temp);
temp = reshape(temp, ntim, nlat, nlon);
temp = cosweight(temp, lat);
kp = find(~isnan(clim));
temp = reshape(temp, ntim, nlat*nlon);
temp = temp(:, kp);

c = temp' * temp / ntim;
[lam, lds, per] = eof(c);

lds10 = lds(:,1:10);
lds10 = (lds10 - ones(size(kp'))*mean(lds10)) ./ (ones(size(kp'))*std(lds10));
pc10 = temp * lds10 / length(kp);
pc10 = pc10 ./ (ones(ntim, 1) * std(pc10));
lds10 = pc10' * temp / ntim;

figure(1)
num = 1;
tem = NaN * ones(1, nlat*nlon);
tem(kp) = lds10(num,:);
tem = reshape(tem, nlat, nlon);
sd(1);
     gshade(tem, [-1:.05:1]);
     colorbar
     dc
sd(2);
     plot(pc10(:,num));
%     plot(ctann);
     set(gca, 'XTick', [0:100:1000])
     axis([0 1001 -3 3])
     grid



ctstar = squeeze(mean2(mean2(shiftdim(temp, 1))));
[ctstar, clim] = annave(ctstar);

if 0
  clear ctann
  ctann(1) = mean(ctstar(1:2));
  for i = 2:((ntim/3));
    ctann(i) = mean(ctstar(3*(i-1) + [0:2]));
  end
  ctann = detrend(ctann);
  nx = length(ctann);
end

ctann = detrend(pc10(:,1)');
nx = length(ctann);

if 1;
%  ctann = detrend(ctstar(101:550));
  ctann = detrend(ctstar(551:1000));
%  ctann = detrend(ctann);
  nx = length(ctann);
end

cd /home/disk/tao/dvimont/matlab/CSIRO/Data
load ceof_heat1-7_yr551-1000lp.mat
load ceof_heat1-7_yr101-550lp.mat
ctannlp = real(pcslp(:,1)); fig = 3;
ctannlp = imag(pcslp(:,1)); fig = 4;
load ceof_heat1-7_yr551-1000.mat
load ceof_heat1-7_yr101-550.mat
ctann = real(pcslp(:,1));
ctann = imag(pcslp(:,1));

%  Look at spectral characteristics of ctstar:

nfft = 128; 
noverlap = nfft/2;

[p, f] = spectrum(ctannlp, nfft, noverlap);
n2 = nfft/2;
f2 = 0.5 * (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(fig)
sd(1)
     semilogy(f2, p(:,1), 'b-', f2, rn, 'b-', ...
	      f2, rner5, 'b--', f2, rner1, 'b-.')
%     axis([0 0.5 0.005 1])
%     axis([0 0.5 0.05 10])
%     axis([0 2 .001 5])
     axis([0 0.2 1e4 1e7])
     grid
     title('Power Spectrum for CSIRO CT:  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');
sd(2)
     plot(1:length(ctann), ctann);
     title('Detrended CT index, Annual average');
     xlabel('Years')
     ylabel('Degrees C')
     grid

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



%  Butterworth Filter:
yr = [100 200];
subplot(3,2,6);
for i = 1:2
[b,a]=butter(6,(2/(yr(i))));
[h,w]=freqz(b,a,1024);
r=abs(h);
rlow=r.^2;
f2=w/(2*pi);

i
if i == 2;
  rlow2 = rlow;
else
  rlow1 = rlow;
end
end; 

plot(f2, rlow1, '--k', f2, rlow2, '-k');
set(gca, 'box', 'on');
grid on
axis([0 .5 -.1 1.1])
title('Butterworth Filter response:  N=6')
legend('4 year', '4.5 year');


clow = filtfilt(b, a, ctstar);
chi = ctstar - clow;
ctann = clow;
ctann = chi;

%  Plot the data
ctann = detrend(clow);
for j = 1:2;
  if j == 1;
    ctann = ctstar; holdon = 0; 
  elseif j == 2;
    ctann = ct12; holdon = 1;
  end
for i = 1:4;
  subplot(4,1,i);
    if holdon; hold on; end;
    ind = (250*(i-1)) + [1:250];
    a = plot(ind, ctann(ind), '-k');
    if holdon; set(a, 'linewidth', 1); end;
    grid on
    axis([250*(i-1) 250*i -.7 .7])
    set(gca, 'YTick', [-1:.5:1]);
    if holdon; hold off; end;
end
end
xlabel('Year');
subplot(4,1,1)
title('Lowpass filtered CT Index (4.5 year cutoff)')

subplot(3,2,5);
set(gca, 'XTick', [0:.1:.5])
subplot(3,2,6);
xlabel('Frequency:  yr^-^1')

%  Define indices

ctlow = rave(rave(detrend(ctstar), 3), 3);
ctlow = detrend(clow);
ctlow = (ctlow - mean(ctlow)) / std(ctlow);
ctpat = ctlow' * reshape(temp, ntim, nlat*nlon) / ntim;
ctlowpat = reshape(ctpat, nlat, nlon);
cthi = detrend(chi);
cthi = (cthi - mean(cthi)) / std(cthi);
ctpat = cthi' * reshape(temp, ntim, nlat*nlon) / ntim;
cthipat = reshape(ctpat, nlat, nlon);
ctdetrend = detrend(ctstar);
ctdetrend = (ctdetrend - mean(ctdetrend)) / std(ctdetrend);
ctpat = ctdetrend' * reshape(temp, ntim, nlat*nlon) / ntim;
ctdetrendpat = reshape(ctpat, nlat, nlon);

%cd /home/disk/tao/dvimont/matlab/CSIRO/Data
%save ct_csiro.mat ctlow cthi ctdetrend ctlowpat cthipat ctdetrendpat

%  Plot some regression patterns:

ctlow = cthi;
ctlowpat = cthipat;
cint = .05;
clims = sort(unique([0:-cint:min(min(ctlowpat)) 0:cint:max(max(ctlowpat))]));
clims = [min(clims)-cint clims max(clims)+cint];
figure(2)
sd(1)
     gshade(ctlowpat, clims)
     colorbar
     title('CSIRO SST regressed on Lowpass Filtered CT Index');
     xlabel('Contour Interval:  0.05 C (std)^-^1');
     dc
sd(2)
     plot(1:1000, ctlow)
     title('Detrended, Low Pass Filtered CT index, Annual Data');
     xlabel('Years')
     ylabel('STD')
     grid
     axis([0 1001 -3 3])
     set(gca, 'YTick', [-3:3]);

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