matlab运行结果显示不出,我的malab程序为什么一直运行不出结果啊,是太麻烦了吗?...

在MATLAB中运行一个复杂的机械臂动力学计算程序时,遇到了程序无法显示最后变量Z的问题。程序涉及符号运算、矩阵运算以及物理参数计算,包括关节角度、质量、摩擦力等因素。尽管程序的前部分能正常运行,但最终结果Z无法得到。求助如何解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

syms t real

r=0.15;

R=0.25;

h=0.02;

H=0.3;

theta=0;

a0=0;

a=a0+0.1*t;

b=pi/6;

c=pi/6;

mp=5;

ml1=2.5;

ml2=2.5;

ml3=2.5;

mu1=0.5;

mu2=0.5;

mu3=0.5;

g=9.8;

OMB=[0 0 H].';

T11=cos(a)*cos(b)*cos(c-a)-sin(a)*sin(c-a);

T12=-cos(a)*cos(b)*sin(c-a)-sin(a)*cos(c-a);

T13=cos(a)*sin(b);

T21=sin(a)*cos(b)*cos(c-a)+cos(a)*sin(c-a);

T22=-sin(a)*cos(b)*sin(c-a)+cos(a)*cos(c-a);

T23=sin(a)*sin(b);

T31=-sin(b)*cos(c-a);

T32=sin(b)*sin(c-a);

T33=cos(b);

T=[T11 T12 T13;T21 T22 T23;T31 T32 T33];

o2=T*[0 0 h].'+OMB;

o211=diff(o2,t,2);

m1=[r*cos(theta) r*sin(theta) h].';

m2=[r*cos(theta+(2*pi)/3) r*sin(theta+(2*pi)/3) h].';

m3=[r*cos(theta+(4*pi)/3) r*sin(theta+(4*pi)/3) h].';

M1=T*m1+OMB;

M2=T*m2+OMB;

M3=T*m3+OMB;

B1=[R 0 0].';

B2=[R*cos((2*pi)/3) R*sin((2*pi)/3) 0].';

B3=[R*cos((4*pi)/3) R*cos((4*pi)/3) 0].';

l1=T*m1+OMB-B1;

l2=T*m2+OMB-B2;

l3=T*m3+OMB-B3;

L1=sqrt(l1.'*l1);

L2=sqrt(l2.'*l2);

L3=sqrt(l3.'*l3);

u1=l1/L1;

u2=l2/L2;

u3=l3/L3;

w=[0.1*t 0 0].';

ww=[0.1 0 0 ].';

JC=[0.03 0 0;0 0.03 0;0 0 0.06];

JUC=[0.00165 0 0;0 0.00165 0;0 0 0.00002];

JDC=[0.02 0 0;0 0.02 0;0 0 0.0005];

l11=dot(cross(M1,u1),w);

l22=dot(cross(M2,u2),w);

l33=dot(cross(M3,u3),w);

l111=cross(ww,M1)+cross(w,cross(w,M1));

l222=cross(ww,M2)+cross(w,cross(w,M2));

l333=cross(ww,M3)+cross(w,cross(w,M3));

W1=(cross(u1,cross(w,M1)))/L1;

W2=(cross(u2,cross(w,M2)))/L2;

W3=(cross(u3,cross(w,M3)))/L3;

a1=(cross(u1,l111)-2*l11*W1)/L1;

a2=(cross(u2,l222)-2*l22*W2)/L2;

a3=(cross(u3,l333)-2*l33*W3)/L3;

LD1=110;

ld1=(l1*LD1)/L1;

LD2=110;

ld2=(l2*LD2)/L2;

LD3=110;

ld3=(l3*LD3)/L3;

al1=cross(a1,ld1)+cross(W1,cross(W1,ld1));

al2=cross(a2,ld2)+cross(W2,cross(W2,ld2));

al3=cross(a3,ld3)+cross(W3,cross(W3,ld3));

LU1=(L1-LD1)/2+LD1;

lu1=(l1*LU1)/L1;

LU2=(L2-LD2)/2+LD2;

lu2=(l2*LU2)/L2;

LU3=(L3-LD3)/2+LD3;

lu3=(l3*LU3)/L3;

au1=cross(a1,lu1)+cross(W1,cross(W1,lu1))+dot(l111,u1)+2*l11*cross(W1,u1);

au2=cross(a2,lu2)+cross(W2,cross(W2,lu2))+dot(l222,u2)+2*l22*cross(W2,u2);

au3=cross(a3,lu3)+cross(W3,cross(W3,lu3))+dot(l333,u3)+2*l33*cross(W3,u3);

e1=[1 0 0].';

e2=[0 1 0].';

e3=[0 0 1].';

x1=[0 0 0].';

x2=[0 0 0].';

x3=[0 0 0].';

Q=[u1 u2 u3 e1 e2 e3;cross(M1,u1) cross(M2,u2) cross(M3,u3) x1 x2 x3];

D1=cross(u1,JUC*a1+cross(W1,(JUC*W1))+JDC*a1+cross(W1,(JDC*W1))+cross((mu1*lu1),(l111-g))+cross((ml1*ld1),(l111-g)));

D2=cross(u2,JUC*a2+cross(W2,(JUC*W2))+JDC*a2+cross(W2,(JDC*W2))+cross((mu2*lu2),(l222-g))+cross((ml2*ld2),(l222-g)));

D3=cross(u3,JUC*a3+cross(W3,(JUC*W3))+JDC*a3+cross(W3,(JDC*W3))+cross((mu3*lu3),(l333-g))+cross((ml3*ld3),(l333-g)));

Z=[mu1*dot((au1-g),u1)*u1+mu2*dot((au2-g),u2)*u2+mu3*dot((au3-g),u3)*u3-D1/L1-D2/L2-D3/L3-mp*(g-o211) mu1*dot((au1-g),u1)*(cross(M1,u1))+mu2*dot((au2-g),u2)*(cross(M2,u2))+mu3*dot((au3-g),u3)*(cross(M3,u3))+JC*ww+cross(w,JC*w)-cross(M1,D1/L1)-cross(M2,D2/L2)-cross(M3,D3/L3)-cross(mp*o2,(g-o211))].';

这是程序,我想得到Z,他前面的都能运行出来,是为什么呢?求好心人帮忙解答一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值