2010-02-13 22 views
9

Mam następującą funkcję:MATLAB: Jak przekazać parametr do funkcji?

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

Jeśli chcę rozwiązać ten problem, chciałbym wywołać funkcję ode45 następująco:

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

Ale jeśli chcę przekazać parametr do tej funkcji, jak korzystać z funkcji ode45? Konkretnie, próbuję z następujących składników:

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

Odpowiedz

8

Można użyć anonymous function w Matlab (podobną do funkcji lambda w innych językach):

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

... Wielkie dzięki dużo .. Jednak , Nie mogłem go uruchomić dopóki nie usunąłem znaku ":" – Legend

+0

tak, to był literówka, przepraszam;) – catchmeifyoutry

+0

Oh ... Dzięki za wyjaśnienie :) – Legend

Powiązane problemy