2013-07-31 22 views
7

właśnie pisanie "kinda-foreach" pętli w Matlab i napotkał to dziwne zachowanie:pętli FOR nad wektor kolumnowy vs wierszowy wektor

mam macierzy A:

A = [ 
3 
9 
5 
0]; 

i chcę używać foreach pętli (jak wyjaśniono here) na A.

Jeśli piszę to:

for i = A 
    disp('for') 
    i  
end 

Rezultatem będzie:

for 

i = 

    3 
    9 
    5 
    0 

Ale kiedy używam transpozycję, wynik ulegnie zmianie:

for i = A' 
    disp('for') 
    i  
end 

Wynik:

for 

i = 

    3 

for 

i = 

    9 

for 

i = 

    5 

for 

i = 

    0 

co jest wynikiem chcę.

Czy ktoś może wyjaśnić, co się tutaj dzieje? Jaka jest różnica między tymi dwoma przypadkami?

Odpowiedz

6

po wpisaniu

A = [ 
3 
9 
5 
0]; 

utworzyć wektor kolumnowy. Ponieważ Matlab wykonuje iteracje po kolumnach, otrzymujesz jedną odpowiedź (pierwszą kolumnę). Przenosząc go otrzymujesz wektor rzędu z 4 kolumnami, a zatem po 4 odpowiedzi każda z jedną kolumną.