カスタム ステップで MATLAB で for ループを使用する方法はありますか? 私がやりたいことは、与えられた数よりも小さい 2 のすべての累乗を繰り返すことです。C++ での同等のループ (たとえば) は次のようになります。
for (int i = 1; i < 65; i *= 2)
注 1:これは for ループに最も適した種類の反復なので、while ループは使用したくありません。
注 2:実際には、MATLAB ではなく Octave を使用しています。
おそらく、あなたは次のようなものを望んでいます
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
任意のベクトルを反復処理できるため、ベクトル操作を使用して、ループを開始する前に値のベクトルを作成できます。たとえば、最初の 100 個の平方数のループは、次のように記述できます。
values_to_iterate = [1:100].^2;
for i = values_to_iterate
i
end
または、ベクトル内の各位置をループすることもできます(これにより同じ結果が得られますが、実行した反復回数を追跡できる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
C とは異なり、ある値から次の値を取得するための「ルール」は必要ありません。反復されるベクトルは、完全に任意にすることができます。
for i = [10, -1000, 23.3, 5, inf]
i
end