Create a function from another function with less parameters

13 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Steven Lord
Steven Lord il 9 Nov 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 Commento
Dave
Dave il 9 Nov 2016
Thanks, this is the solution I was searching for, it was even shown in the examples of fzero, but somehow I missed it.

Accedi per commentare.

Più risposte (1)

Geoff Hayes
Geoff Hayes il 9 Nov 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 Commento
Dave
Dave il 9 Nov 2016
Modificato: Dave il 9 Nov 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.

Accedi per commentare.

Categorie

Scopri di più su Debugging and Analysis in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by