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

10

I have the following function:

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)]';
1个回答

9
您可以在Matlab中使用匿名函数(类似于其他语言中的lambda函数):

您可以使用匿名函数在Matlab中编写代码:

u = 1.2;
[t y] = ode45(@(t, y) ypdiff(t, y, u), [to tf], yo);

太好了...非常感谢..不过,在我删除“:”字符之前,我无法使其正常工作。 - Legend
是的,那是一个打错字,抱歉 ;) - catchmeifyoutry
为什么我需要使用ode45(@(t, y) ypdiff(t, y, u),而不是只使用ode45(@ypdiff(u))。为什么需要ty - Ka Wa Yip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接