How can I convert handle function to a string

48 ビュー (過去 30 日間)
Eman Ahmed Elsayed
Eman Ahmed Elsayed 2011 年 6 月 1 日
コメント済み: John D'Errico 2023 年 11 月 8 日
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 件のコメント
Dyuman Joshi
Dyuman Joshi 2023 年 11 月 8 日
編集済み: Dyuman Joshi 2023 年 11 月 8 日
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
f = function_handle with value:
@(x)2*x+1
eqn = str2sym(func2str(f))
eqn = 
solve(eqn)
ans = 
Also, if it is a function of a single independent variable, you can use fzero

サインインしてコメントする。

回答 (3 件)

Walter Roberson
Walter Roberson 2023 年 11 月 8 日
f=@(x) 2*x+1
f = function_handle with value:
@(x)2*x+1
syms x
solve(f(x))
ans = 

Arnaud Miege
Arnaud Miege 2011 年 6 月 1 日
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 件のコメント
Matt Fig
Matt Fig 2011 年 6 月 1 日
f=@(x) 2*x+1;
str = strrep(char(f),'@(x)','')
Oleg Komarov
Oleg Komarov 2011 年 6 月 1 日
@Eman: then provide the whole code that fails with the solution I proposed

サインインしてコメントする。


Marco Cordero
Marco Cordero 2023 年 11 月 8 日
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
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeFunction Creation についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by