2016-09-11 349 views
0

我有一個二維矩陣A這樣的:Matlab的變換2D矩陣3D矩陣

A = [ 1 2 3 4 5 6; 
    7 8 9 10 11 12; 
    1 2 3 4 5 6; 
    7 8 9 10 11 12;] 

我想這個二維矩陣變換的3D矩陣B大小爲2X3X4,如:

B(:,:,1) = [1 2 3; 7 8 9]; 
B(:,:,2) = [1 2 3; 7 8 9]; 
B(:,:,3) = [4 5 6; 10 11 12]; 
B(:,:,4) = [4 5 6; 10 11 12]; 

現在我所做的是首先將這個2D矩陣A轉換爲單元格類型Cmat2cell,然後使用cat將其轉換爲3D矩陣B,但它太複雜了,因爲我做根本不需要這個單元格C

有些人可以給我任何建議,我怎麼可以直接和優雅地將A轉換爲B

謝謝!

+0

是'A'總是4x6的? –

+0

@RafaelMonteiro不,它只是一個例子,只有B的每一頁都是相同的大小。 –

回答

2

你可以做這樣的事情 -

[m,n] = size(A); 
nr = 2; % Number of rows in o/p 
nc = 3; % Number of cols in o/p 
out = reshape(permute(reshape(A,nr,m/nr,nc,[]),[1,3,2,4]),nr,nc,[]); 
+0

太棒了!您已經創建了4D矩陣並節省了大量時間。但是你的代碼有一個小錯誤。我認爲應該是: –

+0

@JayWang應該是? – Divakar

+0

對不起,ctrl + c失敗。應該是output = reshape(permute(重塑(A,nr,m/nr,nc,[]),[1,3,2,4]),nr,nc,[]) –