Matlabのイベント関数として無名関数を使用することは可能ですか?私は何をしたい、基本的MatlabのODEを解決する際に、イベント関数として無名関数を使用することは可能ですか?
opt = odeset('Events', @(t,y) (deal(y(end)-t^2,1,0)));
[T,Y] = ode45(@odefun,[tstart tend],y0,opt);
あるしかし、これは対処するための出力数が正確に一致する必要があることを訴えてエラーを返します。匿名関数が複数の引数を返すようにする別の方法はありますか?
要点は、ラッパー機能を避けたいということです。 dealを使用すると、実際には3つの値を返す無名関数を得ることができます(dealは引数を返すだけなので)。しかし、ODEソルバはさまざまな戻り値を期待しているようですが、取引は正確に一致しなければなりません。 –
あなたはまったく正しいです。私が変更を受けたとき、これをもう一度見てみましょう。私は、 'ode45'がさまざまな引数をイベントハンドラに渡すという事実に関連している可能性があります。 –
私は、関数が 'odeevents'の単一の出力と' odezero'の出力の三つ組で評価されているからです。ただし、無名関数の出力引数の数は1 *または* 3ですが、両方を扱うことはできません。 – embert