0

カスタム ステップで MATLAB で for ループを使用する方法はありますか? 私がやりたいことは、与えられた数よりも小さい 2 のすべての累乗を繰り返すことです。C++ での同等のループ (たとえば) は次のようになります。

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

注 1:これは for ループに最も適した種類の反復なので、while ループは使用したくありません。
注 2:実際には、MATLAB ではなく Octave を使用しています。

4

2 に答える 2

5

おそらく、あなたは次のようなものを望んでいます

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
于 2012-04-04T22:15:03.433 に答える
3

任意のベクトルを反復処理できるため、ベクトル操作を使用して、ループを開始する前に値のベクトルを作成できます。たとえば、最初の 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
于 2012-04-04T22:19:40.173 に答える