prod
配列要素の積
構文
説明
A
がベクトルの場合、prod(A)
は要素の積を返します。A
が空でない行列の場合、prod(A)
は、A
の列をベクトルとして取り扱い、各列の積を行ベクトルとして返します。A
が空の 0 行 0 列の場合、prod(A)
は1
を返します。A
が多次元配列の場合、prod(A)
は、大きさが 1 でない最初の次元に沿って機能し、積の配列を返します。この次元におけるB
のサイズは1
に減りますが、他のすべての次元のサイズはA
と同じままです。A
が table または timetable の場合、prod(A)
は、各変数の積を含む 1 行の table を返します。 (R2023a 以降)
入力 A
が single
の場合、prod
は B
を計算し、single
として返します。他のすべての数値データ型と logical データ型の場合、prod
は計算後、B
を double
として返します。
例
各列の要素の積
要素が線形インデックスに対応している 3 行 3 列の配列を作成します。
A=[1:3:7;2:3:8;3:3:9]
A = 3×3
1 4 7
2 5 8
3 6 9
各列の要素の積を求めます。最初の次元の長さは 1 で、2 番目の次元の長さは size(A,2)
に一致します。
B = prod(A)
B = 1×3
6 120 504
論理入力の積
論理値の配列を作成します。
A = [true false; true true]
A = 2x2 logical array
1 0
1 1
各列の要素の積を求めます。
B = prod(A)
B = 1×2
1 0
出力の型は double
です。
class(B)
ans = 'double'
各行の要素の積
要素が線形インデックスに対応している 3 行 3 列の配列を作成します。
A=[1:3:7;2:3:8;3:3:9]
A = 3×3
1 4 7
2 5 8
3 6 9
各行の要素の積を求め、2 番目の次元の長さを 1 に縮小します。最初の次元の長さは size(A,1)
に一致し、2 番目の次元の長さは 1 になります。
dim = 2; B = prod(A,dim)
B = 3×1
28
80
162
配列ページの積
3 次元配列を作成し、データのページ (行と列) ごとの積を計算します。
A(:,:,1) = [2 4; -2 1]; A(:,:,2) = [1 2; -5 3]; A(:,:,3) = [4 4; 1 -3]; B1 = prod(A,[1 2])
B1 = B1(:,:,1) = -16 B1(:,:,2) = -30 B1(:,:,3) = -48
配列のすべての次元の積を計算するには、ベクトルの次元引数で各次元を指定するか、"all"
オプションを使用します。
B2 = prod(A,[1 2 3])
B2 = -23040
Ball = prod(A,"all")
Ball = -23040
倍精度として処理される単精度入力
単精度の値で構成される 3 行 3 列の配列を作成します。
A = single([1200 1500 1800; 1300 1600 1900; 1400 1700 2000])
A = 3x3 single matrix
1200 1500 1800
1300 1600 1900
1400 1700 2000
倍精度で乗算することで、各行の要素の積を求めます。
B = prod(A,2,"double")
B = 3×1
109 ×
3.2400
3.9520
4.7600
出力は倍精度です。
class(B)
ans = 'double'
入出力の整数データ型
8 ビット符号なしの整数の 3 行 3 列配列を作成します。
A = uint8([1:3:7;2:3:8;3:3:9])
A = 3x3 uint8 matrix
1 4 7
2 5 8
3 6 9
uint8
で各列の要素の積をネイティブに求めます。
B = prod(A,"native")
B = 1x3 uint8 row vector
6 120 255
その結果、8 ビット符号なしの整数の配列が得られます。
class(B)
ans = 'uint8'
欠損値を除外した積
NaN
値を含む行列を作成します。
A = [1.77 -0.005 NaN -2.95; NaN 0.34 NaN 0.19]
A = 2×4
1.7700 -0.0050 NaN -2.9500
NaN 0.3400 NaN 0.1900
NaN
値を除外して行列の積を計算します。NaN
値が含まれている行列の列では、prod
は NaN
以外の要素で計算します。すべて NaN
値の行列の列では、積は 1 です。
B = prod(A,"omitnan")
B = 1×4
1.7700 -0.0017 1.0000 -0.5605
入力引数
A
— 入力配列
ベクトル | 行列 | 多次元配列 | table | timetable
入力配列。ベクトル、行列、多次元配列、table または timetable として指定します。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| table
| timetable
複素数のサポート: あり
dim
— 演算の対象の次元
正の整数スカラー
演算の対象の次元。正の整数のスカラーとして指定します。次元を指定しない場合、既定値はサイズが 1 より大きい最初の配列次元です。
次元 dim
は、長さが 1
に縮小した次元を示します。size(B,dim)
は 1
ですが、他のすべての次元のサイズは変化しません。
2 次元の入力配列 A
について考えます。
dim = 1
の場合、prod(A,1)
は、各列の要素の積を含む行ベクトルを返します。dim = 2
の場合、prod(A,2)
は、各行の要素の積を含む列ベクトルを返します。
dim
が ndims(A)
より大きい場合、prod
は A
を返します。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
vecdim
— 次元のベクトル
正の整数のベクトル
次元のベクトル。正の整数のベクトルとして指定します。各要素は入力配列の次元を表します。指定された操作次元の出力の長さは 1 で、その他は同じままです。
2×3×3 の入力配列 A
を考えます。この場合、prod(A,[1 2])
は 1×1×3 の配列を返します。この配列の要素は A
の各ページの積です。
データ型: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
outtype
— 出力クラス
"default"
(既定値) | "double"
| "native"
出力クラス。"default"
、"double"
または "native"
として指定され、これによって出力 B
のデータ型が定義されます。
outtype | 出力データ型 |
---|---|
"default" | double 。ただし、入力データ型が single 、table 、または timetable の場合は、出力データ型はそれぞれ single または table です。 |
"double" | double 。ただし、入力データ型が table または timetable の場合は、出力データ型は table です。 |
"native" | 入力配列 A と同じデータ型。ただし、入力データ型が timetable の場合は、出力データ型は table です。 |
nanflag
— 欠損値の条件
"includemissing"
(既定値) | "includenan"
| "omitmissing"
| "omitnan"
欠損値の条件。次の値のいずれかとして指定します。
"includemissing"
または"includenan"
— 積の計算時にA
のNaN
値を含めます。操作次元内のいずれかの要素がNaN
の場合、B
の対応する要素はNaN
です。"includemissing"
と"includenan"
の動作は同じです。"omitmissing"
または"omitnan"
—A
のNaN
値を無視し、点の数を減らして積を計算します。操作次元内のすべての要素がNaN
の場合、B
の対応する要素は 1 です。"omitmissing"
と"omitnan"
の動作は同じです。
出力引数
B
— 積配列
スカラー | ベクトル | 行列 | 多次元配列 | table
積配列。スカラー、ベクトル、行列、多次元配列、または table として返されます。
B
のクラスは次のとおりです。
outtype
引数に"default"
を指定するか、この引数を使用せず、入力が
single
、table
、またはtimetable
ではない場合、出力はdouble
になります。入力が
single
の場合、出力はsingle
になります。入力が
table
またはtimetable
の場合、出力はtable
になります。
引数
outtype
で"double"
を指定した場合、入力がtable
またはtimetable
でない限り、入力データ型にかかわらず、出力はdouble
になります。引数
outtype
で"native"
を指定した場合、出力のデータ型は入力と同じになります。ただし、入力がtimetable
の場合、出力はtable
になります。
詳細
大きさが 1 でない最初の次元
大きさが 1 でない最初の次元 (nonsingleton dimension) は、サイズが 1
に等しくない配列の最初の次元を表します。
以下に例を示します。
X
が 1 行 n 列の行ベクトルの場合、2 番目の次元はX
の大きさが 1 でない最初の次元になります。X
が 1×0×n の空配列の場合、2 番目の次元はX
の大きさが 1 でない最初の次元になります。X
が 1×1×3 の配列の場合、3 番目の次元はX
の大きさが 1 でない最初の次元になります。
拡張機能
tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。
この関数は tall 配列を完全にサポートしています。詳細については、tall 配列を参照してください。
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意事項および制限事項:
dim
を指定する場合、定数でなければなりません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
"native"
オプションで 64 ビット整数はサポートされません。prod
演算では積の順序が定義されていません。そのため、GPU 配列のprod
演算は、対応する数値配列のprod
演算と厳密に同じ値を返さないことがあります。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
prod
演算では積の順序が定義されていません。そのため、分散配列のprod
演算は、対応する数値配列のprod
演算と厳密に同じ値を返さないことがあります。A
が符号付き整数型で、その積がそのままに累積される場合、この差が大きくなる場合があります。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入R2023a: 欠損値の条件の指定
"includemissing"
オプションまたは "omitmissing"
オプションを使用して、積の計算時に入力配列の欠損値を含めるか省略します。これらのオプションの動作はそれぞれ、"includenan"
オプションおよび "omitnan"
オプションと同じです。
R2023a: table および timetable で直接計算を実行
関数 prod
は、table または timetable 内のすべての変数に対して、それらの変数にアクセスするためのインデックス付けを行うことなく計算できます。すべての変数のデータ型で計算がサポートされている必要があります。詳細については、table および timetable での直接計算を参照してください。
R2018b: 複数の次元での演算
入力配列の複数の次元を一度に演算します。操作次元のベクトルを指定するか、"all"
オプションを指定してすべての配列次元で演算を行います。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)