使用正数和负数重复模 -1 到 1 的数字

Repeating numbers with modulo -1 to 1 using positive and negative numbers

重复取模的数字

我知道我可以 "wrap" / 像 2,3,1,2,3,1,... 通过使用模数。

示例代码如下。

a=[1:8]'
b=mod(a,3)+1

但是我如何使用对 "wrap" 取模的数字从 -1 到 1 (-1,-.5,0,.5,1) 返回到它们自身。 一些测试数字将是 a=[1.1,-2.3,.3,-.5] 它会循环并且值将在 -1 到 1.

之间

我想一个直观的例子是将 x,y 平面从 -1 弯曲到 1 成环面(它如何循环回到自身)。

我在想正弦波是如何从 0,1,0,-1 再次返回的,但我不确定如何实现它。

PS:我正在使用 Octave 4.2.2

这可以通过在取模之前偏移值,然后在取模之后反转偏移来实现。

例如,如果目标范围是[ab)(半开区间使得b 不是区间的一部分),那么可以这样做:

y = mod( x - a, b - a ) + a;

例如:

a = -1;
b = 1;
x = -10:0.01:10;
y = mod( x - a, b - a ) + a;
plot(x,y)