ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

mod

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

構文

  • b = mod(a,m)

説明

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     2     0     1     2

正の値と負の値の両方を含む一連の整数について除算後の剰余を求めます。除数が正の場合、非ゼロの除算結果は常に正である点に注意してください。

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

     2     2     1     0

正の値と負の値の両方を含む一連の整数について、負の除数による除算後の剰余を求めます。除数が負の場合、非ゼロの除算結果は常に負である点に注意してください。

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

    -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 =

         0    3.5000    5.9000    6.2000    2.7168         0

入力引数

すべて折りたたむ

被除数。スカラー、ベクトル、行列または多次元配列として指定します。a は任意の数値型の実数値配列でなければなりません。入力 am は、どちらかがスカラーでない限り、同じサイズでなければなりません。スカラー値は他の配列と同じサイズになるように拡張されます。

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

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

除数。スカラー、ベクトル、行列または多次元配列として指定します。m は任意の数値型の実数値配列でなければなりません。入力 am は、どちらかがスカラーでない限り、同じサイズでなければなりません。スカラー値は他の配列と同じサイズになるように拡張されます。

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

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

詳細

すべて折りたたむ

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 より前に導入

この情報は役に立ちましたか?