两个张量之间的Kronecker产品

aaa*_*aaa 2 matlab matrix vectorization multiplication

我有两个张量:x是2乘2乘3,y也是2乘2乘3.定义张量的每个正面切片是x1 x2 x3,y1,y2,y3.xi或yi是2乘2矩阵.如何在matlab中在x和y之间做kronecker产品?我想要得到的是同时没有任何循环的matlab中的kron(x1,y1),kron(x2,y2),kron(x3,y3).

Lui*_*ndo 6

这适用于任意大小xy:

  1. 构建一个5D阵列z.前两个维度包含行x和的组合的产品y; 接下来的两个包含的列的组合的产品xy; 第五个是原来的第三个维度.
  2. 该arrray被重新塑造,一方面首先折叠尺寸,另一方面折叠第三和第四尺寸,以产生最终结果:

码:

z = bsxfun(@times, permute(x, [4 1 5 2 3]), permute(y, [1 4 2 5 3]));  %// step 1
z = reshape(z, size(x,1)^2, size(x,2)^2, size(x,3));                   %//step 2
Run Code Online (Sandbox Code Playgroud)