Clear Filters
Clear Filters

Re-scaling matrix entries to lie within a range

2 views (last 30 days)
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

Accepted Answer

Sven
Sven on 21 Nov 2011
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 Comments
Sven
Sven on 22 Nov 2011
Oops. Yep, you're right of course Walter.. what can I say... I was in a rush? Edited accordingly :)
Walter Roberson
Walter Roberson on 22 Nov 2011
You need to update your "ans" as well ;-)

Sign in to comment.

More Answers (2)

Walter Roberson
Walter Roberson on 22 Nov 2011
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 on 22 Nov 2011
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 Comment
Sven
Sven on 22 Nov 2011
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.

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!