通常取模运算也叫作取余运算,它返回的值也是余数。
mod(X,Y) and rem(X,Y) are equal if X and Y have the same sign, but differ by Y if X and Y have different signs.
这句话的含义是:如果X,Y的符号一样,则mod函数与rem函数相等,否则不同。
我们来看看例子:
mod(12,5) = 2
rem(12,5) = 2
然而,mod(12,-5) = -3 mod(-12,5) = 3
rem(12,-5) = 2 rem(-12,5) = -2
其原因在于rem函数采用fix函数,是固定取靠近0的那个整数,即舍去小数取整;mod函数采用floor函数,是向下取整,取小于等于这个数的第一个整数。
可以考虑一下该如何计算mod(X,Y)
mod(12,5) = 2
12/5 = 2.4 向下取整 ,为2; 12 - 5*2 = 2 ; 所以mod(12,5) = 2.
mod(12,-5) = -3
12/-5 = -2.4 向下取整,为-3; 12 - (-5)*(-3) = -3; 所以mod(12,-5) = -3.
mod(-12,5) = 3
-12/5 = -2.4 向下取整,为-3; -12 - 5*(-3) = 3; 所以mod(-12,5) = 3.
显然mod(X,Y)的计算公式为:X - floor(X./Y).*Y
我们再来看看如何计算rem(X,Y)
rem(12,5) = 2
12/5 = 2.4 向0取整,为2; 12 - 5*2 = 2; 所以rem(12,5) = 2.
rem(12,-5) = 2
12/-5 = -2.4 向0取整,为-2; 12 - (-5)*(-2) = 2; 所以rem(12,-5) = 2.
rem(-12,5) = -2
-12/5 = -2.4 向0取整,为-2; -12 - 5*(-2) = -2; 所以rem(12,5) = -2.
显然rem(X,Y)的计算公式为:X - fix(X./Y).*Y
根据以上,我们可以在matlab中根据需要使用相应的函数。