2013-07-31 27 views
7

Tôi chỉ viết một "kinda-foreach" lặp trong Matlab và gặp hành vi này lạ:CHO lặp trên vector cột vs vector hàng

Tôi có ma trận A:

A = [ 
3 
9 
5 
0]; 

Và tôi muốn sử dụng một vòng lặp foreach (như đã giải thích here) trên A.

Nếu tôi viết những dòng này:

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

Kết quả sẽ là:

for 

i = 

    3 
    9 
    5 
    0 

Nhưng khi tôi sử dụng chuyển vị, kết quả sẽ thay đổi:

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

Kết quả:

for 

i = 

    3 

for 

i = 

    9 

for 

i = 

    5 

for 

i = 

    0 

Đó là kết quả tôi muốn.

Ai có thể giải thích những gì đang xảy ra ở đây? Sự khác biệt giữa hai trường hợp này là gì?

Trả lời

6

khi bạn gõ

A = [ 
3 
9 
5 
0]; 

bạn tạo một vector cột. Bởi vì Matlab lặp qua các cột bạn nhận được một câu trả lời (cột đầu tiên). Bằng cách chuyển đổi nó, bạn nhận được một vectơ hàng với 4 cột và do đó có 4 câu trả lời mỗi cột với một cột.