Re-scaling matrix entries to lie within a range

3 次查看(过去 30 天)
Hey all,
Basically, I have a matrix containing a wide range of phase angles, but I want to re-scale all these angles to their equivalent values within the range [-pi, pi]. Hence, for example, 1.5*pi will become -0.5*pi.
Would anyone have any tips on how to do this? I'm not looking for a full answer; merely any suggestions that would help me get started would be much appreciated!
Craig

采纳的回答

Sven
Sven 2011-11-21
You can use the "mod" command with modulus 2*pi, then minus pi from the result. For example:
mod(4.5*pi + pi, 2*pi) - pi
ans =
-1.5708
mod(1.5*pi + pi, 2*pi) - pi
ans =
1.5708
(above edited for Walter's amendment)
  3 个评论
Sven
Sven 2011-11-22
Oops. Yep, you're right of course Walter.. what can I say... I was in a rush? Edited accordingly :)

请先登录,再进行评论。

更多回答(2 个)

Walter Roberson
Walter Roberson 2011-11-22
mod(angle + pi, 2*pi) - pi
Note: this will produce the range semi-open interval [-pi, pi) . The original closed interval [-pi, pi] is ambiguous as to what -pi or pi exactly should map to (as they are the same angle)

C Meek
C Meek 2011-11-22
Thanks, that's is helping me on my way.
However, surely once 1.5*pi has been re-scaled it should be -1.5708, and not +1.5708, or am I missing something?
  1 个评论
Sven
Sven 2011-11-22
Yeah, you're right... original answer was "on the way", but not quite correct. It's updated now in a way that gives correct output.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Whos 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by