syntax issues when adapting an old code from 2009a
13 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Dear All,
I'm currently struggeling with adapting a short code from the book "Modeling of Curves and Surfaces with MATLAB" from 2010 based on Matlab 7.8 Release 2009a. I would like it to run under Matlab 2020a. The function in the book is presented as:
function f = sgeod(r)
syms u v;
ru = diff(r, u); rv = diff(r, v); % these 2 lines
E = ru*ru’; F = ru*rv’; G = rv*rv’; % can be replaced by
% S=EFG(r); E = S(1); F = S(2); G = S(3); % the following line:
g = E*G - F*F;
Eu = diff(E, u); Ev = diff(E, v);
Fu = diff(F, u); Fv = diff(F, v);
Gu = diff(G, u); Gv = diff(G, v);
f(1)= simplify(-subs((G*Eu - F*(2*Fu - Ev))/(2*g)*’x(3)*x(3)’+ (G*Ev - F*Gu)/
g*’x(3)*x(4)’ +G*(2*Fv - Gu) - F*Gv)/(2*g)*’x(4)*x(4)’, {u v}, {’x(1)’, ’x(2)’}));
f(2) = simplify(-subs((E*(2*Fu -Ev) -F*Eu)/(2*g)*’x(3)*x(3)’+ (E*Gu - F*Ev)/
g*’x(3)*x(4)’+(E*Gv - F*(2*Fv - Gu))/(2*g)*’x(4)*x(4)’, {u v}, {’x(1)’, ’x(2)’}));
end
It would be great if someone could help me with what would be the correct sytax for this code for matlab 2020a
thanks a lot and best greetings
Andreas
2 Kommentare
Jan
am 24 Nov. 2021
Most of all replace the ’ (char(8217)) characters by quotes: ' (char(39)) .
Then try it again. If you get an error message, post a copy of the complete message and explain, what you use as input r.
Antworten (1)
Navya Singam
am 2 Dez. 2021
Hi,
In this line of code,
f(1) = simplify(-subs((G*Eu - F*(2*Fu - Ev)) /(2*g)*'x(3)*x(3)'+ (G*Ev - F*Gu)/g*'x(3)*x(4)'+(G*(2*Fv - Gu) - F*Gv)/(2*g)*'x(4)*x(4)', {u v}, {'x(1)', 'x(2)'}));
"subs" function expects the first argument to be symbolic expression or symbolic function. But 'x(3)*x(3)' in first argument is of the type char, to convert it into symbolic expression you can use the str2sym function.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Symbolic Math Toolbox 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!