Effacer les filtres
Effacer les filtres

How to get struct value solX.x1 with a symbolic variable x1?

2 vues (au cours des 30 derniers jours)
xv cheng
xv cheng le 31 Juil 2018
Commenté : Walter Roberson le 31 Juil 2018
Hello!I have a symbolic expression like
expr=3*x1-2*x3
I solve a equation using vpasolve and get a struct called solX. I can use solX.x1,solX.x2,...to get values.
I want Matlab to find the variables name in the expr and use subs to get the expr value.
variable_Name=symvar(expr)% get 1*2 sym [x1 x3]
I know solX.name(1) is not correct. How to get solX.x1 using variable_Name?
Many thanks!

Réponses (1)

Walter Roberson
Walter Roberson le 31 Juil 2018
solX.(name{1})
However since your goal is symbolic substitution you can probably just do
subs(Expression, solX)
  2 commentaires
xv cheng
xv cheng le 31 Juil 2018
Modifié(e) : xv cheng le 31 Juil 2018
Thank you!
solX.(name{1})
It means name should be a cell array ,the element is char,
name={'x1' 'x2' 'x3' ...}
But name=symvar(expr) get 1*2 sym array [x1 x3].So solX.(name{1}) doesn't work.
But at last subs(Expression, solX) It's very simple and useful!Thank you very much!
Walter Roberson
Walter Roberson le 31 Juil 2018
name = arrayfun(@char, symvar(YourExpression), 'uniform', 0);
after which you can use solX.(name{1})
But that assumes that all of the symbols in YourExpression appear in solX. If you do not choose to use the shortcut that I posted before of subs(YourExpression, solX) then better would be
subs(YourExpression, fieldnames(solX), struct2cell(solX))

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by