查找复数的相位分量

时间:2017-04-30 07:28:19

标签: matlab complex-numbers

我正在绘制激光结构中反射率的行为。

Belows是我的代码:

for mm=1:10000
deltabetaL=10-(2*(mm-1)/1000);
kappaL=1;
L=10^-3;
alphalossL=0.1;
phi=0;
c=299792458;
neq=3.5;
v=c/neq;
gammaL=sqrt((kappaL^2)-(deltabetaL^2));
req=(-j*kappaL*exp(j*phi)*tanh(gammaL))/(gammaL+((alphalossL/2)+j*deltabetaL)*tanh(gammaL));
A=abs(req);
theta=-angle(req);
Qine(mm)=deltabetaL;
Qreq0(mm)=A^2;
Qtheta(mm)=theta;
end
plot(Qine,Qreq0);
figure(2)
plot(Qine,Qtheta);

我预计反射率的幅度A^2和相位分量theta的数字如下

https://drive.google.com/open?id=0Bx6bUTVOinyySW9BZ1dXblFtQWc

https://drive.google.com/open?id=0Bx6bUTVOinyyTTBJTHh6YjctZ0U

(对不起。我无法直接嵌入图片。)

幅度的形式类似于我的预期。但是,关于阶段,存在很大差异。所以我认为问题来自我计算的复数req的相位分量。

有谁能告诉我如何解决它?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的计算没有问题。您尝试复制的绘图的作者将相位角设置在[-0.5 * pi,1.5 * pi]之间。因此,您需要相应地调整theta。 将以下简单的if-else语句添加到循环中似乎有效:

if theta < -0.5*pi
theta = theta + 2*pi;
end
plot(Qine,Qtheta)

enter image description here

当然,你可以提出更有效的方法。