【MATLAB】取模函数mod与取余函数的区别

2019-04-13 15:25发布

通常取模运算也叫作取余运算,它返回的值也是余数。 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中根据需要使用相应的函数。