2012-05-14 29 views
7

Tôi đã tự hỏi quy tắc là gì để sử dụng vectơ làm phạm vi cho vòng lặp trong Matlab?Sử dụng vector như phạm vi trong vòng lặp trong Matlab

Ví dụ,

range = [0.1:0.01:2]'; % wrong 
range = [0.1:0.01:2]; % correct 

for i = range 
i 
end 
  1. Tại sao nó rằng nếu range là vector cột, nó sẽ không làm việc, trong khi nếu range là vector hàng, nó sẽ?
  2. i được hiểu là range, hoặc i được gán với véc tơ range

Cảm ơn ~

Trả lời

3

Từ http://www.mathworks.co.uk/help/techdoc/ref/for.html:

for index = values 
    program statements 
      : 
end 

... values có một trong các hình thức sau:

valArray

tạo ra một chỉ số véc tơ cột từ các cột tiếp theo o f mảng valArray trên mỗi lần lặp. Ví dụ, trên phiên đầu tiên, index = valArray(:,1) ...

0
  1. Đó là cách mà bởi vì nó là như vậy. Tôi không nghĩ rằng có bất kỳ lời giải thích sâu sắc cho việc này.
  2. Như bạn sẽ khám phá nếu bạn đã thử nghiệm, khi bạn đã thực hiện một nhiệm vụ như range = [0.1:0.01:2] thì biến được gọi là range là một hàng-vector bao gồm các giá trị trong phạm vi. Vòng lặp của bạn sẽ hoạt động tốt. Vì nó sẽ nếu nó bắt đầu

    for i = [0.1 0.11 0.12 ...]

10

Tổng quát hơn, range có thể là một ma trận, và biến vòng vòng qua cột của nó.

range = rand(3,3); 
for col = range 
col 
end 

col = 
     0.86341 
     0.11625 
     0.20319 
col = 
     0.59721 
    0.098357 
     0.8356 
col = 
     0.89578 
     0.46217 
     0.93585 

Vì vậy, nếu range là vectơ hàng, nó sẽ lặp lại giá trị của nó. Nhưng nếu range là một vectơ cột, nó sẽ lặp qua cột đơn đó làm giá trị của nó.

Các vấn đề liên quan