If z is a vector , what is the difference between angle(z) and atan2(z)
7 次查看(过去 30 天)
显示 更早的评论
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
编辑: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)
atan2(imag(z),real(z))
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
atan2d(imag(z),real(z))
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 个)
Paul
2022-1-12
编辑: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 个评论
Paul
2022-1-12
Absolutely. Which is why, P1 needs to be include the 1.6*(*180/pi) factor as applied to P2 and P3.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Special Functions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!