1. 程式人生 > >【matlab】mod函式和rem函式的區別

【matlab】mod函式和rem函式的區別

mod函式用於取模。語法形式為M = mod(X, Y)。舉例說明:

mod(20, 3)ans = 2; 

mod(20, -3)ans = -1;

mod([1 : 5], 3)ans = 1 2 0 1 2; 

mod(magic(3), 3)ans = 2 1 0; 0 2 1; 1 0 2

rem函式用於取餘。語法形式為M = rem(X, Y)。舉例說明:

rem(20, 3)ans = 2; 

rem(20, -3)ans = 2; 

rem([1:5], 3)ans = 1 2 0 1 2;

rem(magic(3), 3)ans = 2 1 0; 0 2 1; 1 0 2

值得注意的是mod函式和rem函式的區別。在這裡用一個方法判斷,取餘遵循儘可能讓餘數的絕對值小的原則,取模遵循儘可能讓商小的原則,最後的取值都是式中尾數。怎麼理解呢?舉4個例子說明。

比如我們需要計算mod(7, 3)和rem(7, 3),首先有7 = 3*2 + 1和7 = 3*3 + (-2),採用上述兩個原則。取餘時,1的絕對值是1,-2的絕對值是2,所以rem(7, 3) = 1;取模時,前者商小於後者商,所以mod(7, 3) = 1。

比如我們需要計算mod(7, -3)和rem(7, -3),首先有7 = (-3)*(-2)+ 1和7 = (-3)*(-3)+(-2),採用上述兩個原則,可以得到rem(7, -3) = 1,mod(7, -3) = -2。

比如我們需要計算mod(-7, 3)和rem(-7, 3),首先有-7 = 3*(-2)+(-1)和-7 = 3*(-3)+2,採用上述兩個原則,可以得到rem(-7, 3) = -1,mod(-7, 3) = 2。

比如我們需要計算mod(-7,-3)和rem(-7,-3),首先有-7 = (-3)*2+(-1)和-7 = (-3)*3 + 2,採用上述兩個原則,可以得到rem(-7, -3) = -1,mod(-7, -3) = -1。

從以上資料可以得到兩個結論:

(1)mod函式返回結果的符號與除數是一致的,rem函式返回結果的符號與被除數是一致的;

(2)當輸入資料符號相同時,mod函式和rem函式的結果一致;當輸入資料符號相反時,mod函式和rem函式的結果不一致。

rem與mod函式的區別:

rem(x,y)和mod(x,y)要求x,y必須為大小相同的實矩陣或標量。

1.當y≠0時,rem(x,y) = x - y .* fix(x ./ y),而mod(x,y) = x - y .* floor(x ./ y); 

2.當y=0時,rem(x,y)=NaN, mod(x,y) = x;

3.當x,y同號時,rem(x,y)與mod(x,y)相等。rem(x,y)的符號與x相同,而mod(x,y)的符號與y相同。