How can I convert handle function to a string
显示 更早的评论
I need to convert handle function to string to passed it to function solve which taken string expression the handle function is some thing like
f=@(x) 2*x+1
I tried >>func2str(f) and then solve(f)
but I get an error
1 个评论
Obviously note - Quite a late response.
Idk which version of MATLAB you were or are using, but in the newer versions you can try this -
f=@(x) 2*x+1
eqn = str2sym(func2str(f))
solve(eqn)
Also, if it is a function of a single independent variable, you can use fzero
回答(3 个)
f=@(x) 2*x+1
syms x
solve(f(x))
Arnaud Miege
2011-6-1
0 个投票
You can do char(f) but I don't think this will work with solve, unless you remove the '@x' from the string.
Arnaud
5 个评论
Walter Roberson
2011-6-1
Yes, Eman's difficulty (shown in another thread) is in failing to strip out the '@(x)' -- code that Oleg (I think it was) already provided.
Eman Ahmed Elsayed
2011-6-1
Eman Ahmed Elsayed
2011-6-1
Matt Fig
2011-6-1
f=@(x) 2*x+1;
str = strrep(char(f),'@(x)','')
Oleg Komarov
2011-6-1
@Eman: then provide the whole code that fails with the solution I proposed
Marco Cordero
2023-11-8
0 个投票
This is way way too late to answer but for anyone searching for answers that stumbled upon this question, you might want to try the inline function. As of today, its usage it's no longer recommended and anonymous functions are the preferred method, however, it might come in handy regardless of this.
1 个评论
John D'Errico
2023-11-8
Um, inline is so old. It has been deprecated, and will probably disappear one day. inline functions are very slow. MUCH slower than a function handle. Since a function handle will work, as long as you understand them, there is no need for an inline function, unless you are stuck with a 20 year old release of MATLAB.
类别
在 帮助中心 和 File Exchange 中查找有关 Function Creation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!