回 帖 发 新 帖 刷新版面

主题:[讨论]求教

clear all;clc;
syms A1 A2 A3 A4
a=200;b=100;c=200;d=150;e=135;h=75;  %杆0A长度为a,0B长度为b,CD长度为c,杆EQ=FK=d,杆MN=e,LN=h;
k=200;s=225;l=350;                   %动平台底边KQ=k,两腰PK=PQ=s,杆LP=l;
L10=200;L20=200;L30=400;L40=400;     %四个输入移动副的初始位移分别为L10、L20、L30、L40;
w=0*pi/180;            %动作标参考点P绕x轴旋转角α;
v=0*pi/180;            %动作标参考点P绕x轴旋转角γ;

           %*************************************************%
                       %第一步,找出满足杆长条件约束的点
           %*************************************************%
for y=0:10:1200           %y循环次数
    for z=-600:10:800    %z循环次数
        S=sqrt(s^2-k^2/4);
        B1=l^2-z^2;
        B2=e^2-(h*z/l+b)^2;
        B3=d^2-(z+a-s*cos(w))^2-(-(k*cos(v))/2-s*sin(v)*sin(w)+c/2)^2;
        B4=d^2-(z+a-s*cos(w))^2-((k*cos(v))/2-s*sin(v)*sin(w)-c/2)^2;
        if (B1>=0)&(B2>=0)&(B3>=0)&(B4>=0)
           A1=y-L10-sqrt(B1);
           A2=h*(y-L10-A1)/l-sqrt(B2)-L20+L10+A1;
           A3=S*cos(v)*sin(w)+y-sqrt(B3)-L30;
           A4=S*cos(v)*sin(w)+y-sqrt(B4)-L40;
        else
            continue;
        end  
        P=[0;0;0];
        A=[0;0;0];
        B=[0;0;-b];
        C=[-c/2;0;-a];
        D=[c/2;0;-a];
        E=[-c/2;L30+A3;-a]
        F=[c/2;L40+A4;-a]
        L=[0;L10+A1;0]
        M=[0;L20+A2;-b]
        N=[0;h*y+(l-h)*L10+(l-h)*A1/l;h*z/l]
        K=[k*cos(v)/2-sqrt(s^2-k^2/4)*sin(v)*sin(w);y+sqrt(s^2-k^2/4)*cos(v)*sin(w);z-sqrt(s^2-k^2/4)*cos(w)]
        Q=[-k*cos(v)/2-sqrt(s^2-k^2/4)*sin(v)*sin(w);y+sqrt(s^2-k^2/4)*cos(v)*sin(w);z-sqrt(s^2-k^2/4)*cos(w)]
        a1=norm(L-A)
        a2=norm(M-B)
        c1=norm(P-L)
        c2=norm(N-M)
        d1=norm(E-C)
        d2=norm(F-D)
        e1=norm(Q-E)
        e2=norm(K-F)
        b1=acos(dot(a1,c1));
        b2=acos(dot(a2,c2));
        b3=acos(dot(d1,e1));
        b4=acos(dot(d2,e2));
        b1min=90*pi/180;
        b2min=90*pi/180;b2max=135*pi/180;
        b3min=0*pi/180;b3max=30*pi/180;  
        b4min=0*pi/180;b4max=30*pi/180;
         if (abs(A1)<=200)&(abs(A2)<=200)&(abs(A3)<=200)&(abs(A4)<=200)&(b1>b1min)&(b2>b2min)&(b2<b2max)&(b3>=b3min)&(b3<=b3max)&(b4>=b4min)&(b4<=b4max)
             plot(y,z,'.');hold on;
         end
    end
end
画不出图,提示:devide by zeros
找不出程序中哪里输出零参数了,寻求高手帮忙找一下,万分感谢!!

回复列表 (共1个回复)

沙发

不好意思,程序中有些错误
更正: a1=(L-A)/norm(L-A);
       a2=(M-B)/norm(M-B);
       c1=(P-L)/norm(P-L);
       c2=(N-M)/norm(N-M);
       d1=(E-C)/norm(E-C);
       d2=(F-D)/norm(F-D);
       e1=(Q-E)/norm(Q-E);
       e2=(K-F)/norm(K-F);
初学者,希望大家多多帮忙~研究课题需求中啊

我来回复

您尚未登录,请登录后再回复。点此登录或注册