2010-02-13 7 views
9

У меня есть следующие функции:MATLAB: Как передать параметр функции?

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)]'; 

ответ

8

Вы можете использовать в MATLAB в anonymous function (по аналогии с лямбда-функции на других языках):

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

Great ... Спасибо большое .. Но , Я не мог заставить его работать, пока я не удалил символ «:» – Legend

+0

yep, это была опечатка, извините;) – catchmeifyoutry

+0

О ... Спасибо за разъяснение :) – Legend

 Смежные вопросы

  • Нет связанных вопросов^_^