2013-05-16 19 views
16

varsayılan kolon-bazlı sonucu yerineyeniden şekillendirme MATLAB vektör

1 2 3 
4 5 6 

vermek üzere örnek reshape(a, 2, 3) için sıra sıra bir şekilde yeniden şekillendirme, nasıl bir matris a = [1 2 3 4 5 6]; var ki arasında MATLAB tarafından üretilen:

1 3 5 
2 4 6 

Ben bu muhtemelen bunu başarmak için bir dahili işlevi vardır önemsiz bir görev olduğuna inanıyoruz. Zaten bunu mükemmel yapan bir fonksiyon gerçekleştirdim ... ancak daha kısa, daha net ve daha MATLAB yolu var mı? Teşekkürler.

function y = reshape2(x, m, n) 
    y = zeros(m, n); 

    ix = 0; 
    for i = 1:m 
    for j = 1:n 
     ix = ix + 1; 
     y(i, j) = x(ix); 
    end 
    end 
end 

cevap

21

Bu nasıl?

reshape(a, 3, 2)'

3

sıra sıra bir şekilde bir p*k matris B'ye bir m*n matrisi A yeniden şekillendirmek için genel bir yol olduğu:

c=reshape(A',1,m*n) 
B=reshape(c,k,p)' 
example: m=3 n=4 , p=6, q=2 
A=[1 2 3 4; 5 6 7 8; 9 10 11 12] 
c=[1 2 3 4 5 6 7 8 9 10 11 12] 
B=[1 2 ; 3 4; 5 6; 7 8; 9 10; 11 12] 
1

Gerçekten yeniden şekillendirme olan (A', sütunlar, satırlar) '(3,

(a yeniden şekillendirmek', 2)' daki örnekte) sadece şimdi sorunuzu silmek için

+0

Alkış - sadece bir cevap hazırlamak 10 dakika geçirmişti . Bir başkası için faydalı olabilirdim. (Bunun iyi bir soru olduğunu düşündüm). –

+0

Oh, sonra sorumu tekrar yazacağım @MatthewTaylor – Mortada