2016-10-28 140 views
0

我們如何從4個矩陣創建元素明智的矩陣而不使用循環。對於ex.we具有元素明智創建矩陣

A = [A1 + A2; A3 A4] B = [B1 B2; B4 B3] C = [C1 C2; C3 C4] d = [D1 D2; D3 D4]

我們需要創建一個單元陣列,使得每個陣列位置包含這樣的值作爲

〔A1 B1; C1 D1]在第一位置%基質

[A2 B2; C2 D2]%矩陣在第二地點

等等,這樣所有的元素都被覆蓋了。

在此先感謝。

回答

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它包含您只需要轉置的信息。因此,所有這就是剩下要做的就是調換的,在這裏,因爲它是一個三維矩陣'行不通的,所以我們使用

newMatrix = permute(temp2,[2,1,3]); 

這意味着第三尺寸stais相同的,但你的尺寸1,2之間進行切換。

+0

很好解釋!謝謝。 – Navdeep