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 = 1×5

     1     2     0     1     2

Найдите остаток после деления для набора целых чисел и включая положительные и включая отрицательные величины. Обратите внимание на то, что ненулевые результаты всегда положительны, если делитель положителен.

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

     2     2     1     0

Найдите остаток после деления отрицательным делителем для набора целых чисел и включая положительные и включая отрицательные величины. Обратите внимание на то, что ненулевые результаты всегда отрицательны, если делитель отрицателен.

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

    -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 = 1×6

         0    3.5000    5.9000    6.2000    2.7168         0

Входные параметры

свернуть все

Дивиденд, заданный как скаляр, вектор, матрица или многомерный массив. a должен быть массивом с действительным знаком любого числового типа. Числовые входные параметры a и m должны или быть одного размера или иметь размеры, которые совместимы (например, a является M-by-N матрица, и m является скаляром или 1-by-N вектор - строка). Для получения дополнительной информации см. "Совместимые размеры массивов для основных операций".

Если a и m являются массивами длительности, то они должны быть одного размера, если каждый не скаляр. Если один вход является массивом длительности, другой вход может быть массивом длительности или числовым массивом. В этом контексте mod обрабатывает числовые значения как многие стандартные 24-часовые дни.

Если один вход имеет целочисленный тип данных, то другой вход должен иметь тот же целочисленный тип данных или является скалярным double.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | duration | char

Делитель, заданный как скаляр, вектор, матрица или многомерный массив. m должен быть массивом с действительным знаком любого числового типа. Числовые входные параметры a и m должны или быть одного размера или иметь размеры, которые совместимы (например, a является M-by-N матрица, и m является скаляром или 1-by-N вектор - строка). Для получения дополнительной информации см. "Совместимые размеры массивов для основных операций".

Если a и m являются массивами длительности, то они должны быть одного размера, если каждый не скаляр. Если один вход является массивом длительности, другой вход может быть массивом длительности или числовым массивом. В этом контексте mod обрабатывает числовые значения как многие стандартные 24-часовые дни.

Если один вход имеет целочисленный тип данных, то другой вход должен иметь тот же целочисленный тип данных или является скалярным double.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | duration | char

Больше о

свернуть все

Различия Между mod и rem

Концепция остатка после деления исключительно не задана, и две функции mod и rem, каждый вычисляет различное изменение. Функция mod приводит к результату, который является или нулем или имеет тот же знак как делитель. Функция rem приводит к результату, который является или нулем или имеет тот же знак как дивиденд.

Другим различием является соглашение, когда делитель является нулем. Функция mod следует соглашению, что mod(a,0) возвращает a, тогда как функция rem следует соглашению, что rem(a,0) возвращает NaN.

Оба варианта имеют свое использование. Например, в обработке сигналов, функция mod полезна в контексте периодических сигналов, потому что его вывод является периодическим (с периодом, равным делителю).

Отношения конгруэтности

Функция mod полезна для отношений конгруэтности: a и b являются конгруэнтными (mod m) если и только если mod(a,m) == mod(b,m). Например, 23 и 13 являются конгруэнтными (mod 5).

Ссылки

[1] Knuth, Дональд Э. Искусство Программирования. Издание 1. Аддисон Уэсли, 1997 pp.39–40.

Расширенные возможности

Смотрите также

Представлено до R2006a