2011-12-23 19 views

Odpowiedz

13

Spróbuj tego:

a = [1 2 3 4 5 6] 
reshape (a, 2, 3) 
+0

Dziękuję bardzo. – Elijah

+7

To faktycznie nie daje danych wyjściowych zadanych w pytaniu. Musi to być 'reshape (a, 3,2) ''. – yuk

+0

@Ze Ji Czy istnieje jakaś funkcja łączenia macierzy po zmianie kształtu? – Jerky

11

Jeśli a można podzielić przez n rzeczywiście można zapewnić tylko jeden argument do zmiany kształtu.

Aby przekształcić do 2 rzędów:

b = reshape(a,2,[]) 

Aby przekształcić do 2 kolumn:

b = reshape(a,[],2) 

Należy pamiętać, że zmiany kształtu dzieła kolumn, to wypełnia 1st kolumnę, potem 2nd, i tak dalej . Aby uzyskać pożądane wyniki, musisz zmienić kształt na 2 kolumny, a następnie przetransponować wynik.

b = reshape(a,[],2)' 

można umieścić czek zanim zmienią:

assert(mod(numel(a),n)==0,'a does not divide to n') 
+0

Czy istnieje jakaś funkcja łączenia macierzy po zmianie kształtu? – Jerky

+0

Jakie macierze mówisz? Oczywiście, możesz przekształcić z powrotem do oryginalnego wektora: 'a2 = przekształć (b ', 1, []);' – yuk

+0

Czy możliwe jest wykonanie przekształcenia, w którym 'a/n ~ = int', a następnie z powrotem wypełnij koniec zera lub NaN? – josh

Powiązane problemy