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 + -
显示快捷键?