2010-04-28 12 views
19

Possible Duplicate:
How do you concatenate the rows of a matrix into a vector in MATLAB?najprostszy sposób przekonwertować macierz jednym rzędzie wektora

Cześć,

Czy ktoś wie, jaki jest najlepszy sposób, aby utworzyć jedną macierz wiersz (wektor) z M macierzy x N poprzez umieszczenie wszystkich wierszy, od 1 do m, oryginalnej matrycy w pierwszym rzędzie nowej matrycy w następujący sposób:

A = [row1; row2; ...; rowM] 
B = [row1, row2, ..., rowM] 

przykład:

A = [1 1 0 0; 0 1 0 1] 
B = [1 1 0 0 0 1 0 1] 

Czy istnieje prosta metoda lub wbudowana funkcja, która może generować macierz B z A?

+1

dokładną kopią http://stackoverflow.com/questions/2724020/matlab-matrix-concatenating –

Odpowiedz

28

Spróbuj tego: B = A (:) lub wypróbuj funkcję reshape.

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/reshape.html

+2

'B = A (:) ; 'nie zadziała w tym przypadku, ponieważ spowoduje umieszczenie wszystkich kolumn w jednym wektorze kolumny. – gnovice

+0

Możesz po prostu przetransponować macierz na wektor (z "jeśli dobrze pamiętam) –

+2

nie używaj' '', jeśli masz złożone liczby, ponieważ odwraca znaki złożonego komponentu; użyj 'B = permute ([2 1], A (:))' – KitsuneYMG

23

Można użyć funkcji RESHAPE:

B = reshape(A.',1,[]); 
+5

Uważaj przy tym, że operator jest tutaj, tak jakby twoje dane były złożone, to da ci koniugację transpozycji. Lepiej go użyć. w tej operacji. –

+0

@woodchips: Dobra uwaga. Zaktualizowano. – gnovice

+2

Myślę, że ** to ** jest dokładną odpowiedzią na pytanie! –

Powiązane problemy