2010-02-13 17 views
9

tengo la siguiente función:MATLAB: ¿Cómo paso un parámetro a una función?

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

Si yo quiero resolver esto, me gustaría llamar a la función ode45 de la siguiente manera:

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

Pero si quiero pasar un parámetro a esta función, ¿cómo usaría la función ode45? En concreto, estoy tratando de la siguiente formulación:

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

Respuesta

8

puede utilizar un anonymous function en Matlab (similar a las funciones lambda en otros idiomas):

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

Grandes ... Muchas gracias .. Sin embargo , No pude hacerlo funcionar hasta que eliminé el carácter ':' – Legend

+0

sí, fue un error tipográfico, lo siento;) – catchmeifyoutry

+0

Oh ... Gracias por la aclaración :) – Legend

Cuestiones relacionadas