symbolic expression to function

3 Ansichten (letzte 30 Tage)
Qun Wu
Qun Wu am 15 Jul. 2017
Kommentiert: Walter Roberson am 17 Jul. 2017
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

Antworten (1)

Walter Roberson
Walter Roberson am 16 Jul. 2017
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 Kommentare
Qun Wu
Qun Wu am 17 Jul. 2017
Thank you for your reply. I tried matlabFunction and pass xx as the 'var' value. And I got @(xx1,xx2,xx3)xx1.*xx3-xx2.^2 which is not the required one. I need something like @(x) x(1)*x(3) - x(2)^2
Walter Roberson
Walter Roberson am 17 Jul. 2017
yy = matlabFunction(y, 'vars', {xx})
Notice the {}

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by