# mod


除后的余数(取模运算)

# 语法

b = mod(a,m)

# 说明

b = mod(a,m) 返回 a 除以 m 后的余数,其中 a 是被除数,m 是除数。此函数通常称为取模运算,表达式为 b = a - m.*floor(a./m)。mod 函数遵从 mod(a,0) 返回 a 的约定。示例

# 示例

标量被除后的余数

计算 23 对 5 取模。

b = mod(23,5)
b = 3
向量被除后的余数

计算一个整数向量除以除数 3 的余数。

a = [1:5...]
m = 3
b = mod.(a,m)
b = 5-element Vector{Int64}:
1
2
0
1
2
正值和负值被除后的余数
a = [-4 ,-1, 7, 9]
m = 3
b = mod.(a,m)
b = 4-element Vector{Int64}:
2
2
1
0
用负除数除后的余数

计算一个整数集除以负除数后的余数,该整数集包括正值和负值。请注意,如果除数为负数,则非零结果始终为负数。

a = [-4 ,-1 ,7 ,9]
m = -3
b = mod.(a,m)
b = 4-element Vector{Int64}:
-1
-1
-2
 0

浮点值被除后的余数

计算多个角除以模数 2*pi 后的余数。请注意,mod 将尝试补偿浮点四舍五入取整的影响,以尽可能生成精确的整数结果。

theta = [0.0, 3.5, 5.9, 6.2, 9.0, 4*pi]
m = 2*pi
b = mod.(theta,m)
b = 6-element Vector{Float64}:
0.0
3.5
5.9
6.2
2.7168146928204138
0.0

# 输入参数

a - 被除数
标量 | 向量 | 矩阵 | 多维数组

被除数,指定为标量、向量、矩阵或多维数组。a 必须是任意数值类型的实数值数组。输入 a 和 m 必须具有相同的大小或具有兼容的大小(例如,a 是一个 M×N 矩阵,m 是标量或 1×N 行向量)。

数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16 | UInt8 | UInt16 | UInt32 | UInt64 | UInt64 | Bool

m - 除数
标量 | 向量 | 矩阵 | 多维数组

除数,指定为标量、向量、矩阵或多维数组。m 必须是任意数值类型的实数值数组。输入 a 和 m 必须具有相同的大小或具有兼容的大小(例如,a 是一个 M×N 矩阵,m 是标量或 1×N 行向量)。

数据类型: Int64 | Int32 | Int16 | Int128 | Float64 | Float32 | Float16 | UInt8 | UInt16 | UInt32 | UInt64 | UInt64 | Bool

# 详细信息

mod 和 rem 的区别

除后所得余数的概念的定义不是唯一的,两个函数 mod 和 rem 各计算不同的结果。mod 函数生成一个为零或与除数具有相同符号的结果。rem 函数生成一个为零或与被除数具有相同符号的结果。

另一个差别是当除数为零时的约定。mod 函数遵从 mod(a,0)报错约定,而 rem 函数遵从 rem(a,0)报错的约定。

两个结果都有其各自的用途。例如,在进行信号处理时,mod 函数可在周期信号上下文中使用,因为其输出是周期性的(周期等于除数)。

同余关系

mod 函数对同余关系很有用:当且仅当 mod(a,m) == mod(b,m) 时,a 和 b 为同余 (mod m)。例如,23 和 13 同余 (mod 5)。

# 另请参阅

rem