使用正数和负数重复模 -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
这可以通过在取模之前偏移值,然后在取模之后反转偏移来实现。
例如,如果目标范围是[a,b)(半开区间使得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)
重复取模的数字
我知道我可以 "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
这可以通过在取模之前偏移值,然后在取模之后反转偏移来实现。
例如,如果目标范围是[a,b)(半开区间使得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)