Create a function from another function with less parameters

13 visualizaciones (últimos 30 días)
Dave
Dave el 9 de Nov. de 2016
Editada: Dave el 9 de Nov. de 2016
I have a function, let's call it "myFunc". myFunc accepts two parameters, x and y. I want to create a new function "myFunc2", based on myFunc, with one parameter set to a certain value. (e.g x=1)
My final goal is to be able to call the function fzero, passing Myfunc2, that will be function of y only.
Is it possible? I also accept different solutions for achieving this. Thanks in advance

Respuesta aceptada

Steven Lord
Steven Lord el 9 de Nov. de 2016
You can use an anonymous function.
addMe = @plus; % the plus function (equivalent of the + operator) accepts two inputs
addOne = @(x) addMe(x, 1); % accepts one input x and returns x+1
addMe(2, 3) % returns 5
addOne(2) % returns 3
  1 comentario
Dave
Dave el 9 de Nov. de 2016
Thanks, this is the solution I was searching for, it was even shown in the examples of fzero, but somehow I missed it.

Iniciar sesión para comentar.

Más respuestas (1)

Geoff Hayes
Geoff Hayes el 9 de Nov. de 2016
Dave - try nesting the second function within the first (see nested functions for details. For example,
function [] = myFunc(x,y)
function [v] = myFunc2(z)
% since nested within myFunc, it has access to x
v = z + x;
end
% call myFunc2
fprintf('%d\n',myFunc2(42));
end
Of course, you would use fzero instead.
  1 comentario
Dave
Dave el 9 de Nov. de 2016
Editada: Dave el 9 de Nov. de 2016
Thanks for the answer, but I forgot to mention that myFunc is generated during run time. Anyway, I will keep this in mind for the future.

Iniciar sesión para comentar.

Categorías

Más información sobre Debugging and Analysis en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by