ps_unwrap.m
来自「StaMps最新测试版」· M 代码 · 共 145 行
M
145 行
function []=ps_unwrap()%PS_UNWRAP unwrap phase using the 3-D cost function phase unwrapping algorithm %% Andy Hooper, Jun 2006%% ======================================================================% 03/2008 AH: Fixed bug to make prefilter='n' option work% ======================================================================fprintf('Phase-unwrapping...\n')small_baseline_flag=getparm('small_baseline_flag',1);unwrap_patch_phase=getparm('unwrap_patch_phase',1);load psverpsname=['ps',num2str(psver)];rcname=['rc',num2str(psver)];pmname=['pm',num2str(psver)];bpname=['bp',num2str(psver)];if ~strcmpi(small_baseline_flag,'y') sclaname=['scla',num2str(psver)]; apsname=['aps',num2str(psver)]; phuwname=['phuw',num2str(psver)];else sclaname=['scla_sb',num2str(psver)]; apsname=['aps_sb',num2str(psver)]; phuwname=['phuw_sb',num2str(psver)];endps=load(psname);unwrap_ifg_index=getparm('unwrap_ifg_index');unwrap_ifg_index=sort(unwrap_ifg_index);if strcmp(unwrap_ifg_index,'all') unwrap_ifg_index=[1:ps.n_ifg];endif strcmpi(unwrap_patch_phase,'y') pm=load(pmname); ph_w=pm.ph_patch./abs(pm.ph_patch); clear pm if ~strcmpi(small_baseline_flag,'y') ph_w=[ph_w(:,1:ps.master_ix-1),zeros(ps.n_ps,1),ph_w(:,ps.master_ix:end)]; endelse rc=load(rcname); ph_w=rc.ph_rc; clear rc;endix=ph_w~=0;ph_w(ix)=ph_w(ix)./abs(ph_w(ix)); % normalize, to avoid high freq artifacts being introduced in adaptive filteringif ~strcmpi(small_baseline_flag,'y') & exist([sclaname,'.mat'],'file') fprintf(' subtracting scla and master aoe...\n') bp=load(bpname); bperp_mat=[bp.bperp_mat(:,1:ps.master_ix-1),zeros(ps.n_ps,1,'single'),bp.bperp_mat(:,ps.master_ix:end)]; scla=load(sclaname); ph_w=ph_w.*exp(-j*repmat(scla.K_ps_uw,1,ps.n_ifg).*bperp_mat); % subtract spatially correlated look angle error ph_w=ph_w.*repmat(exp(-j*scla.C_ps_uw),1,ps.n_ifg); % subtract master APS clear bp sclaendif strcmpi(small_baseline_flag,'y') & exist([sclaname,'.mat'],'file') fprintf(' subtracting scla...\n') bp=load(bpname); bperp_mat=bp.bperp_mat; scla=load(sclaname); ph_w=ph_w.*exp(-j*repmat(scla.K_ps_uw,1,ps.n_ifg).*bperp_mat); % subtract spatially correlated look angle error clear bp sclaendif exist([apsname,'.mat'],'file') fprintf(' subtracting slave aps...\n') aps=load(apsname); ph_w=ph_w.*exp(-j*aps.ph_aps_slave); clear apsendoptions=struct('master_day',ps.master_day);options.time_win=getparm('unwrap_time_win',1);options.unwrap_method=getparm('unwrap_method',1);options.grid_size=getparm('unwrap_grid_size',1);options.prefilt_win=getparm('unwrap_gold_n_win',1);options.goldfilt_flag=getparm('unwrap_prefilter_flag',1);if strcmpi(small_baseline_flag,'y') %options.lowfilt_flag='y'; options.lowfilt_flag='n'; ifgday_ix=ps.ifgday_ix; day=ps.day-ps.master_day;else lowfilt_flag='n'; ifgday_ix=[]; master_ix=sum(ps.master_day>ps.day)+1; unwrap_ifg_index=setdiff(unwrap_ifg_index,master_ix); % leave master ifg (which is only noise) out day=ps.day(unwrap_ifg_index)-ps.master_day;endph_uw_some=uw_3d(ph_w(:,unwrap_ifg_index),ps.xy,day,ifgday_ix,options);ph_uw=zeros(ps.n_ps,ps.n_ifg,'single');ph_uw(:,unwrap_ifg_index)=ph_uw_some;if exist([sclaname,'.mat'],'file') & ~strcmpi(small_baseline_flag,'y') fprintf('Adding back SCLA and master AOE...\n') scla=load(sclaname); ph_uw=ph_uw+(repmat(scla.K_ps_uw,1,ps.n_ifg).*bperp_mat); % add back spatially correlated look angle error ph_uw=ph_uw+repmat(scla.C_ps_uw,1,ps.n_ifg); % add back master APS clear bp sclaendif exist([sclaname,'.mat'],'file') & strcmpi(small_baseline_flag,'y') fprintf('Adding back SCLA...\n') scla=load(sclaname); ph_uw=ph_uw+(repmat(scla.K_ps_uw,1,ps.n_ifg).*bperp_mat); % add back spatially correlated look angle error clear bp sclaendif exist([apsname,'.mat'],'file') fprintf('Adding back slave APS...\n') aps=load(apsname); ph_uw=ph_uw+aps.ph_aps_slave; clear apsendif strcmpi(unwrap_patch_phase,'y') pm=load(pmname); ph_w=pm.ph_patch./abs(pm.ph_patch); clear pm if ~strcmpi(small_baseline_flag,'y') ph_w=[ph_w(:,1:ps.master_ix-1),zeros(ps.n_ps,1),ph_w(:,ps.master_ix:end)]; end rc=load(rcname); ph_uw=ph_uw+angle(rc.ph_rc.*conj(ph_w));endph_uw(:,setdiff([1:ps.n_ifg],unwrap_ifg_index))=0;save(phuwname,'ph_uw')
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?