2011-12-12 4 views

Trả lời

6

Các for loop

for (int i = 0; i <= 1000; i+=25) 

có thể được chuyển đổi sang MATLAB cho vòng lặp theo cách này:

>> for i = [0:25:1000] 
    # Code 
    end 
+2

Tôi nghĩ bạn có nghĩa là 'cho tôi, không chỉ 'i'. Và bạn không cần '[]' xung quanh biểu hiện đại tràng. –

+3

-1 Điều này ** không ** cung cấp câu trả lời đúng: 'cho (int i = 0; i <1000; i + = 25)' cho ra các số '0 25 50 ... 950 975' ở đâu là' i = 0: 25: 1000' sản lượng '0 25 50 ... 950 975 1000'. Nếu 'i <1000;' được thay thế bằng 'i <= 1000;' hoặc nếu 'i = 0: 25: 975' được sử dụng thì kết quả sẽ khớp. – Chris

+4

Cũng lưu ý rằng 'i = [0: 25: 1000]' thực sự có nghĩa là một cái gì đó khác với 'i = 0: 25: 1000' - trong trường hợp đầu tiên, bạn đang thực sự preallocating bộ nhớ để lưu trữ vectơ' 0: 25: 1000 '. Điều này có thể không quan trọng đối với vòng lặp này, nhưng so sánh với 'i = 1: inf' và' i = [1: inf] '. –

2

Nếu bạn đang sử dụng 'i' như một chỉ số để quét qua một mảng, for i=0:25:1000 sẽ không hoạt động. Các chỉ số của phần tử đầu tiên trong một mảng của MATLAB là 1. Vì vậy, sử dụng for i=1:25:1000

10

Các MATLAB for loop syntax

for i = values 
    program statements 
     : 
end 

nơi values là một trong những

  • start:end
  • start:step:end, hoặc
  • một mảng giá trị.

Biểu mẫu start:end giả định bước 1, trong khi bạn muốn một bước (hoặc tăng) là 25, do đó hãy sử dụng biểu mẫu thứ hai. Từ câu hỏi của bạn, for(int i = 0; i < 1000; i+=25) tạo danh sách các số 0 25 50 ... 950 975, tức là nó không bao gồm 1000 (thông báo i < 1000; trong vòng for), vì vậy chúng tôi không thể sử dụng cú pháp MATLAB end=1000. Thay vào đó, hãy sử dụng end = 1000-25 = 975:

for i = 0:25:975 
    program statements 
     : 
end 

sẽ mang lại cùng giá trị i tương đương với giá trị C.

Lưu ý: xem nhận xét của tôi về câu trả lời của Mithun Sasidharan. Câu trả lời của ông mang lại những con số khác nhau cho C và MATLAB cho vòng lặp (và ông dường như đã giảm for từ câu trả lời MATLAB của mình). Câu trả lời của anh ta cho số 0 25 50 ... 950 975 cho vòng lặp C và 0 25 50 ... 950 975 1000 cho mã MATLAB của anh ta.

Chỉnh sửa: Câu trả lời của Aashish Thite nêu ra một điểm quan trọng về vòng lặp và lập chỉ mục mảng khác nhau giữa C và MATLAB.