子函数%子函数slider_crank文件function[theta2,s3,omega2,v3,alpha2,a3]=slider_crank(theta1,omega1,alpha1,l1,l2,e)%计算连杆2的角位移和滑块3的线位移theta2=asin((e-l1*sin(theta1))/l2);s3=l1*cos(theta1)+l2*cos(theta2);%计算连杆2的角为速度和滑块的线速度A=[-l1*sin(theta1),1;-2*cos(theta2),0];B=[-l1*sin(theta1);l1*cos(theta1)];omega=A\(omega1*B);omega2=omega(1);v3=omega(2);%计算连杆2的角加速度和滑块3的线加速度At=[omega2*l2*cos(theta2),0;omega2*l2*sin(theta2),0];Bt=[-omega1*l1*cos(theta1);-omega1*l1*sin(theta1)];alpha=A\(-At*omega+alpha1*B+omega1*Bt);alpha2=alpha(1);a3=alpha(2);主函数%住程序slider_crank_main文件%输入已经知道的数据clear;l1=100;l2=300;e=0;hd=pi/180;du=180/pi;omega1=10;alpha1=0;%调用子函数slider_ank计算曲柄滑块机构位移,速度,加速度forn1=1:720theta1(n1)=(n1-1)*hd;[theta2(n1),s3(n1),omega2(n1),v3(n1),alpha2(n1),a3(n1)]=slider_crank...(theta1(n1),omega1,alpha1,l1,l2,e);end%位移,速度,加速度和曲柄滑块机构图形输出figure(l1);n1=1:720;subplot(2,2,1);%绘制位移图[AX,H1,H2]=plotyy(theta1*du,theta2*du,theta1*du,s3);set(get(AX(1),'ylabel'),'String','连杆角位移/\circ')set(get(AX(2),'ylabel'),'String','滑块位移/mm')title('位移线图');xlabel('曲柄转角\theta_1/\circ')gridon;subplot(2,2,2);%绘制速度图[AX,H1,H2]=plotyy(theta1*du,omega2,theta1*du,v3);set(get(AX(2),'ylabel'),'String','滑块速度/mm\cdots^{-1}')title('速度线图');xlabel('曲柄转角\theta_1/\circ')ylabel('连杆角速度/rad\cdots^{-1}')gridon;subplot(2,2,3);%绘制加速度图[AX,H1,H2]=plotyy(theta1*du,alpha2,theta1*du,a3);set(get(AX(2),'ylabel'),'String','滑块加速度/mm\cdots^{-2}')title('加速度线图');xlabel('曲柄转角\theta_1/\circ')ylabel('连杆加速度/rad\cdots^{-2}')gridon;subplot(2,2,4);%绘曲柄滑块机构图x(1)=0;y(1)=0;x(2)=l1*cos(70*hd);y(2)=l1*sin(70*hd);x(3)=s3(70);y(3)=e;x(4)=s3(70);y(4)=0;x(5)=0;y(5)=0;x(6)=x(3)-40;y(6)=y(3)+10;x(7)=x(3)+40;y(7)=y(3)+10;x(8)=x(3)+40;y(8)=y(3)-10;x(9)=x(3)-40;y(9)=y(3)-10;x(10)=x(3)-40;y(10)=y(3)+10;i=1:5;plot(x(i),y(i));gridon;holdon;i=6:10;plot(x(i),y(i));title('曲柄滑块机构');gridon;holdon;xlabel('mm');ylabel('mm')axis([-50400-20130]);plot(x(1),y(1),'o');plot(x(2),y(2),'o');plot(x(3),y(3),'o');%曲柄滑块的仿真运动figure(2)m=moviein(20);j=0;forn1=1:5:360j=j+1;clf;%x(1)=0;y(1)=0;x(2)=l1*cos(n1*hd);y(2)=l1*sin(n1*hd);x(3)=s3(n1);y(3)=e;x(4)=(l1+l2+50);y(4)=0;x(5)=0;y(5)=0;x(6)=x(3)-40;y(6)=y(3)+10;x(7)=x(3)+40;y(7)=y(3)+10;x(8)=x(3)+40;y(8)=y(3)-10;x(9)=x(3)-40;y(9)=y(3)-10;x(10)=x(3)-40;y(10)=y(3)+10;%i=1:3;plot(x(i),y(i));gridon;holdon;i=4:5;plot(x(i),y(i));i=6:10;plot(x(i),y(i));plot(x(1),y(1),'o');plot(x(2),y(2),'o');plot(x(3),y(3),'o');xlabel('mm');ylabel('mm')axis([-50450-150150]);m(j)=getframe;endmovie(m)