How to substitute an array of double values into a symbolic equation

8 vues (au cours des 30 derniers jours)
Hello MATLAB community,
I am currently struggling to substitute values from a symbolic array into a structure of symbolic equations. I have a system of 18 nonlinear equations and have solved them symbolically. I am currently attempting to plug in an array of values from a symbolic matrix into each field of the structure (each structure is one equation), and then convert the resulting expression to a double.
I am not hardcoding each variable I need to substitue into each equation because a symbolic solution to each equation looks like this....
(I apologize in advance for the clutter)
(0.5*(1.0*W6*h5*cos(0.017453292519943295769236907684886*o2)^2*cos(0.017453292519943295769236907684886*o6) - W6*h5*cos(0.017453292519943295769236907684886*o6)*sin(0.017453292519943295769236907684886*o2)^2 - 2.0*W5*x6*cos(0.017453292519943295769236907684886*o2)^2*sin(0.017453292519943295769236907684886*o6) - 2.0*W5*h5*cos(0.017453292519943295769236907684886*o2)^2*cos(o6) - 2.0*W6*h5*cos(0.017453292519943295769236907684886*o2)^2*cos(o6) + 2.0*W6*h5*sin(0.017453292519943295769236907684886*o2)^2*cos(o6) + 2.0*W5*x6*cos(0.017453292519943295769236907684886*o2)*sin(0.017453292519943295769236907684886*o2)*cos(o6) + 2.0*W5*h5*cos(0.017453292519943295769236907684886*o2)*sin(0.017453292519943295769236907684886*o2)*sin(0.017453292519943295769236907684886*o6)))/(L5*(1.0*h5*sin(0.017453292519943295769236907684886*o2)^3*sin(0.017453292519943295769236907684886*o6) - x6*cos(0.017453292519943295769236907684886*o2)^3*sin(0.017453292519943295769236907684886*o6) - h5*cos(0.017453292519943295769236907684886*o2)^3*cos(o6) + 1.0*x6*sin(0.017453292519943295769236907684886*o2)^3*cos(o6) + 1.0*x6*cos(0.017453292519943295769236907684886*o2)^2*sin(0.017453292519943295769236907684886*o2)*cos(o6) + 1.0*h5*cos(0.017453292519943295769236907684886*o2)^2*sin(0.017453292519943295769236907684886*o2)*sin(0.017453292519943295769236907684886*o6) - x6*cos(0.017453292519943295769236907684886*o2)*sin(0.017453292519943295769236907684886*o2)^2*sin(0.017453292519943295769236907684886*o6) - h5*cos(0.017453292519943295769236907684886*o2)*sin(0.017453292519943295769236907684886*o2)^2*cos(o6)))
I created two different cell arrays, one which contained all of the symbolic constants that I want to sub into the equation, and one that contained the numeric values that corresponded with each symbolic constant. I created the following code below to attempt to do this.
Ax_d = Sol.Ax
Ax_d = subs({Var_matrix}, {G_matrix})
Where Var_matrix is the variable matrix and G_matrix is the numeric value matrix that is currently still in symbolic form. When I run the code, I obtain a very incorrect result...
[ x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, xp, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dx, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, dy, 25, 2, 2, 2, 2, 2, 2, 69/50, 3/2, 299/200, 3/2, 23/100, 17/20, 0, 0, 0, 0, 0, 1, 1, 1, 88, 15/2, 15/2, 15/2, 0, 0, 273/400, 30, 30, o5, o6, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, y0, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, x1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, y1, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, x2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, y2, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x5, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, x6, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom1, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom2, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, xcom3, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, k, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L2, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L4, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L5, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, L6, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, h5, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, Wi, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W1, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W2, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W3, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W4, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W5, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, W6, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o2, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o5, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6, o6]
And this continues for some time...
I am not a professional at MATLAB by any stretch and would appreciate any help or adivce!

Réponse acceptée

Walter Roberson
Walter Roberson le 24 Juin 2020
structfun(@(F) double(subs(F, {Var_matrix}, {G_matrix})), Sol, 'uniform', 0)
  3 commentaires
Walter Roberson
Walter Roberson le 24 Juin 2020
{Var_Matrix} can be a cell array each of which is a scalar symbolic variable. What you cannot use is a cell array in which the individual entries are vectors of variables.
ETHAN FONTANA
ETHAN FONTANA le 25 Juin 2020
Thank you Walter! I appreciate the help!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Encryption / Cryptography dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by