ps_plot.m
来自「StaMps最新测试版」· M 代码 · 共 796 行 · 第 1/2 页
M
796 行
function []=ps_plot(value_type,plot_flag,lims,ref_ifg,ifg_list,n_x,cbar_flag,textsize,textcolor,lon_rg,lat_rg)% PS_PLOT plot ps values for selected ifgs% PS_PLOT(VALUE_TYPE,BACKGROUND,PHASE_LIMS,REF_IFG,IFG_LIST,N_X,CBAR_FLAG,TEXTSIZE,TEXTCOLOR,LON_RG,LAT_RG) %% valid VALUE_TYPE's are:% 'w' for wrapped phase% 'p' for spatially filtered wrapped phase % 'u' for unwrapped phase% 'd' for spatially correlated DEM error (rad/m)% 's' for atmosphere and orbit error (AOE) phase due to slave% 'm' for AOE phase due to master% 'a' for atmosphere phase due to slave that correlates with topography (ACT)% 'w-d' for wrapped phase minus dem error% 'u-d' for unwrapped phase minus dem error% 'u-m' for unwrapped phase minus master AOE% 'u-dm' for unwrapped phase minus dem error and master AOE% 'u-dms' for unwrapped phase minus dem error and all AOE% 'v' mean LOS velocity (MLV) in mm/yr% 'v-d' MLV calculated after removal of dem error (MLV)% 'vs-d' standard deviation of MLV after removal of dem error (mm/yr)% 'usb' for unwrapped phase of short baseline ifgs% 'dsb' for spatially correlated DEM error (rad/m) % 'usb-d' for unwrapped phase of sb ifgs minus dem error from short baseline ifgs% 'rsb' residual between unwrapped phase of sb ifgs and inverted% 'vsb' mean LOS velocity (mm/yr) from short baseline ifgs%% valid BACKGROUND's are the same as for PS_PLOT_IFG (default 1)% % PHASE_LIMS = 1x2 vector with colormap limits % defaults to the range of the plotted phase %% REF_IFG = number of interferogram to reference to - defaults to 0 (master)% -1 for incremental referencing%% IFG_LIST = list of interferograms to plot - defaults to [] (all)%% N_X = maximum number of images to plot per row % defaults to 0 (find optimum based on image size)%% CBAR_FLAG = colorbar flag - defaults to 0 (plot on master, if plotted)% 1 = don't plot a colorbar% 2 = plot a colorbar underneath%% TEXTSIZE = size of date text in points - defaults to 0 (best)% +ve size plots a top (default), -ve size plots at bottom%% TEXTCOLOR = 1x3 color vector - default white or black depending on BACKGROUND%% LON_RG = longitude range - defaults to [] (whole image)%% LAT_RG = latitude range - defaults to [] (whole image)%% Andy Hooper, June 2006%% ======================================================================% 09/2006 AH: 'v' option added% 01/2007 AH: several new options added and 'u' options changed to print% only unwrapped IFGs by default% 01/2007 AH: Added 64-bit machine compatibility% ======================================================================if nargin<1 help ps_plot error('not enough input args')end if nargin < 2 plot_flag=1;endif nargin < 3 lims=[];endif nargin < 4 ref_ifg=0;endif nargin < 5 ifg_list=[];endif nargin < 6 n_x=0;endif nargin < 7 cbar_flag=0;endif nargin < 8 textsize=0;endif nargin < 9 | isempty(textcolor) if plot_flag==1 | plot_flag==6 textcolor=[0 0 0.004]; else textcolor=[1 1 0.996]; endendif lims==0 lims=[];endif nargin < 10 lon_rg=[];endif nargin < 11 lat_rg=[];endn_y=0;units='rad';load psverpsname=['ps',num2str(psver)];pmname=['pm',num2str(psver)];rcname=['rc',num2str(psver)];rcuwname=['rcuw',num2str(psver)];phuwname=['phuw',num2str(psver)];phuwsbname=['phuw_sb',num2str(psver)];phuwsbresname=['phuw_sb_res',num2str(psver)];scnname=['scn',num2str(psver)];apsname=['aps',num2str(psver)];apssbname=['aps_sb',num2str(psver)];sclaname=['scla',num2str(psver)];sclasbname=['scla_sb',num2str(psver)];meanvname=['mv',num2str(psver)];ps=load(psname);day=ps.day;master_day=ps.master_day;xy=ps.xy;lonlat=ps.lonlat;n_ps=ps.n_ps;n_ifg=ps.n_ifg;master_ix=sum(day<master_day)+1;ref_ps=0; unwrap_ifg_index=getparm('unwrap_ifg_index');if strcmpi(getparm('small_baseline_flag'),'y') unwrap_ifg_index_sb=unwrap_ifg_index; if strcmpi(unwrap_ifg_index,'all') unwrap_ifg_index_sb=[1:ps.n_ifg]; end phuw=load(phuwname,'unwrap_ifg_index_sm'); if isfield(phuw,'unwrap_ifg_index_sm'); unwrap_ifg_index=phuw.unwrap_ifg_index_sm; else unwrap_ifg_index=[1:ps.n_image]; end if length(value_type)>2 & (value_type(1:3)=='usb'|value_type(1:3)=='rsb') & isempty(ifg_list) ifg_list=unwrap_ifg_index_sb; endelse if strcmpi(unwrap_ifg_index,'all') unwrap_ifg_index=[1:ps.n_ifg]; endendif (value_type(1)=='u' | value_type(1)=='a') & isempty(ifg_list) ifg_list=unwrap_ifg_index;end switch(value_type) case {'w'} rc=load(rcname); ph_all=rc.ph_rc; if ref_ifg~=0 ph_all=ph_all.*conj(repmat(rc.ph_reref(:,ref_ifg),1,n_ifg)); end clear rc case {'w-d'} rc=load(rcname); ph_all=rc.ph_rc; if ~strcmpi(getparm('small_baseline_flag'),'y') scla=load(sclaname); else scla=load(sclasbname); end ph_all=ph_all.*exp(-j*scla.ph_scla); if ref_ifg~=0 ph_all=ph_all.*conj(repmat(rc.ph_reref(:,ref_ifg),1,n_ifg)); end clear rc scla case {'w-dm'} rc=load(rcname); ph_all=rc.ph_rc; scla=load(sclaname); ph_all=ph_all.*exp(-j*scla.ph_scla); ph_all=ph_all.*repmat(exp(-j*scla.C_ps_uw),1,size(ph_all,2)); ph_all(:,ps.master_ix)=1; if ref_ifg~=0 ph_all=ph_all.*conj(repmat(rc.ph_reref(:,ref_ifg),1,n_ifg)); end clear rc scla case {'u'} phuw=load(phuwname); ph_all=phuw.ph_uw; clear phuw ref_ps=ps_setref; case {'usb'} uw=load(phuwsbname); ph_all=uw.ph_uw; clear uw ref_ps=ps_setref; textsize=0; case {'dsb'} scla=load(sclasbname); ph_all=scla.K_ps_uw; clear scla ref_ps=ps_setref; units='rad/m'; case {'usb-d'} uw=load(phuwsbname); scla=load(sclasbname); ph_all=uw.ph_uw - scla.ph_scla; clear uw scla ref_ps=ps_setref; textsize=0; case {'usb-a'} uw=load(phuwsbname); aps=load(apssbname); ph_all=uw.ph_uw - aps.ph_aps_slave; clear uw aps ref_ps=ps_setref; textsize=0; case {'usb-da'} uw=load(phuwsbname); scla=load(sclasbname); aps=load(apssbname); ph_all=uw.ph_uw - scla.ph_scla - aps.ph_aps_slave; clear uw scla aps ref_ps=ps_setref; textsize=0; case {'rsb'} uw=load(phuwsbname); res=load(phuwsbresname); ph_all=zeros(size(uw.ph_uw)); ph_all(:,unwrap_ifg_index_sb)=uw.ph_uw(:,unwrap_ifg_index_sb)-res.ph_res(:,unwrap_ifg_index_sb); clear uw ref_ps=ps_setref; textsize=0; case {'asb'} aps=load(apssbname); ph_all=aps.ph_aps_slave; clear aps ref_ps=ps_setref; textsize=0; case {'u-dms'} uw=load(phuwname); scn=load(scnname); scla=load(sclaname); ph_all=uw.ph_uw - scn.ph_scn_slave - repmat(scla.C_ps_uw,1,size(uw.ph_uw,2)) - scla.ph_scla; clear uw scn scla ph_all(:,ps.master_ix)=0; ref_ps=ps_setref; case {'u-dmas'} uw=load(phuwname); scn=load(scnname); scla=load(sclaname); aps=load(apsname); ph_all=uw.ph_uw - scn.ph_scn_slave - repmat(scla.C_ps_uw,1,size(uw.ph_uw,2)) - scla.ph_scla - aps.ph_aps_slave; clear uw scn scla ref_ps=ps_setref; case {'u-dm'} uw=load(phuwname); scla=load(sclaname); ph_all=uw.ph_uw; %ph_all(:,unwrap_ifg_index)=ph_all(:,unwrap_ifg_index) - repmat(scla.C_ps_uw,1,length(unwrap_ifg_index)); %ph_all(:,unwrap_ifg_index) = ph_all(:,unwrap_ifg_index) - scla.ph_scla(:,unwrap_ifg_index); ph_all=uw.ph_uw - repmat(scla.C_ps_uw,1,size(uw.ph_uw,2)) - scla.ph_scla; ph_all(:,master_ix)=0; clear uw scla ref_ps=ps_setref; case {'u-dma'} uw=load(phuwname); scla=load(sclaname); aps=load(apsname); ph_all=uw.ph_uw; ph_all=uw.ph_uw - repmat(scla.C_ps_uw,1,size(uw.ph_uw,2)) - scla.ph_scla - aps.ph_aps_slave; ph_all(:,master_ix)=0; clear uw scla aps ref_ps=ps_setref; case {'u-a'} uw=load(phuwname); aps=load(apsname); ph_all=uw.ph_uw; ph_all=uw.ph_uw - aps.ph_aps_slave; ph_all(:,master_ix)=0; clear uw aps ref_ps=ps_setref; case {'u-d'} uw=load(phuwname); scla=load(sclaname); ph_all=uw.ph_uw - scla.ph_scla; clear uw scla ref_ps=ps_setref; case {'u-m'} uw=load(phuwname);% scn=load(scnname); scla=load(sclaname); ph_all=uw.ph_uw;% ph_all(:,unwrap_ifg_index)=ph_all(:,unwrap_ifg_index) - repmat(scn.ph_scn_master,1,length(unwrap_ifg_index)); %ph_all(:,unwrap_ifg_index)=ph_all(:,unwrap_ifg_index) - repmat(scla.C_ps_uw,1,length(unwrap_ifg_index)); ph_all=uw.ph_uw - repmat(scla.C_ps_uw,1,size(uw.ph_uw,2)); ph_all(:,master_ix)=0;% clear uw scn clear uw scla ref_ps=ps_setref; case {'a'} aps=load(apsname); %ph_all=exp(j*ph_scn); ph_all=aps.ph_aps_slave; clear aps ref_ps=ps_setref; case {'s'} scn=load(scnname); %ph_all=exp(j*ph_scn); ph_all=scn.ph_scn_slave; clear scn ref_ps=ps_setref; case {'m'} %scn=load(scnname); %ph_all=scn.ph_scn_master; %clear scn scla=load(sclaname); ph_all=scla.C_ps_uw; clear scla ref_ps=ps_setref; case {'d'} scla=load(sclaname); ph_all=scla.K_ps_uw; clear scla ref_ps=ps_setref; units='rad/m'; case {'v'} uw=load(phuwname); ph_uw=uw.ph_uw; clear uw ph_all=zeros(n_ps,1); ref_ps=ps_setref; unwrap_ifg_index=setdiff(unwrap_ifg_index,ps.master_ix); if ~isempty(ifg_list) unwrap_ifg_index=intersect(unwrap_ifg_index,ifg_list); ifg_list=[]; end ph_uw=ph_uw(:,unwrap_ifg_index); day=day(unwrap_ifg_index); ph_uw=ph_uw-repmat(mean(ph_uw(ref_ps,:)),n_ps,1); % Each ifg has master APS - slave APS, including master % (where slave APS = master APS) so OK to include master in inversion G=[ones(size(day)),day-master_day]; %G=[ones(size(day)),day-master_day,cos(2*pi*(day-datenum(2000,1,0))/365.25-5.86)]; m=G\double(ph_uw'); lambda=getparm('lambda'); ph_all=m(2,:)'*365.25/4/pi*lambda*1000; % m(1,:) is master APS + mean deviation from model save mean_v m %ph_all=m(3,:)'/4/pi*lambda*1000; %ph_all=m(1,:)'; textsize=0; units='mm/yr'; case {'v-d'} uw=load(phuwname); scla=load(sclaname); ph_uw=uw.ph_uw - scla.ph_scla; clear uw scla unwrap_ifg_index=setdiff(unwrap_ifg_index,ps.master_ix); ph_all=zeros(n_ps,1); ref_ps=ps_setref; if ~isempty(ifg_list) unwrap_ifg_index=intersect(unwrap_ifg_index,ifg_list); ifg_list=[]; end ph_uw=ph_uw(:,unwrap_ifg_index); day=day(unwrap_ifg_index); ph_uw=ph_uw-repmat(mean(ph_uw(ref_ps,:)),n_ps,1); %G=[ones(size(day)),day-master_day,cos(2*pi*(day-datenum(2000,1,0))/365.25-5.86)]; G=[ones(size(day)),day-master_day] ; m=G\double(ph_uw'); save mean_v m lambda=getparm('lambda');
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?