打开以消除不连续性

时间:2018-05-07 15:11:54

标签: matlab phase unwrap

我长期坚持这个问题。我真的很感激我能得到的任何帮助。我有一个复杂的方程,它有分支切割(其中4个,但在附加的代码中,我只有一个)。这表示横跨y轴的相位跳跃。我正在尝试使用相位展开,这样我的轮廓图中就不会有任何分支切割。当我将分支水平切割时,使用MATLAB的unwrap函数可以轻松解决问题。我相信这是因为分支切口是水平/垂直行/列,因此它们很容易被移除。当分支成角度时,我不能再使用unwrap函数(因为分支将成角度为例如30度,45度等)。所以,我想知道是否还有解开阶段以摆脱分支削减。 这是水平的情况,分支不连续,水平不连续:

这是水平的情况,在相位展开后没有分支不连续,没有不连续性:

角度30度,原始,不连续:

角度30,包裹相,仍然不连续:

enter image description here

请参阅附带的代码。角度和不连续性由伽马确定。

由于展开功能适用于列方式,而对于具有角度(非0)的情况,不连续性以伽玛度出现(因此对于30,它将以30°的角度出现,依此类推),不连续性不会被删除。 有没有办法使用角度从网格中提取矩阵中的元素?我真的很感激我能得到的任何帮助。

%create mesh
x = [-10:0.1:10];
y = [-10:0.1:10];
[X,Y] = meshgrid(x,y);

%create plane
z =X+1i.*Y;

%constants

zc = [0 ];
xc= real(zc);
yc=imag(zc);
gamma =[30]./360*2*pi;   % this determines where the phase jump occurs
L = [ 4];
W = [ 2];
beta = [90]./360*2*pi;
STREN =4.7532e-08.*ones(size(zc,2),1)'; 

%constants

za1 =zc-exp(1i.*gamma).*(0.5.*L+0.5.*W.*exp(1i.*beta));

x1= real(za1); 
y1= imag(za1); 

A = -(-X.*cos(gamma)+x1.*cos(gamma)+y1.*sin(gamma)-Y.*sin(gamma));

%phase

f11 = angle(exp(-1i.*gamma).*(za1-z));

P_f_ =A.*f11+real(STREN.*z);

figure
contourf(X,Y,P_f_,25)
colorbar
hold on

anglef1_unwrapped = f11;

%Then sequentially unwrap all the columns one at a time
for i=1:length(A)
anglef1_unwrapped(:,i) = unwrap(f11(:,i));
end

P_single = real(STREN.*z)+A.*anglef1_unwrapped;
figure
contourf(X,Y,P_single,25)
colorbar

0 个答案:

没有答案