# If z is a vector , what is the difference between angle(z) and atan2(z)

3 ビュー (過去 30 日間)
Hassan Abdelazeem 2022 年 1 月 12 日
コメント済み: Hassan Abdelazeem 2022 年 1 月 12 日
If z is a vector z=x+j*y, what is the difference between angle(z) and atan2(z)
becuae when I used angle(x+i*.y) gives a differen results
this is the matlab code
clc
clear
close all
f=50;w=2*pi*f;Tperiod=1/f;Tmax=4*Tperiod;Dt=Tperiod/(6*f);N=(Tmax/Dt)+1;
t0=0.00001;
t=zeros(N,1); Bmx=zeros(N,1); Bmy=zeros(N,1);
thetaB=90;Bmax=1.6;
for k=1:N+1
t(k)=t0+Dt*(k-1);
Bmx(k)=Bmax*sin(w*t(k));
Bmy(k)=Bmax*sin(w*t(k)-(thetaB)*pi/180);
end
z=Bmx+i*Bmy;
figure(1);
plot(z,'k*')
hold on
plot(Bmx,Bmy,'r','LineWidth',2)
figure(2)
P1 = atan2(Bmy,Bmx);
P2=1.6.*(180/pi).*angle(Bmx+i.*Bmy);
P3=1.6.*(180/pi).*angle(z);
hold on
plot(P1,'k*')
plot(P2,'r','LineWidth',2)
plot(P3,'b','LineWidth',2)
##### 1 件のコメント表示非表示 なし
John D'Errico 2022 年 1 月 12 日
You could not possibly have used atan2, becuase atan2 does not work with only one argument.

サインインしてコメントする。

### 採用された回答

John D'Errico 2022 年 1 月 12 日

Perhaps you did not use atan2 properly. Consider this example:
z = [1+i,1-i,-1+i,-1-i];
angle(z)
ans = 1×4
0.7854 -0.7854 2.3562 -2.3562
atan2(imag(z),real(z))
ans = 1×4
0.7854 -0.7854 2.3562 -2.3562
If you want the result in degrees, this is not difficult. In fact, with atan2d, it already does the conversion for you to degrees.
angle(z)*180/pi
ans = 1×4
45 -45 135 -135
atan2d(imag(z),real(z))
ans = 1×4
45 -45 135 -135
The two functions will be compatible, as long as you use them properly. remember that atan2 is a TWO argument utility. You need to separate out the real and imaginary parts to use atan2 or atan2d.
##### 1 件のコメント表示非表示 なし
Hassan Abdelazeem 2022 年 1 月 12 日

サインインしてコメントする。

### その他の回答 (1 件)

Paul 2022 年 1 月 12 日

atan2() returns the answer in radians. So multiply it by 180/pi as for P2 and P3 (or use atan2d(), though atan2d() might result in small numerical differences). And P1 will also need to be multiplied by 1.6 to match P2 and P3.
##### 3 件のコメント表示非表示 2 件の古いコメント
Hassan Abdelazeem 2022 年 1 月 12 日