MATLAB Answers

Pointer to MATLAB function?

129 views (last 30 days)
Kalamaya on 29 Aug 2012
So I have a for-loop in MATLAB, where either a vector x will be put through one function, say, cos(x).^2, or a different choice, say, sin(x).^2 + 9.*x. The user will select which of those functions he wants to use before the for-loop.
My question is, I dont want the loop to check what the user selected on every iteration. Is there a way to use a pointer to a function, (user defined, or otherwise), that every iteration will use automatically?
This is inside a script by the way, not a function.

Accepted Answer

Oleg Komarov
Oleg Komarov on 29 Aug 2012
An interactive way to create an anonymous function:
% List of functions
funs = {'cos(x).^2','sin(x).^2 + 9.*x'};
% Ask for the function through a dialog
[idx,ok] = listdlg('ListString' ,funs,...
'PromptString' ,'Select one function',...
% Convert to anonymous function
if ok
f = str2func(sprintf('@(x)%s', funs{idx}));

More Answers (3)

José-Luis on 29 Aug 2012
Edited: José-Luis on 29 Aug 2012
I am not entirely sure this is what you mean but here goes:
if (first_selection)
fun1 = @(x) cos(x).^2;
if (second_selection)
fun1 = @(x) sin(x).^2 + 9 .* x;
And now your loop:
for k = 1:num_Loops
x = your_values;
your_result = fun1(x);

owr on 29 Aug 2012
Do a search in the docs on function handles. They should do the trick.
  1 Comment
owr on 29 Aug 2012
Loren just wrote a nice blog post that might be helpful as well:

Sign in to comment.

Ghada on 12 Nov 2012
Hi all;
please i need an example of the application of iteration in ananymous function,
Awaiting to you response,
Best regards,
my mail is

Community Treasure Hunt

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

Start Hunting!

Translated by