Main Content

mod

除算後の剰余 (モジュロ演算)

説明

b = mod(a,m)am で除算した後の剰余を返します。a は被除数、m は除数です。この関数はモジュロ演算と呼ばれ、b = a - m.*floor(a./m) のように表すことができます。関数 mod は慣例に従うため、mod(a,0)a を返します。

すべて折りたたむ

5 を法として 23 の計算を行います。

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

入力引数

すべて折りたたむ

被除数。スカラー、ベクトル、行列、多次元配列、table、または timetable として指定します。a は任意の数値型の実数値配列でなければなりません。入力 am は、同じサイズであるか、互換性のあるサイズでなければなりません (たとえば、aMN 列の行列で、m がスカラーまたは 1N 列の行ベクトル)。詳細については、基本的な演算で互換性のある配列サイズを参照してください。

aduration 配列であり m が数値配列である場合、m の値は 1 日を 24 時間とする日数として扱われます。

一方の入力が整数データ型の場合、他方の入力も同じ整数データ型か double のスカラーでなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | duration | char | table | timetable

除数。スカラー、ベクトル、行列、多次元配列、table、または timetable として指定します。m は任意の数値型の実数値配列でなければなりません。入力 am は、同じサイズであるか、互換性のあるサイズでなければなりません (たとえば、aMN 列の行列で、m がスカラーまたは 1N 列の行ベクトル)。詳細については、基本的な演算で互換性のある配列サイズを参照してください。

mduration 配列であり a が数値配列である場合、a の値は 1 日を 24 時間とする日数として扱われます。

一方の入力が整数データ型の場合、他方の入力も同じ整数データ型か double のスカラーでなければなりません。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | duration | char | table | timetable

詳細

すべて折りたたむ

mod と rem の違い

除算後の剰余の概念は一意に定義されてはおらず、2 つの関数 modrem はそれぞれ異なる値を計算します。関数 mod は、ゼロまたは除数と同じ符号の結果を生成します。関数 rem は、ゼロまたは被除数と同じ符号の結果を生成します。

その他の違いとして除数がゼロの場合の規則があります。関数 mod は、mod(a,0)a を返す規則に従い、関数 remrem(a,0)NaN を返す規則に従います。

それぞれに適した用途があります。たとえば信号処理では、周期的な信号の処理について関数 mod が役立ちます。この場合出力が周期的で、周期が除数と等しくなるためです。

合同関係

関数 mod は、合同関係に役立ちます。mod(a,m) == mod(b,m) の場合に限り、ab は (m を法として) 合同です。たとえば、23 と 13 は 5 を法 (mod 5) として合同です。

参照

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

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する

参考