How do I change a function name within a loop using variables?

I am trying to write a function that returns the root of a polynomial using Mullers method. I want the user to choose between the 2 polyomials shown in comment.
I am using two other functions 'poly1' and 'poly2' which returns the value of the polynomial for x.
How do i call 'poly1' or 'poly2' from within the for loop depending on the users choice? Is there any way to have a variable at the end of poly like poly'i' that changes to 1 or 2? Thanks

1 commentaire

One of the concerns is trusting user input. You should always write your code as if your user is either incompetent or out to do malice.

Connectez-vous pour commenter.

 Réponse acceptée

Stephen23
Stephen23 le 17 Août 2019
Modifié(e) : Stephen23 le 17 Août 2019
You can store function handles in a cell array and use indexing:
>> C = {@(x)2*x+3,@(x)sqrt(x)+1}; % {1st fun,2nd fun}
>> C{1}(2) % 1st function evaluated with x=2
ans = 7
>> C{2}(2) % 2nd function evaluated with x=2
ans = 2.414213562373095
"Is there any way to have a variable at the end of poly like poly'i' that changes to 1 or 2?"
You could use str2func, but I doubt that it would result in simple, efficient, or reliable code.

2 commentaires

Sarath S
Sarath S le 17 Août 2019
Modifié(e) : Sarath S le 17 Août 2019
Thanks a lot.
Will it work if the user chooses ch = 1 and I use c{ch} to get the 1st function?
Edit
It works! Thanks again.
"Will it work if the user chooses ch = 1 and I use c{ch} to get the 1st function?"
Yes. That is how indexing works.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by