主要内容

tensorprod

两个张量之间的张量积

自 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 具有预期要传递给输出的尾部单一维度时,使用此选项。例如,tensorprod(A,B,NumDimensionsA=4) 计算张量 AB 之间的外积,其中 A 总共有四个维度。

示例

示例

全部折叠

创建两个具有随机元素的三维张量。

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

计算 AB 的张量积,从而收缩 A 的第二个维度与 B 的第一个维度。所得张量包含 A 的未收缩维度,后跟 B 的未收缩维度。

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

     3     5     4     5

要在一个张量积中收缩多个维度,请将要收缩的维度指定为向量。计算 AB 之间的另一个张量积,但这次收缩两个维度:

  • 收缩 A 的第二个维度与 B 的第一个维度。

  • 收缩 A 的第三个维度与 B 的第三个维度。

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

     3     4

创建两个具有随机元素的四维张量。

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

计算 AB 的张量积,从而收缩每个张量的第二个和第四个维度。检查结果的大小。

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

     7     6     9     4

创建两个具有随机元素的张量。

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

计算这两个张量的外积。检查结果的大小。

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

     3     2     3     4     4     3     3

tensorprod 将两个张量中元素的所有组合相乘,因此所得张量的大小等于 [size(A) size(B)]

创建两个大小相同、具有随机元素的四维张量。

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

计算张量的内积,指定 "all" 选项以收缩所有维度。

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

创建两个具有随机元素的四维张量。A 有大小为 1 的尾部维度,MATLAB® 会按照惯例忽略该维度。

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

计算 AB 的张量积,收缩 A 的第二个和第三个维度与 B 的第一个和第二个维度。由于 MATLAB 忽略 A 的尾部单一维度,所得结果只有三个维度。

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

     3     6     7

要保留 A 中的单一维度,请使用 NumDimensionsA 选项指定 A 中的维数。现在结果有四个维度。

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

     3     1     6     7

输入参数

全部折叠

输入张量,指定为数组。tensorprod 在计算过程中不会对复数输入进行共轭处理。如果需要共轭,请在将复数输入传递给 tensorprod 之前使用 conj(A)conj(B) 对其进行共轭处理。

数据类型: single | double
复数支持:

AB 中要收缩的维度,指定为向量。dimAdimB 的长度必须相同,并成对匹配。收缩后维度的大小也必须匹配,因此 size(A,dimA) 必须等于 size(B,dimB)

示例: tensorprod(A,B,[1 3],[2 4]) 收缩 A 的第一个维度与 B 的第二个维度,以及 A 的第三个维度与 B 的第四个维度。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

AB 中都要收缩的维度,指定为向量。收缩后维度的大小必须匹配,因此 size(A,dim) 必须等于 size(B,dim)

示例: tensorprod(A,B,[1 3]) 收缩 A 的第一个维度与 B 的第一个维度,以及 A 的第三个维度与 B 的第三个维度。

数据类型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

A 中的维数,指定为标量。当 A 具有预期要传递给输出的尾部单一维度时,使用此选项。

示例: tensorprod(A,B,NumDimensionsA=4) 计算张量 AB 之间的外积,其中 A 总共有四个维度。

详细信息

全部折叠

扩展功能

全部展开

版本历史记录

在 R2022a 中推出

另请参阅

| | |