rem 和 mod (除后的余数)
语法: r=rem(a,b) ; b=mod(a,m)
其中 a 是被除数:
被除数,指定为标量、向量、矩阵或多维数组。a 必须是任意数值类型的实数值数组。数值输入 a 和 b 必须具有相同的大小或兼容的大小(例如,a 是 M×N 矩阵,b 是标量或 1×N 行向量)。
如果 a 和 b 是持续时间数组,则它们必须具有相同的大小,除非其中一个为标量。如果一个输入是持续时间数组,则另一个输入可以是持续时间数组或数值数组。在此上下文中,rem 将数值视为标准 24 小时制的数字。
如果一个输入是整数数据类型,则另一输入必须是相同的整数类型或 double 标量。
b (m)是除数:
除数,指定为标量、向量、矩阵或多维数组。b (m)必须是任意数值类型的实数值数组。数值输入 a 和 b (m)必须具有相同的大小或兼容的大小(例如,a 是 M×N 矩阵,b (m)是标量或 1×N 行向量)。
举例:
(1) 标量被除后的余数
a = 23;
b = 5;
r = rem(a,b)
r = 3
b = mod(23,5)
b = 3
(2) 向量被除后的余数
a = 1:5;
b = 3;
r = rem(a,b)
r= 1×5
1 2 0 1 2
a = 1:5;
m = 3;
b = mod(a,m)
b = 1×5
1 2 0 1 2
(3)正值和负值被除后的余数
a = [-4 -1 7 9];
b = 3;
r = rem(a,b)
r = 1×4
-1 -1 1 0
(注意结果是与被除数的符号一致)
a = [-4 -1 7 9];
m = 3;
b = mod(a,m)
b = 1×4
2 2 1 0
(注意结果是与除数的符号一致)
(4)浮点值被除后的余数
theta = [0.0 3.5 5.9 6.2 9.0 4*pi];
b = 2*pi;
r = rem(theta,b)
r = 1×6
0 3.5000 5.9000 6.2000 2.7168 0
theta = [0.0 3.5 5.9 6.2 9.0 4*pi];
m = 2*pi;
b = mod(theta,m)
b = 1×6
0 3.5000 5.9000 6.2000 2.7168 0
mod 和 rem之间的区别:
除后所得余数的概念的定义不是唯一的,两个函数 mod 和 rem 各计算不同的结果。mod 函数生成一个为零或与除数具有相同符号的结果。rem 函数生成一个为零或与被除数具有相同符号的结果。
另一个差别是当除数为零时的约定。mod 函数遵从 mod(a,0) 返回 a 的约定,而 rem 函数遵从 rem(a,0) 返回 NaN 的约定。
两个结果都有其各自的用途。例如,在进行信号处理时,mod 函数可在周期信号上下文中使用,因为其输出是周期性的(周期等于除数)。