Для цикла с шагом умножения в MATLAB

Есть ли способ использовать цикл for в MATLAB с пользовательским шагом? Что я хочу сделать, так это перебрать все степени на 2 меньше, чем заданное число. Эквивалентный цикл в C ++ (например) будет:

<code>for (int i = 1; i < 65; i *= 2)
</code>

Note 1: Этот тип итерации лучше всего подходит для циклов for, поэтому я бы не хотел использовать циклы while.
Note 2: Я на самом деле использую Octave, а не MATLAB.

Ответы на вопрос(2)

Вы можете перебирать любой вектор, поэтому вы можете использовать векторные операции для создания вектора значений перед началом цикла. Например, цикл по первым 100 квадратным числам можно записать так:

values_to_iterate = [1:100].^2;
for i = values_to_iterate
   i
end

Или вы можете перебрать каждыйposition в вектореvalues_to_iterate (это дает тот же результат, но имеет то преимущество, чтоi отслеживает, сколько итераций вы выполнили - это полезно, если вы записываете результат из каждого цикла последовательно в выходной вектор):

values_to_iterate = [1:100].^2;
for i = 1:length(values_to_iterate)
   values_to_iterate(i)
   results_vector(i) = some_function( values_to_iterate(i) );
end

Более кратко, вы можете написать первый пример так:

for i = [1:100].^2
   i
end

В отличие от С, здесь не должно быть «правило». чтобы перейти от одного значения к другому. Итерированный вектор может быть совершенно произвольным:

for i = [10, -1000, 23.3, 5, inf]
     i
end
Решение Вопроса

Возможно, вы хотите что-то вроде

for i=2.^[1:6]
   disp(i)
end

За исключением того, что вам нужно будет определить диапазон показателей. Это использует тот факт, что с a_(i+1) = a_i*2 это можно переписать какa_i = 2^i.

В противном случае вы могли бы сделать что-то вроде следующего

i=1;
while i<65
   i=i*2;
   disp(i);
end

Ваш ответ на вопрос