如何在不使用循环的情况下从4个矩阵创建元素明智矩阵。对于ex.we有
A = [a1 a2; a3 a4] B = [b1 b2; b3 b4] C = [c1 c2; c3 c4] D = [d1 d2; d3 d4]
我们需要创建一个单元格数组,使每个数组位置包含诸如
之类的值[a1 b1; c1 d1]第一个位置的%矩阵
第二个位置的[a2 b2; c2 d2]%矩阵
等等,以便涵盖所有元素。
提前致谢。
答案 0 :(得分:1)
简短版本:
newMatrix= permute(reshape([A(:),B(:),C(:),D(:)]',2,2,4),[2,1,3]);
您需要的矩阵位于newMatrix(:,:,idx)
让我们分解:
temp1 = [A(:),B(:),C(:),D(:)]';
temp1
是一个新矩阵,它包含每一行中的所有其他矩阵值以及每列中新矩阵(您想要创建的)所需的值。
temp2 = reshape([A(:),B(:),C(:),D(:)]',2,2,4);
temp2
需要temp1
并置换它。基本上它将矩阵尺寸从4X4改为2X2X4。如果你看一下这个3D矩阵的每个“层”(沿着第三维),即每2X2它包含你想要转置的信息。剩下要做的就是转置它,这里'
不起作用,因为它是一个3D矩阵所以我们使用
newMatrix = permute(temp2,[2,1,3]);
这意味着第三个尺寸相同,但您可以在尺寸1,2之间切换。