How do I change a function name within a loop using variables?
7 次查看(过去 30 天)
显示 更早的评论
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 个评论
Rik
2019-8-17
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.
采纳的回答
Stephen23
2019-8-17
编辑:Stephen23
2019-8-17
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 个评论
Stephen23
2019-8-17
"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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Function Creation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!