Преобразование цикла for с шагом 25 из C в MATLAB - PullRequest
8 голосов
/ 12 декабря 2011

У меня есть цикл for, написанный на C:

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

Как я могу преобразовать его в MATLAB?

Ответы [ 3 ]

10 голосов
/ 12 декабря 2011

MATLAB для синтаксиса цикла равно

for i = values
    program statements
      :
end

, где values является одним из

  • start:end
  • start:step:end или
  • массив значений.

Форма start:end предполагает шаг 1, тогда как вы хотите шаг (или приращение) 25, поэтому используйте вторую форму. На ваш вопрос for(int i = 0; i < 1000; i+=25) генерирует список чисел 0 25 50 ... 950 975, то есть он не включает 1000 (обратите внимание на i < 1000; в цикле for), поэтому мы не можем использовать end=1000 в Синтаксис MATLAB. Вместо этого используйте end = 1000-25 = 975:

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

даст те же значения i, что и в эквиваленте C.

Примечание : см. Мой комментарий к ответу Митхуна Сасидхарана. Его ответ дает разные числа для C и MATLAB для циклов (и он, кажется, отбросил for из своего ответа MATLAB). Его ответ дает 0 25 50 ... 950 975 для цикла C и 0 25 50 ... 950 975 1000 для его кода MATLAB.

Edit : Ответ Aashish Thite поднимает важный вопрос о циклах и индексации массивов, который отличается между C и MATLAB.

6 голосов
/ 12 декабря 2011

for loop

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

можно преобразовать в MATLAB для цикла следующим образом:

>> for i = [0:25:1000]
   # Code
   end
2 голосов
/ 12 декабря 2011

Если вы собираетесь использовать 'i' в качестве индекса для сканирования массива, for i=0:25:1000 не будет работать. Индекс первого элемента в массиве matlab равен 1. Так что используйте for i=1:25:1000

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...