在MATLAB函数句柄中传递参数

时间:2015-05-19 10:08:07

标签: matlab function handle

我必须用ode45来解决我的微分方程:

[t, phi]=ode45(@diff_phi, time_period, initial);

其中diff_phi是我的函数:

function dphi_dt = diff(t,phi,gamma0,gamma1,L0,L1)
phi0=phi(1);
phi1=phi(2);

dphi0_dt=-2*L0*phi0-gamma0*(phi0^2+1);
dphi1_dt=-2*L1*phi1-gamma1*(phi1^2+1);

dphi_dt=[dphi0_dt; dphi1_dt];
end

这种方式不起作用:

[t, phi]=ode45(@(t,phi) diff_phi(gamma0,gamma1,L0,L1), time_period, initial);

因为我收到此错误消息:

Attempted to access phi(2); index out of bounds because numel(phi)=1.

Error in diff_phi (line 18)
phi1=phi(2);

我该怎么办?

1 个答案:

答案 0 :(得分:2)

diff_phi仍然需要6个参数,因此在第二种方法中,请尝试:

[t, phi]=ode45(@(t,phi) diff_phi(t,phi,gamma0,gamma1,L0,L1), time_period, initial);