Documentation of ldeo_sst_calc_GR


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


Help text

  Load and configure NMC.REANAL data

Cross-Reference Information

This script calls

Listing of script ldeo_sst_calc_GR


clear

cd /home/disk/tao/data/sst_ldeo

filin = ['sstanomldeo18561991.nc'];

nc = netcdf(filin, 'nowrite');
  ts = nc{'ssta'}(:,:,:);
  datets = nc{'T'}(:);
  lat = nc{'Y'}(:);
  lon = nc{'X'}(:);
  add_offset = nc{'ssta'}.add_offset(:);
  scale_factor = nc{'ssta'}.scale_factor(:);
  mv = nc{'ssta'}.missing_value(:);
nc = close(nc)
ts = ts * scale_factor;
ts = ts + add_offset;
mv = mv * scale_factor;
mv = mv + add_offset;

yr = floor(datets/12) + 1960;
mo = floor(datets + 1248) - (yr - 1856)*12 + 1;

[ntim, nlat, nlon] = size(ts);
ts = reshape(ts, ntim, nlat*nlon);
tsave = mean(ts);
kp = find(tsave ~= mv);
ts = ts(:, kp);

%  Get climatology:

[ts, clim] = annave(ts);

%  Get CT*:

getlp = 0;
if getlp;

  tslp = myrunning_ave(ts, 25);
  tslp = myrunning_ave(tslp, 37);
  tshp = ts - tslp;

  cd /home/disk/hayes2/dvimont/data
  save ldeo_sst.mat tshp tslp ts;

else

  cd /home/disk/hayes2/dvimont/data
  load ldeo_sst.mat

end

ntim = size(ts, 1);
%kptime = 37:(ntim - 36);
kptime = 1:ntim;

tsnew = NaN * ones(ntim, nlat*nlon);
tsnew(:, kp) = tshp(kptime, :);
tsnew = reshape(tsnew, ntim, nlat, nlon);

ctlim = [180 270 -6 6];
[xk, yk] = keep_var(ctlim, (360 + lon), lat);
ctstar = squeeze(mean2(mean2(shiftdim(tsnew(:, yk, xk), 1))));

ctstar = (ctstar - mean(ctstar)) / std(ctstar);
ctpat = ctstar' * ts(kptime, :) / (length(ctstar));

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

get_global
default_global
FRAME = [min(lon) (min(lon) + 360) -90 90];

figure(1)
sd(1)
gcont(tem, [-1:.1:1]);
dc
sd(2)
plot(ctstar)
set(gca, 'XTick', [12:120:1600], 'XTickLabel', [1860:10:2000])
axis([0 1561 -3 4])
grid

%  Now, get EOFs:

clear tshp tslp tsnew

%[ts, clim] = annave(ts, clim, 1);
%[ts, clim] = annave(ts(kptime,:));
ntim = size(ts, 1);

%  Check first years (1859-1949)

tkp = 1:(12*(1949-1856+1));
ntim = length(tkp);
[ts, dum] = annave(ts(tkp,:));

tsnew = NaN * ones(ntim, nlat*nlon);
tsnew(:, kp) = ts;
tsnew = reshape(tsnew, ntim, nlat, nlon);
tsnew = cosweight(tsnew, lat);
tsnew = reshape(tsnew, ntim, nlat*nlon);
tsnew = tsnew(:, kp);

c = tsnew' * tsnew;
[lam, lds, per] = eof(c);

lds10 = (ones(size(ts, 2), 1) * (1./(std(lds(:,1:10))))) .* lds(:, 1:10);
pc10 = ts * lds10 / size(ts, 2);

pc10 = ones(ntim,1) * (1./(std(pc10))) .* pc10;
lds10 = pc10'*ts / ntim;

num = 1;
tem = NaN * ones(1, nlat*nlon);
tem(:, kp) = lds10(num, :);
tem = reshape(tem, nlat, nlon);

figure(1)
sd(1)
gcont(-1 * tem, [-2:.1:2]);
dc
sd(2)
plot(-1 * pc10(:, num));

%  Now, regress CT* against G and yyy...

ctstar = ctstar(1:ntim);
a1 = corr(ctstar, pc10(1:ntim, 1));
gr = pc10(1:ntim,1) - a1 * ctstar;

gr = (gr - mean(gr)) / std(gr);
grpat = gr' * ts / ntim;

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

figure(1)
sd(1)
gcont(-1 * tem, [-2:.1:2]);
dc
sd(2)
plot(-1 * gr);

%  Check out LP and HP filtered GR:

grlp = myrunning_ave(myrunning_ave(gr, 25), 37);
grhp = gr - grlp;

grlp = (grlp - mean(grlp)) / std(grlp);
grhp = (grhp - mean(grhp)) / std(grhp);
grlppat = grlp' * ts / ntim;
grhppat = grhp' * ts / ntim;

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

figure(1)
sd(1)
gcont(-1 * tem, [-2:.1:2]);
dc
sd(2)
plot(-1 * grhp);

%  Check lag/lead relationship:

ctstar = -1 * ctstar;

corr_grct = [];
for i = -24:12;
  corr_i = corr(ctstar, gr, i);
  corr_grct = [corr_grct corr_i];
end

subplot(2,1,1)
bar(-24:12, corr_grct)
grid
title(['Lagged Correlations between GR and CT*'])
xlabel(['Months:  Negative => CT* leads GR;  Positive => CT* lags GR'])
ylabel(['Correlation Coefficient'])
axis([-25 13 -0.2 0.5])

corr_grct = [];
corr_hpgrct = [];
for i = -24:12;
  corr_i = corr(ctstar, grhp, i);
  corr_grct = [corr_grct corr_i];
end

subplot(2,1,2)
bar(-24:12, corr_grct)
grid
title(['Lagged Correlations between High Pass GR and CT*'])
xlabel(['Months:  Negative => CT* leads GR;  Positive => CT* lags GR'])
ylabel(['Correlation Coefficient'])
axis([-25 13 -0.5 0.8])