【问题标题】:MATLAB: How do I pass a parameter to a function?MATLAB:如何将参数传递给函数?
【发布时间】:2010-02-13 02:12:50
【问题描述】:

我有以下功能:

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 parameters function calculus


    【解决方案1】:

    您可以在 matlab 中使用anonymous function(类似于其他语言中的 lambda 函数):

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

    【讨论】:

    • 太好了...非常感谢..但是,直到我删除了':'字符,我才能让它工作
    • 是的,这是一个错字,抱歉 ;)
    • 哦...感谢您的澄清:)
    • 为什么我需要ode45(@(t, y) ypdiff(t, y, u),而不仅仅是ode45(@ypdiff(u))。为什么需要 t,y?
    猜你喜欢
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多