我长期坚持这个问题。我真的很感激我能得到的任何帮助。我有一个复杂的方程,它有分支切割(其中4个,但在附加的代码中,我只有一个)。这表示横跨y轴的相位跳跃。我正在尝试使用相位展开,这样我的轮廓图中就不会有任何分支切割。当我将分支水平切割时,使用MATLAB的unwrap
函数可以轻松解决问题。我相信这是因为分支切口是水平/垂直行/列,因此它们很容易被移除。当分支成角度时,我不能再使用unwrap
函数(因为分支将成角度为例如30度,45度等)。所以,我想知道是否还有解开阶段以摆脱分支削减。
这是水平的情况,分支不连续,水平不连续:
这是水平的情况,在相位展开后没有分支不连续,没有不连续性:
角度30度,原始,不连续:
角度30,包裹相,仍然不连续:
请参阅附带的代码。角度和不连续性由伽马确定。
由于展开功能适用于列方式,而对于具有角度(非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