2011-08-22 32 views
10

2 matris A, B matrisini nasıl birleştirebilirim ki yeni matrisin C = satır 1'i, ardından B'nin 1. satırı, sonra A'nın 2. satırı, B'nin 2. satırı, 3. satırın 3. satırı, 3. satır. B vb? Tercihen bir for döngüsü olmadan? Örn. A: [1 2 3; 4 5 6], B = [5 5 5; 8 8 8].
AB = [1 2 3; 5 5 5; 4 5 6; 8 8 8].matlab - 2 matris nasıl birleştirilir/birleştirilir?

cevap

12

İhtiyacın olan tek şey, bir miktar katlanma ve yeniden şekillendirme. Öncelikle, 2. boyut boyunca ilerlersiniz, sonra da transpoze edersiniz ve doğrusallaştırırsınız (AB(:)), böylece ilk üç öğesi A'nın ilk satırı, daha sonra da B'nin ilk satırı, daha sonra A'nın ikinci satırı olan bir vektör alırsınız. Sonunda kalanların hepsi, her şeyi tekrar bir diziye sokacak şekilde yeniden şekillendirmeyi arıyor. Alternatif olarak, AB'yi doğrudan dizin oluşturma yoluyla yapılandırabilirsiniz. Bu durumda A'nın B'den bir satır daha almasına izin verilir. Bu, muhtemelen yukarıdakilerden daha hızlıdır.

[nRowsA,nCols] = size(A); 
nRowsB = size(B,1); 

AB = zeros(nRowsA+nRowsB,nCols); 
AB(1:2:end,:) = A; 
AB(2:2:end,:) = B;