Is there any way to separate the terms of a product?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Panagiotis Panagopoulos Papageorgiou
le 17 Fév 2019
Commenté : Panagiotis Panagopoulos Papageorgiou
le 19 Fév 2019
Hello,
Let's say I have this function_handle: f = @(x) exp(x-2)*log(x)
Is it possible to assign each function that comprises this product to its own seperate variable i.e:
g = exp()
h = x-2
j = log()
k = x
Thank you!
2 commentaires
John D'Errico
le 17 Fév 2019
Modifié(e) : John D'Errico
le 17 Fév 2019
Sure. Write your own expression parsing code.
f = @(x) exp(x-2)*log(x);
>> func2str(f)
ans =
'@(x)exp(x-2)*log(x)'
Réponse acceptée
Walter Roberson
le 17 Fév 2019
If you have the Symbolic Toolbox, then
f = @(x) exp(x-2)*log(x)
syms x
temp = f(x);
op0 = feval(symengine, 'op', temp, 0)
rest = children(temp)
rest0 = arrayfun(@children, rest, 'uniform', 0)
and so on, taking op 0 and children each time. op 0 will be things like _mult and _plus for * and + (and subtraction -- subtraction is _plus of negative of the value).
With a little work, you could create a routine that broke expressions down into nested cell arrays or into nested struct.
This is not a nice interface, but it is all that is availabe in the symbolic toolbox in any released version.
3 commentaires
Walter Roberson
le 18 Fév 2019
I attached code that produces a nested cell parse tree. You could modify it.
The current last line has {op0} which will produce the token such as exp . You would want to look at length(rest) and use that many nominal variables similar to the representative_vars that I introduce near the beginning of the code to convert simple @functionname into functionname(x, y, z, ...) expressions.
Plus de réponses (0)
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!