Pointer to MATLAB function?

93 vues (au cours des 30 derniers jours)
Kalamaya
Kalamaya le 29 Août 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.
Thanks

Réponse acceptée

Oleg Komarov
Oleg Komarov le 29 Août 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',...
'SelectionMode','single');
% Convert to anonymous function
if ok
f = str2func(sprintf('@(x)%s', funs{idx}));
end
  1 commentaire
Kalamaya
Kalamaya le 29 Août 2012
Wow...

Connectez-vous pour commenter.

Plus de réponses (3)

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

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

Connectez-vous pour commenter.


Ghada
Ghada le 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 :chahd.hayet@gmail.com

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by