MATLAB:如何将参数传递给函数?

MATLAB:如何将参数传递给函数?,matlab,parameters,function,calculus,Matlab,Parameters,Function,Calculus,我有以下功能: function ypdiff = ypdiff(t,y) a = 0.01; b = 0.1; ypdiff(1) = -a*y(1)*y(2); ypdiff(2) = b*y(1)*y(2)-b*y(2); ypdiff(3) = b*y(2); ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]'; 如果我想解决这个问题,我会调用ode45函数,如下所示: [t y] = ode45(@ypd

我有以下功能:

function ypdiff = ypdiff(t,y)
    a = 0.01;
    b = 0.1;
    ypdiff(1) = -a*y(1)*y(2);
    ypdiff(2) = b*y(1)*y(2)-b*y(2);
    ypdiff(3) = b*y(2);
    ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]';
如果我想解决这个问题,我会调用ode45函数,如下所示:

[t y] = ode45(@ypdiff, [to tf], yo);
但是如果我想向这个函数传递一个参数,我将如何使用ode45函数呢?具体而言,我尝试以下公式:

function ypdiff = ypdiff(t,y,u)
    a = 0.01;
    b = 0.1;
    ypdiff(1) = -a*u*y(1)*y(2);
    ypdiff(2) = b*u*y(1)*y(2)-b*y(2);
    ypdiff(3) = b*u*y(2);
    ypdiff = [ypdiff(1) ypdiff(2) ypdiff(3)]';
可以在matlab中使用(类似于其他语言中的lambda函数):


伟大的谢谢。。然而,我无法让它工作,直到我删除了“:”字符是的,那是一个打字错误,对不起;)哦感谢您的澄清:)为什么我需要
ode45(@(t,y)ypdiff(t,y,u)
,而不仅仅是
ode45(@ypdiff(u))
。为什么需要t,y?
u = 1.2;
[t y] = ode45(@(t, y) ypdiff(t, y, u), [to tf], yo);