在matlab中将值收敛到范围[-pi,pi],而不是使用wraptopi

时间:2014-11-23 20:07:42

标签: matlab pi

赋值是:相应地重置存储在矩阵中的值,使它们位于此范围内[-pi,pi]。注意不要使用任何非标准的Matlab函数来执行此操作。

(当然,对于任何整数n,所有角度theta + 2n * pi都相同。因此,例如:1.5 * pi的角度应重置为-0.5 * pi。)

非标准matlab函数wraptopi执行此操作(我认为),但我不允许使用此函数。 我觉得我可以用modulo来做这件事,但我不知道怎么做。

有人可以帮我吗?

提前致谢

1 个答案:

答案 0 :(得分:3)

要扩展@Ben Voight,您可以通过这种方式使用模数式操作:

要换行[0,2 * pi],你可以这样做:

angle_rad = angle_rad - 2*pi*floor(angle_rad/(2*pi));

要换行到[-pi,+ pi],你需要添加另一个术语

angle_rad = angle_rad - 2*pi*floor( (angle_rad+pi)/(2*pi) );