値の配列を反復処理し、それらを1つずつ関数の一連の評価にフィードする一般的なアプローチは、次の形式に従います。
for ix = 0:0.1:10
func(arg1, arg2, ix)
end
への各呼び出しにfunc
現在の値がどのように含まれるix
かを確認してください。最初の反復ix==0
、次の反復ix==0.1
など。これをニーズに適合させることができるはずです。コードでは、ループインデックス(これを呼び出しますi
)はループ内では使用されません。
さて、あなたのコードに対するいくつかの求められていない批判。台詞
x0=[1,1,1];
y=x0(1);
u=x0(2);
yc=x0(3);
options=optimset('Display','off');
ループの反復が進むにつれて変更しないでください。i
ループイテレータ(コード内)の値が何であれ、常に同じ値を返します。それらをループ内に含めるのは無意味です。
Matlabがすべての反復でそれらを計算することを決定した場合、それらをループ内に残すことは多くの時間の無駄でさえあるかもしれません。この場合にMatlabが何をするかはわかりませんが、これらの値が反復ごとに変更されないことを理解するのは賢明かもしれませんが、変更されたとしても、この方法でコードを記述することはプログラミングの習慣としては不適切です。これらのような定数式をループから外します。
投稿したフラグメントから、なぜ定義したのかは明らかではなくy
、まったく使用されていません。おそらくそれらはあなたのプログラムの他の部分で使われています。u
yc