matlab 的循环问题(100分)

来源:百度知道 编辑:UC知道 时间:2024/07/03 01:25:51
clear all
clc

syms flag x x1 x2 x3 l1 l2 l3 m n Pb P11 P12 P13 P7 P8 P9 l1 l2 l3;
x=0;
y=0;
z=60;
a=0;
b=0;
c=0;
R=2.3;
z1=60;
z2=60;
z3=60;
L=0.4;
T=0.25;
flag=0;
Ra=[cos(a)*cos(b),cos(a)*sin(b)*sin(c)-sin(a)*cos(c),cos(a)*sin(b)*cos(c)+sin(a)*sin(c);
sin(a)*cos(b),sin(a)*sin(b)*sin(c)+cos(a)*cos(c),sin(a)*sin(b)*cos(c)-cos(a)*sin(c);
-sin(b),cos(b)*sin(c),cos(b)*cos(c)];

P1=[-R/4,-R/4*tan(pi/6),0]';%动平台顶点7'点在动坐标系的坐标
P2=[R/4,-R/4*tan(pi/6),0]'; %动平台顶点8'点在动坐标系的坐标
P3=[0,R/2*cos(pi/6)*2/3,0]'; %动平台顶点9'点在动坐标系的坐标
P7=[-l1*sin(pi/6),-R*cos(pi/6)*2/3+l1*cos(pi/6),z1]'; %移动副L1对应点的坐标
P8=[R/2-l2*cos(pi/3),R/2*tan(pi/6)-l2*sin(pi/3),z2]';%移动副L2对应点的坐标
P9=[-R/2+l3,R/2*tan(pi/6),z3]'; %移动副L3对应点的坐标
e=R/2-L-T
f=R/2-L+T

while 1
Pb=[x,y,z]' %动平台原点在定平台坐标系的坐标

第一次循环时l1,l2,l3为sym
由于第一次循环后l1,l2,l3已经被赋值变成数值非sym,出错那是必须的

所以改为

clear all
clc

syms flag x x1 x2 x3 l1 l2 l3 m n Pb P11 P12 P13 P7 P8 P9 l1 l2 l3;
x=0;
y=0;
z=60;
a=0;
b=0;
c=0;
R=2.3;
z1=60;
z2=60;
z3=60;
L=0.4;
T=0.25;
flag=0;
Ra=[cos(a)*cos(b),cos(a)*sin(b)*sin(c)-sin(a)*cos(c),cos(a)*sin(b)*cos(c)+sin(a)*sin(c);
sin(a)*cos(b),sin(a)*sin(b)*sin(c)+cos(a)*cos(c),sin(a)*sin(b)*cos(c)-cos(a)*sin(c);
-sin(b),cos(b)*sin(c),cos(b)*cos(c)];

P1=[-R/4,-R/4*tan(pi/6),0]';%动平台顶点7'点在动坐标系的坐标
P2=[R/4,-R/4*tan(pi/6),0]'; %动平台顶点8'点在动坐标系的坐标
P3=[0,R/2*cos(pi/6)*2/3,0]'; %动平台顶点9'点在动坐标系的坐标
P7=[-l1*sin(pi/6),-R*cos(pi/6)*2/3+l1*cos(pi/6),z1]'; %移动副L1对应点的坐标
P8=[R/2-l2*cos(pi/3),R/2*tan(pi/6)-l2*sin(pi/3),z2]';%移动副L2对应点的坐标
P9=[-R/2+l3,R/2*tan(pi/6),z3]'; %移动副L3对应点的坐标
e=R/2-L-T