メインコンテンツ

tensorprod

2 つのテンソルのテンソル積

R2022a 以降

説明

C = tensorprod(A,B,dimA,dimB) は、テンソル ABテンソル積を返します。引数 dimAdimB は、AB で縮約する次元を指定するベクトルです。出力テンソルのサイズは、A の縮約されない次元のサイズに B の縮約されない次元のサイズが続くサイズになります。

C = tensorprod(A,B,dim) は、AB の両方で縮約する同じ次元を指定します。

C = tensorprod(A,B) は、テンソル AB外積を返します。この構文は、前述のいずれかの構文で dimA = dimB = [] または dim = [] を使用することと等価です。出力テンソルのサイズは [size(A) size(B)] です。

C = tensorprod(A,B,"all") は、テンソル AB内積を返します。これらのテンソルは同じサイズでなければなりません。出力はスカラーです。

C = tensorprod(___,NumDimensionsA=ndimsA) は、前述の構文の任意の入力引数の組み合わせに加えて、テンソル A の次元数をオプションで指定します。このオプションは、A の末尾に大きさが 1 の次元があり、それらを出力に渡す必要がある場合に使用します。たとえば、tensorprod(A,B,NumDimensionsA=4) は、合計で 4 つの次元がある A について、テンソル AB の外積を計算します。

すべて折りたたむ

乱数要素をもつ 2 つの 3 次元テンソルを作成します。

A = rand(3,2,5);
B = rand(2,4,5);

AB のテンソル積を計算し、A の 2 番目の次元を B の 1 番目の次元で縮約します。結果のテンソルには、A の縮約されない次元に続いて B の縮約されない次元が含まれます。

C = tensorprod(A,B,2,1);
size(C)
ans = 1×4

     3     5     4     5

テンソル積で複数の次元を縮約するには、縮約する次元をベクトルとして指定します。AB のテンソル積をもう一度計算し、今度は次のように 2 つの次元を縮約します。

  • A の 2 番目の次元を B の 1 番目の次元で縮約します。

  • A の 3 番目の次元を B の 3 番目の次元で縮約します。

D = tensorprod(A,B,[2 3],[1 3]);
size(D)
ans = 1×2

     3     4

乱数要素をもつ 2 つの 4 次元テンソルを作成します。

A = rand(7,3,6,5);
B = rand(9,3,4,5);

AB のテンソル積を計算し、各テンソルの 2 番目と 4 番目の次元を縮約します。結果のサイズを確認します。

C = tensorprod(A,B,[2 4]);
size(C)
ans = 1×4

     7     6     9     4

乱数要素をもつ 2 つのテンソルを作成します。

A = rand(3,2,3);
B = rand(4,4,3,3);

2 つのテンソルの外積を計算します。結果のサイズを確認します。

C = tensorprod(A,B);
size(C)
ans = 1×7

     3     2     3     4     4     3     3

tensorprod は 2 つのテンソルの要素のすべての組み合わせを乗算するため、結果のテンソルのサイズは [size(A) size(B)] と等しくなります。

乱数要素をもつ同じサイズの 2 つの 4 次元テンソルを作成します。

A = rand(4,4,3,2);
B = rand(4,4,3,2);

テンソルの内積を計算し、"all" オプションを指定してすべての次元を縮約します。

C = tensorprod(A,B,"all")
C = 
23.6148

乱数要素をもつ 2 つの 4 次元テンソルを作成します。A の末尾にサイズが 1 の次元があり、MATLAB® では慣例により無視されます。

A = rand(3,4,5,1);
B = rand(4,5,6,7);

AB のテンソル積を計算し、A の 2 番目と 3 番目の次元を B の 1 番目と 2 番目の次元で縮約します。A の末尾にある大きさが 1 の次元は MATLAB で無視されるため、結果には次元が 3 つだけ含まれます。

C = tensorprod(A,B,[2 3],[1 2]);
size(C)
ans = 1×3

     3     6     7

A の大きさが 1 の次元を保持するには、NumDimensionsA オプションを使用して A の次元数を指定します。結果に 4 つの次元が含まれるようになります。

D = tensorprod(A,B,[2 3],[1 2],NumDimensionsA=4);
size(D)
ans = 1×4

     3     1     6     7

入力引数

すべて折りたたむ

入力テンソル。配列として指定します。tensorprod は、計算時に複素数入力の共役を計算しません。共役が必要な場合は、conj(A) または conj(B) を使用して複素数入力の共役を計算してから tensorprod に渡します。

データ型: single | double
複素数のサポート: あり

AB で縮約する次元。ベクトルとして指定します。dimAdimB は同じ長さでなければならず、ペア単位で一致している必要があります。縮約された次元のサイズも一致する必要があるため、size(A,dimA)size(B,dimB) と等しくなければなりません。

例: tensorprod(A,B,[1 3],[2 4]) は、A の 1 番目の次元を B の 2 番目の次元で縮約し、A の 3 番目の次元を B の 4 番目の次元で縮約します。

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

AB の両方で縮約する次元。ベクトルとして指定します。縮約された次元のサイズが一致する必要があるため、size(A,dim)size(B,dim) と等しくなければなりません。

例: tensorprod(A,B,[1 3]) は、A の 1 番目の次元を B の 1 番目の次元で縮約し、A の 3 番目の次元を B の 3 番目の次元で縮約します。

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

A の次元数。スカラーとして指定します。このオプションは、A の末尾に大きさが 1 の次元があり、それらを出力に渡す必要がある場合に使用します。

例: tensorprod(A,B,NumDimensionsA=4) は、合計で 4 つの次元がある A について、テンソル AB の外積を計算します。

詳細

すべて折りたたむ

拡張機能

すべて展開する

バージョン履歴

R2022a で導入

参考

| | |

トピック