角度の求め方

8 次查看(过去 30 天)
riku
riku 2018-1-24
atan2から求めたθの値から‐π/2したいのですが、そのまま引くと-πからπの範囲を超えてしまいます。 どうすれば-πからπの範囲で計算することができますか?

采纳的回答

Kei Otsuka
Kei Otsuka 2018-1-24
atan2を求める前に-pi/2位相回転してみてはどうでしょうか。
% 基準となる複素数を定義
z1 = -4 -3i;
% atan2を求める
theta = atan2(imag(z), real(z))
% -pi/2してみる
theta -pi/2
上記を実行すると-4.0689となります(孤の中心に対する角度という観点では2.2143と等価)。 ここで、atan2を求める前に-pi/2だけ位相を回してみます。
% -pi/2位相を回転させる。
z2 = -i;
z3 = (real(z1)*real(z2)-imag(z1)*imag(z2)) + (real(z1)*imag(z2)+real(z2)*imag(z1))*i
% atan2でthetaの値を求める
atan2(imag(z2), real(z2))
この場合は2.2143となり、[-pi, pi]の範囲となります。また、Communications System Toolboxをお持ちであれば以下のようなオブジェクトも使えます。
pfo = comm.PhaseFrequencyOffset('PhaseOffset',-90);
y = pfo(z1);
atan2(imag(y), real(y))
  1 个评论
riku
riku 2018-1-25
ありがとうございます。無事解決しました。

请先登录,再进行评论。

更多回答(1 个)

Akira Agata
Akira Agata 2018-1-29
少々手間ですが、MATLABの基本関数を使ったこんな方法でも対応可能です。
% atan2 で求めた theta の値から -pi/2
theta = theta - pi/2;
% [-pi, pi] の範囲に調整
theta = theta - 2*pi*fix(theta/pi);

类别

Help CenterFile Exchange 中查找有关 三角法 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!