subs command is not working on differentiation in MATLAB
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I have defined theta1 and theta2 as my random functions of time. I have defined vec_a1 and vec_v1 by differentiaing them. Afterwards when I am defining theta1 and theta2 and trying to evaluate vec_a1 and vec_v1 it is not converting to numerical values.
g = -9.81;
I1=1;I2=1.5;l1=2;l2=1;rho1=1.1;rho2=0.4;
syms theta1(t) theta2(t)
vec_rho1 = [rho1*cos(theta1), rho1*sin(theta1)];
vec_l1 = [l1*cos(theta1), l1*sin(theta1)];
vec_rho2 = vec_l1 + [rho2*cos(theta2), rho2*sin(theta2)];
vec_l2 = vec_l1 + [l2*cos(theta2), l2*sin(theta2)];
vec_v1 = diff(vec_rho1, t);
vec_a1 = diff(vec_v1, t);
vec_v2 = diff(vec_rho2, t);
vec_a2 = diff(vec_v2, t);
theta1=0.02*t;
theta2=0.3*t;
xx=1
vec_a1=subs(vec_a1)
x=vec_a1(xx);
x=double(x)
3 Commenti
Walter Roberson
il 5 Giu 2022
subs(expression) is well defined. It means that matlab should look through all of the symvar() and replace them by their values in scope.
Risposte (2)
Dyuman Joshi
il 5 Giu 2022
g = -9.81;
I1=1;I2=1.5;l1=2;l2=1;rho1=1.1;rho2=0.4;
syms theta1(t) theta2(t)
theta1=0.02*t;
theta2=0.3*t;
vec_rho1 = [rho1*cos(theta1), rho1*sin(theta1)];
vec_l1 = [l1*cos(theta1), l1*sin(theta1)];
vec_rho2 = vec_l1 + [rho2*cos(theta2), rho2*sin(theta2)];
vec_l2 = vec_l1 + [l2*cos(theta2), l2*sin(theta2)];
vec_v1 = diff(vec_rho1, t);
vec_a1 = diff(vec_v1, t);
vec_v2 = diff(vec_rho2, t);
vec_a2 = diff(vec_v2, t);
xx=1;
x=subs(vec_a1,t,xx)
double(x)
0 Commenti
Walter Roberson
il 5 Giu 2022
theta1(t)=0.02*t;
theta2(t)=0.3*t;
That is, you had replaced the function theta1 (a function of t) with the symbolic variable theta1 that was not a function.
0 Commenti
Vedere anche
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

