ODE求解器事件Events设置,读入变量数量是否可以改变?

ode求解器中options部分如果使用odeset设置事件,事件函数只有如下一种格式么?

function [value,isterminal,direction] = eventfun(t,x)

如果想让其多读入一个odefun函数中的变量可以做到么?

例如:

op=odeset('Events',@eventfun);

[t,x,te,xe]=ode45(@(t,x)odefuns(t,x,r,1,0),[0,t0],x0,op)

function [value,isterminal,direction] = eventfun(t,x)……end

function dxdt=odefuns(t,x,r,I,xigma)……end

想让eventfun从odefun中多读入一个xigma(在ode迭代过程中会改变)可以做到么?

直接在eventfun(t,x)后面加参数变成eventfun(t,x,xigma)没有作用,实际函数中需要使用xigma时会报错“输入参数的数目不足”

希望有人能回答

两种思路解决:

1. 使用全局变量,通过在函数中用global将xigma申明为全局变量。

2. 将xigma扩充到状态变量x中,即xnew = [x xigma]' ,同时在odefuns中, dxnew = [dx 0]' + [0 xigma]'