Main Content

mod

Remainder after division (modulo operation)

Syntax

Description

example

b = mod(a,m)returns the remainder after division ofabym, whereais the dividend andmis the divisor. This function is often called the modulo operation, which can be expressed asb = a - m.*floor(a./m). Themod函数遵循convention thatmod(a,0)returnsa.

Examples

collapse all

Compute 23 modulo 5.

b = mod(23,5)
b = 3

Find the remainder after division for a vector of integers and the divisor3.

a = 1:5; m = 3; b = mod(a,m)
b =1×51 2 0 1 2

Find the remainder after division for a set of integers including both positive and negative values. Note that nonzero results are always positive if the divisor is positive.

a = [-4 -1 7 9]; m = 3; b = mod(a,m)
b =1×42 2 1 0

Find the remainder after division by a negative divisor for a set of integers including both positive and negative values. Note that nonzero results are always negative if the divisor is negative.

a = [-4 -1 7 9]; m = -3; b = mod(a,m)
b =1×4-1 -1 -2 0

Find the remainder after division for several angles using a modulus of2*pi. Note thatmodattempts to compensate for floating-point round-off effects to produce exact integer results when possible.

theta = [0.0 3.5 5.9 6.2 9.0 4*pi]; m = 2*pi; b = mod(theta,m)
b =1×60 3.5000 5.9000 6.2000 2.7168 0

Input Arguments

collapse all

Dividend, specified as a scalar, vector, matrix, or multidimensional array.amust be a real-valued array of any numerical type. Inputsaandmmust either be the same size or have sizes that are compatible (for example,ais anM-by-Nmatrix andmis a scalar or1-by-N行vector). For more information, seeCompatible Array Sizes for Basic Operations.

Ifais adurationarray andmis a numeric array, then the values inmare treated as numbers of 24-hour days.

If one input has an integer data type, then the other input must be of the same integer data type or be a scalardouble.

Data Types:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64|logical|duration|char

Divisor, specified as a scalar, vector, matrix, or multidimensional array.mmust be a real-valued array of any numerical type. Inputsaandmmust either be the same size or have sizes that are compatible (for example,ais anM-by-Nmatrix andmis a scalar or1-by-N行vector). For more information, seeCompatible Array Sizes for Basic Operations.

Ifmis adurationarray andais a numeric array, then the values inaare treated as numbers of 24-hour days.

If one input has an integer data type, then the other input must be of the same integer data type or be a scalardouble.

Data Types:single|double|int8|int16|int32|int64|uint8|uint16|uint32|uint64|logical|duration|char

More About

collapse all

Differences Between mod and rem

The concept of remainder after division is not uniquely defined, and the two functionsmodandremeach compute a different variation. Themodfunction produces a result that is either zero or has the same sign as the divisor. Theremfunction produces a result that is either zero or has the same sign as the dividend.

Another difference is the convention when the divisor is zero. Themod函数遵循convention thatmod(a,0)returnsa, whereas therem函数遵循convention thatrem(a,0)returnsNaN.

Both variants have their uses. For example, in signal processing, themodfunction is useful in the context of periodic signals because its output is periodic (with period equal to the divisor).

Congruence Relationships

Themodfunction is useful for congruence relationships:aandbare congruent (mod m) if and only ifmod(a,m) == mod(b,m). For example, 23 and 13 are congruent (mod 5).

References

[1] Knuth, Donald E.The Art of Computer Programming. Vol. 1. Addison Wesley, 1997 pp.39–40.

Extended Capabilities

See Also

Introduced before R2006a