Info

この質問は閉じられています。 編集または回答するには再度開いてください。

Any idea to convert numerics to symbolic ?

1 回表示 (過去 30 日間)
Stephan Moeller
Stephan Moeller 2014 年 6 月 2 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
How can I convert an equation with the numeric coeffs to symbolic ?
example :
y= 2*exp(3*x)+log10(4*x+9)+10
so I get
y= a1*exp(a2*x)+log10(a3*x+a4)+a5

回答 (4 件)

Andreas Goser
Andreas Goser 2014 年 6 月 2 日
I can think of string operations. But you need to find rules how to smartly cover situations where you don't want to replace a number with a variable like in x.^2.

Stephan Moeller
Stephan Moeller 2014 年 6 月 2 日
yes, me too. But there isn't anything already available as a function ?
  2 件のコメント
Andreas Goser
Andreas Goser 2014 年 6 月 2 日
Don't think so. I never heard of such an operation. Instead of numerics to symbolic I would also rather call it "generalizing coefficients" or so. But exactly because if this difficulty to name it, it is also difficult to search for it. Lets see if more people reply.
Stephan Moeller
Stephan Moeller 2014 年 6 月 2 日
編集済み: Stephan Moeller 2014 年 6 月 2 日
yeah, you're right ! Thanks :-)

pietro
pietro 2014 年 6 月 2 日
You can use the symbolic toolbox. Here an example:
syms z,x
z=3*x; y=subs(z1,{3},{a})
With a workaround I think you can do what you need
  2 件のコメント
Stephan Moeller
Stephan Moeller 2014 年 6 月 2 日
I meant without explizit writing all numerics maunally.
pietro
pietro 2014 年 6 月 2 日
編集済み: pietro 2014 年 6 月 2 日
you can write your formula in symbolic way, then using symvar you can get the symboli variables:
y=2*exp(3*x)+log10(4*x+9)+10 Then with symvar you can get the variables.
symvar(y)
ans =
x
so you can get everything since operators and functions are known. After having got the numeric values, you can substitute them using subs
Hope this helps

Andrei Bobrov
Andrei Bobrov 2014 年 6 月 2 日
編集済み: Andrei Bobrov 2014 年 6 月 2 日
x= 'a':'z';
z = '2*exp(3*x)+log10(4*x+9)+10';
dd = regexp(z,'(?<=[\(-*/+ ])\d*|\d*(?=[+*-/\)])','match');
out = regexprep(z,dd',cellstr(x(1:numel(dd))'));
  1 件のコメント
Stephan Moeller
Stephan Moeller 2014 年 6 月 2 日
out = a*exp(b*x)+loge(c*x+d)+e
log10 is lost ...

製品

Community Treasure Hunt

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

Start Hunting!

Translated by