How to use input string as a function in Appdesign?

1 回表示 (過去 30 日間)
Abrar
Abrar 2023 年 2 月 21 日
コメント済み: Abrar 2023 年 2 月 21 日
I am beginner in appdesigning. However, I am trying here to make an interface where user will write down the equation of a function and the value of the variable. After clicking the button,he will get the value of f(x) for the given value. Maybe I have some errors in the codes for which,after giving datas and clicking then,there seems something wrong. Someone please help me to debug this I need that emergency.

採用された回答

Simon Chan
Simon Chan 2023 年 2 月 21 日
編集済み: Simon Chan 2023 年 2 月 21 日
In case you would like to use function str2func, the string in the editfield for entering the equation should looks like the following:
@(x)x^2
instead of
x^2
and use the following inside the callback
f = str2func(s)
instead of
f = @(x)(str2func(s))
  1 件のコメント
Abrar
Abrar 2023 年 2 月 21 日
Awwwww it worked. Thanks a loooot <3

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

その他の回答 (1 件)

Steven Lord
Steven Lord 2023 年 2 月 21 日
If the user enters an expression in the edit field, you can convert it into an anonymous function using a couple of functions.
s = 'x^2+y';
Make it so it can be called with a vector of values using the vectorize function.
vecFunction = vectorize(s)
vecFunction = 'x.^2+y'
Get the list of variables using symvar.
vars = symvar(s)
vars = 2×1 cell array
{'x'} {'y'}
Assemble the string representation of the anonymous function, joining the list of variables and the function that was entered into the edit box.
str = "@(" + join(vars, ", ") + ") " + vecFunction
str = "@(x, y) x.^2+y"
Make the anonymous function with str2func.
f = str2func(str)
f = function_handle with value:
@(x,y)x.^2+y
To check let's call the function handle.
z = f(1:10, 100)
z = 1×10
101 104 109 116 125 136 149 164 181 200

カテゴリ

Help Center および File ExchangeIntroduction to Installation and Licensing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by