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