exponenta event banner

модник

Остаток после деления (операция по модулю)

Синтаксис

Описание

пример

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около-N матрица и m является скаляром или 1около-N вектор строки). Дополнительные сведения см. в разделе Совместимые размеры массивов для основных операций.

Если a является duration массив и m является числовым массивом, то значения в m обрабатывают как количество 24-часовых дней.

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

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

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

Если m является duration массив и a является числовым массивом, то значения в a обрабатывают как количество 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] Кнут, Дональд Э. Искусство компьютерного программирования. Том 1. Эддисон Уэсли, 1997 pp.39-40.

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

.

См. также

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