Global Index (short | long) | Local contents | Local Index (short | long)
save sst_eof_bp_4.5-50yr.mat ld10 pc10 lam per kp lat lon ctlim
This script calls | |
---|---|
clear cd /home/disk/hayes2/dvimont/csiro/data filin = ['temp_A_L1-10.nc']; nc = netcdf(filin, 'nowrite'); depth = nc{'depth'}(:); lat = nc{'latitude'}(:); lon = nc{'longitude'}(:); ctlim = [110 300 -75 65]; [xk, yk] = keep_var(ctlim, lon, lat); temp = nc{'temp'}(:,1,yk,xk); mv = nc{'temp'}.missing_value(:); nc = close(nc); [ntim, nlev, nlat, nlon] = size(temp); temp(find(temp == mv)) = NaN * ones(size(find(temp == mv))); lat = lat(yk); lon = lon(xk); get_global; default_global; FRAME = ctlim; temp = reshape(squeeze(temp), ntim, nlat*nlon); temp = detrend(temp); temp = cosweight(temp, lat); clim = mean(temp); kp = find(~isnan(clim)); npt = length(kp); temp = temp(:, kp); [b, a] = butter(6, (2/4.5)); [b2, a2] = butter(6, (2/50)); templp = filtfilt(b2, a2, temp); tempbp = filtfilt(b, a, temp)-templp; temphp = temp - filtfilt(b, a, temp); c = tempbp*tempbp'; [lam, pcs, per] = eof(c); pc10 = pcs(:,1:10); wgt = std(pc10); pc10 = (pc10 - ones(ntim, 1)*mean(pc10)) ./ (ones(ntim, 1)*wgt); ld10 = pc10' * templp ./ ntim; cd /home/disk/hayes2/dvimont/csiro/matlab_data % Now look at HEAT regressed on PC's of the above. clear cd /home/disk/hayes2/dvimont/csiro/data filin = ['temp_A_L1-10.nc']; nc = netcdf(filin, 'nowrite'); depth = nc{'depth'}(:); lat = nc{'latitude'}(:); lon = nc{'longitude'}(:); ctlim = [110 300 -75 65]; % Pacific only % ctlim = [-.1 360 -75 75]; [xk, yk] = keep_var(ctlim, lon, lat); temp = nc{'temp'}(:,:,yk,xk); mv = nc{'temp'}.missing_value(:); nc = close(nc); [ntim, nlev, nlat, nlon] = size(temp); clim = mean(squeeze(temp(:,7,:,:))); tkp = find(reshape(clim, 1, nlat*nlon) ~= mv); nkp = length(tkp); temp = reshape(temp, ntim, nlev, nlat*nlon); temp = temp(:, :, tkp); lat = lat(yk); lon = lon(xk); get_global; default_global; FRAME = ctlim; middepth = [0; (depth(1:7)+depth(2:8)) / 2]; wgt = diff(middepth)/100; temp = shiftdim(temp, 1); temp = reshape(temp, nlev, nkp*ntim); heat = wgt' * temp(1:7,:); heat = shiftdim(reshape(heat, nkp, ntim), 1); temp = shiftdim(reshape(temp(1, :), nkp, ntim), 1); temp = detrend(temp); heat = detrend(heat); % Load top level EOF data cd /home/disk/hayes2/dvimont/csiro/matlab_data load sst_eof_lp_50yr.mat pcLP = pc10; perLP = per; %nlat = length(lat); nlon = length(lon); %ntim = size(pc10, 1); npt = size(ld10, 1); load sst_eof_bp_4.5-50yr.mat pcBP = pc10; perBP = per; load sst_eof_hp_4.5yr.mat pcHP = pc10; perHP = per; lab = ['LP'; 'BP'; 'HP']; pol = -1*[1 1 -1]; c = 4.2*1000*27500*100*100*1e-12 num = 1; for i = 1:3; if i == 1; tit = '50 Year Lowpass Filter Used for EOF'; elseif i == 2; tit = '4.5 - 50 Year Bandpass Filter Used for EOF'; elseif i == 3; tit = '4.5 Year Highpass Filter Used for EOF'; end eval(['timtem = pc' lab(i,:) '(:,num) * pol(i);']); eval(['per = per' lab(i,:) '(num);']); tem1 = NaN * ones(1, nlat*nlon); tem2 = NaN * ones(1, nlat*nlon); tem1(tkp) = timtem' * temp ./ ntim; tem1 = reshape(tem1, nlat, nlon); tem2(tkp) = c*timtem' * heat ./ ntim; tem2 = reshape(tem2, nlat, nlon); tem1 = reshape(tem1, nlat, nlon); tem2 = reshape(tem2, nlat, nlon); figure(i); figure_orient; sp(1); mcont(tem1, [-2:.05:2], 'giso'); title(['<12.5m TEMP, PC' num2str(num) '\_' lab(i,:) '> : ' tit]); xlabel('Contour Interval: 0.05 C (std)^-^1'); sp(2); mcont(tem2, [-200:10:200], 'giso'); title(['<275m HEAT, PC' num2str(num) '\_' lab(i,:) '> : ' tit]); xlabel('Contour Interval: 10 * 10^1^2 J (std)^-^1'); cd /home/disk/tao/dvimont/matlab/CSIRO/Plots eval(['print -dps2 TEMP12.5_HEAT_PC' num2str(num) '_' lab(i,:) '.ps']); figure(4); subplot(3,1,i); plot(1:1000, timtem); axis([0 1001 -3.5 3.5]); title(['PC' num2str(num) ' for ' lab(i,:) ' filtered 12.5m TEMP: ' ... num2str(round(per)) '% Variance Explained']); set(gca, 'YTick', [-3:3]); xlabel('year'); ylabel('std'); grid on end eval(['print -dps2 PC' num2str(num) '_LP_BP_HP.ps']); cd /home/disk/tao/dvimont/matlab/CSIRO/Data load butter_4.5_ctstar.mat