用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;elsex=x-dx;endy=y;F=abs(xe*y)-abs(ye*x);elseif(ye0)y=y+dy;elsey=y-dy;endx=x;F=abs(xe*y)-abs(ye*x);endif(abs(F)=0.01)F=0;endxx(index)=x;yy(index)=y;index=index+1;if((abs(x)+abs(y))=(abs(xe)+abs(ye)))break;endendif(xe0)xxx=0:0.01:xe;elsexxx=0:-0.001:xe;endyyy=K*xxx;if(xe0)plot(xx,yy,'g',xxx,yyy,'b');elseplot(xx,yy,'g-',xxx,yyy,'b');endgridon;-5-4.5-4-3.5-3-2.5-2-1.5-1-0.50-6-5-4-3-2-10x轴y轴图表1当dx=0.5;dy=0.6;xe=-5;ye=-6;时,结果如图表1所示。0123456700.511.522.533.54图表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所示,这样就不会多走一步。012345600.511.522.533.54图表3采用不等步长和简化的偏差计算公式,结果如图表4所示;我们发现对于,简化的偏差计算不适用于不等步长的情况。-5-4.5-4-3.5-3-2.5-2-1.5-1-0.50-7-6-5-4-3-2-10图表4在土表所采用的程序基础上对偏差计算公式做一个修改,F=F-abs(ye*dx);F=F+abs(xe*dy);计算结果如图表5所示,此方法在该条件下适用。-5-4.5-4-3.5-3-2.5-2-1.5-1-0.50-6-5-4-3-2-10图表5

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功