1. 程式人生 > >【MATLAB】取模函式mod與取餘函式的區別

【MATLAB】取模函式mod與取餘函式的區別

通常取模運算也叫作取餘運算,它返回的值也是餘數。

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中根據需要使用相應的函式。