Tôi đã một vòng lặp for
viết bằng C:chuyển đổi của một 'cho' vòng lặp với một số gia của 25 từ C đến MATLAB
for (int i = 0; i < 1000; i+=25)
Làm thế nào tôi có thể chuyển nó sang MATLAB?
Tôi đã một vòng lặp for
viết bằng C:chuyển đổi của một 'cho' vòng lặp với một số gia của 25 từ C đến MATLAB
for (int i = 0; i < 1000; i+=25)
Làm thế nào tôi có thể chuyển nó sang MATLAB?
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
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
Các MATLAB for loop syntax là
for i = values
program statements
:
end
nơi values
là một trong những
start:end
start:step:end
, hoặcBiể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.
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. –
-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
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] '. –