symbolic expression to function
Afficher commentaires plus anciens
The following code is to obtain a formula of calculating the determinant of the symmetric matrix.
function [ yy ] = detF( xdm )
ni = (1 + xdm) * xdm /2;
xx = sym('xx', [ni,1]);
xM = sym('xM', [xdm,xdm]);
for i = 1:xdm
ia = i * (i-1) /2 +1;
ib = i + ia - 1;
xM(i, 1:i) = xx(ia : ib);
end
for j = 1:xdm-1
for k = j+1:xdm
xM(j,k) = xM(k,j);
end
end
y = det(xM);
yy = symfun(y,xx);
end
xdm is the demension of the matrix. You can test the code by 'detF(2)'. The code returns something like
yy(xx1, xx2, xx3) = - xx2^2 + xx1*xx3
However, the argument of the symfun is 3 elements, what I need is a vector input like yy(x) = -x(2)^2 + x(1)*x(3)
Any suggestion? Thank you in advance.
Qun
Réponses (1)
Walter Roberson
le 16 Juil 2017
0 votes
Use matlabFunction with the 'vars' option and pass {xx} as the value of the option, or possibly the transpose of that depending if you want row vectors or column vectors. To emphasize, for this situation you need to pass a cell array that contains a symbolic vector
2 commentaires
Qun Wu
le 17 Juil 2017
Walter Roberson
le 17 Juil 2017
yy = matlabFunction(y, 'vars', {xx})
Notice the {}
Catégories
En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!