用Matlab实现直线插补计算程序.docVIP

  • 368
  • 0
  • 约1.23千字
  • 约 5页
  • 2017-01-14 发布于重庆
  • 举报
用Matlab实现直线插补计算程序

姓名: 学号: 班级: 用Matlab实现直线插补计算程序 clear; F=0;x=0;y=0; dx=0.5;dy=0.6; xe=-5;ye=-6; K=ye/xe; xx(1)=x;yy(1)=y; index=2; while(1) if(F=0) if(xe0) x=x+dx; else x=x-dx; end y=y; F=abs(xe*y)-abs(ye*x); else if(ye0) y=y+dy; else y=y-dy; end x=x; F=abs(xe*y)-abs(ye*x); end if(abs(F)=0.01) F=0; end xx(index)=x; yy(index)=y; index=index+1; if((abs(x)+abs(y))=(abs(xe)+abs(ye))) break; end end if(xe0) xxx=0:0.01:xe; else xxx=0:-0.001:xe; end yyy=K*xxx; if(xe0) plot(xx,yy,g,xxx,yyy,b); else plot(xx,yy,g-,xxx,yyy,b); end grid on; 图表 1 当dx=0.5;dy=0.6;xe=-5;ye=-6;时,结果如图表1所示。 图表 2 当dx=0.6;dy=0.4; xe=6;ye=4;时结果如图标2所示,结果显示多走了一步,原因是matlab在倒数第二步计算if((abs(x)+abs(y))=(abs(xe)+abs(ye)))时,结果不为0,仍需继续走一步。 可以对程序做进一步修改:加入条件dmin=min(dx,dy)/2; 并把if((abs(x)+abs(y))=(abs(xe)+abs(ye)))修改成 if(abs(abs(x)+abs(y)-abs(xe)-abs(ye))dmin) 结果如图3所示,这样就不会多走一步。 图表 3 采用不等步长和简化的偏差计算公式,结果如图表4所示;我们发现对于,简化的偏差计算不适用于不等步长的情况。 图表 4 在土表所采用的程序基础上对偏差计算公式做一个修改,F=F-abs(ye*dx); F=F+abs(xe*dy);计算结果如图表5所示,此方法在该条件下适用。 图表 5

文档评论(0)

1亿VIP精品文档

相关文档