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).
这适用于任意大小x和y:
z.前两个维度包含行x和的组合的产品y; 接下来的两个包含的列的组合的产品x和y; 第五个是原来的第三个维度.码:
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)