预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Matlab课程设计胡跃强200908552009机械茅班如图所示,为测量系统的示意图,它由两个能相互转动的连杆,角度编码器和滚轮等组成。O1为固定点,O2点为转动点,O3点为滚轮的中心,连杆的有效长度分别为L1和L2。任一位置时,连杆1相对于某基准位置的角度为θ1,两连杆的相对角度为θ2。其中对于θ1,取垂直方向为基准线,在基准线左侧的为正,基准线右侧的为负;对于θ2,以连杆一为基准线,在基准线左侧的为正,在基准线右侧的为负。这样可以计算求出O3点的坐标值在踏面直角坐标系(XOY)中的位置。当连杆1连续朝一个方向旋转时,可以获得O3点的一系列的坐标点所构成的轨迹坐标值(x3,y3)x3=x1-L1sinθ1-L2sin(θ1+θ2);y3=y1-L1cosθ1-L2cos(θ1+θ2)(1)当滚轮与踏面紧密贴靠时,滚轮的包络线就是踏面外形的实际轮廓线。滚轮的包络线在踏面坐标系中的坐标值可以用下式求得x′3=x3-rsinθ;y′3=y3-rcosθ(2)式中,θ为滚轮轨迹拟合曲线在某一点法线与垂直轴之间的夹角,可用下式求得:tanθ=dy3/dx3(3)式(1)中,x1、L1和L2为已知值,θ1和θ2为测量所得值。其中L1=60mm;L2=72mm,r=8.5mm.x1=0;y1=0;说明:angle.mat是角度数据,共7980个数据,其中前面一半(3990)为θ1,后面一半为θ2,且一一对应课程设计报告要求:(1)用图形画出踏面外形的实际轮廓线。(2)在实际轮廓线上,距离最高点O(x方向54mm距离处A)两点垂直高度差;(3)在实际轮廓线上,求比A点高12mm曲线上的B点与O点的x方向距离。备注:*图形中横坐标方向为X轴,纵坐标方向为Y轴分析过程:1、首先要获取数据,angle.mat是角度数据,共7980个数据,其中前面一半(3990)为θ1,后面一半为θ2,load('angle.mat')命令可以加载angle.mat中的数据。用两个数组分别存储θ1、θ2。2、根据已知条件的公式,tanθ=dy3/dx3,x′3=x3-rsinθ;y′3=y3-rcosθ,x3=x1-L1sinθ1-L2sin(θ1+θ2);y3=y1-L1cosθ1-L2cos(θ1+θ2)初步求出踏面外形的实际轮廓线。3、画出实际轮廓线后,观察曲线可知,有一定量的错误数据。所以必须进行数据的晒选工作。筛选条件是在最高点左边,曲线是递增的,满足若X1>X2,有Y1>Y2,曲线右边是递减的,则有若X1>X2,有Y1<Y2。将筛选过后的数据存到另外一个矩阵中,并绘出实际轮廓线。4、用max函数可以求得最高点O的纵坐标及该点对应的点,进而可以根据第一问中包络线的函数式求得O点横坐标,A点横坐标为O点横坐标加54.选取一定量的数据,利用插值函数interp1在x处插入值的y值,然后将O点纵坐标与A点纵坐标相减即得两点间垂直距离。5、同理,对于第三问,同样可以根据几何关系求得B点纵坐标,同样利用插值函数求得B点横坐标,O点与B点横坐标差值的绝对值即为两点的水平距离。程序代码:clearall;m=load('angle.mat');%加载数据a=m.angle(1:3990);%前半部分数据,为θ1b=m.angle(3991:7980);%后半部分数据为θ2L1=60;L2=72;r=8.5;x1=0;y1=0;t1=a*pi/180;t2=b*pi/180;x3=x1-L1*sin(t1)-L2*sin(t1+t2);y3=y1-L1*cos(t1)-L2*cos(t1+t2);dy=diff(y3);dx=diff(x3);%求导数p=atan(dy./dx);%求反正切t=p*pi/180;x5=x3(2:3990);y5=y3(2:3990);x4=x5-r*sin(t);y4=y5-r*cos(t);%求包络线坐标[my,i]=max(y4);%求y4中的最大值和位置imx=x4(i);%%数据筛选k=0;forj=1:iify4(j)<y4(j+1)&&x4(j)<x4(j+1)%对数据最高点前半部分筛选k=k+1;y6(k)=y4(j);%将筛选数据存入x6矩阵x6(k)=x4(j);elsecontinue;endendk=k+1;forj=i:3988ify4(j)>y4(j+1)&&x4(j)<x4(j+1)%对数据最高点后半部分筛选k=k+1;y6(k)=y4(j);%将筛选数据存入x6矩阵x6(k)=x4(j);elsecontinue;endendm=find(x6==0);x6(m)=