2010-04-28 18 views
23

Estoy tratando de escribir una función que tiene dos matrices y el nombre de otra función como argumentos.Pasar funciones como argumentos en Matlab

p. Ej.

main.m: 

    x=[0 0.2 0.4 0.6 0.8 1.0]; 
    y=[0 0.2 0.4 0.6 0.8 1.0]; 

    func2(x,y,'func2eq') 

func 2.m : 
    function t =func2(x, y, z, 'func') //"unexpected matlab expression" error message here  
    t= func(x,y,z); 

func2eq.m: 
    function z= func2eq(x,y) 

    z= x + sin(pi * x)* exp(y); 

Matlab says da el mensaje de error anterior. Nunca antes pasé un nombre de función como argumento. ¿Dónde estoy equivocado?

Respuesta

35

También es posible usar la función maneja en lugar de cuerdas, así:

main.m:

... 
func2(x, y, @func2eq); % The "@" operator creates a "function handle" 

Esto simplifica func2.m:

function t = func2(x, y, fcnHandle) 
    t = fcnHandle(x, y); 
end 

Para obtener más información, consulte la documentación en function handles

9

Usted podría intentar en func2.m:

function t = func2(x, y, funcName) % no quotes around funcName 
    func = str2func(funcName) 
    t = func(x, y) 
end 
Cuestiones relacionadas