Matlab 端点法和最小二乘法计算直线度
来源:互联网 发布:义乌淘宝美工培训学校 编辑:程序博客网 时间:2024/06/05 03:45
一、 直线度相关描述:
在工程实际中,评定导轨直线度误差的方法常用两端点连线法和最小二乘法。两端点连线法,是将误差曲线首尾相连,再通过曲线的最高和最低点,分别作两条平行于首尾相连的直线,两平行线间沿纵坐标测量的数值,通过数据处理后,即为导轨的直线度误差值;最小二乘法,是将误差曲线的“高、高”(或“低、低”)两点相连,过低(高)点作一直线与之相平行,两平行线间沿纵标坐测量的数值,通过数据处理后,即为导轨的直线误差值。
求解直线度误差的核心在于确定 理解直线方程
二、两端点连线法计算直线度:
x,y 结合你实际数据进行替换
clc,clearx=1:5;y=[2,5,16,8,20];len=length(x); %获取数据的长度 x_start=x(1); %获取x和y的端点值x_end=x(end);y_start=y(1);y_end=y(end);% 求直线方程:y=kx+b 方便后续计算k=(y_end-y_start)/(x_end-x_start);b=y_end-k*x_end;%xx=[x_start,x_end]; %获取x的首末点yy=[y_start,y_end]; %获取y的首末点plot(x,y,'-*','linewidth',2) %绘制原始数据图hold onplot(xx,yy,'-rs','MarkerFaceColor','r','linewidth',2) %绘制端点连线图% str=['理想直线方程为: ','y=',num2str(k),'x','+','(',num2str(b),')'];% % text(3,16,str,'color','red','fontsize',12)set(gca,'xtick',[min(x):1:max(x)],'ytick',[min(y):1:max(y)]) %控制刻度grid onfor i=1:len d(i)=y(i)-(k*x(i)+b); % 循环扫描有所曲线上的点与端点联系的差值endL=max(d)-min(d); % 计算曲线的直线度误差L=dmax-dmin[d_max,max_index]=max(d); % 找到最大偏差的点 (二者有正负,是相对的)[d_min,min_index]=min(d); % 找到最小偏差的点hold onplot([max_index,max_index],[y(max_index),k*max_index+b],'b--') %绘制偏差线plot([min_index,min_index],[y(min_index),k*min_index+b],'k--')xlabel('x(测量点序号)')ylabel('y(测量值)')title({['理想直线方程为: ','y=',num2str(k),'x','+','(',num2str(b),')'];['端点法求直线度值为:',num2str(L)]});
结果图:
三、最小二乘法计算直线度:
%% 求直线度误差的核心在于确定 理想直线方程clc,clear%造数据测试x=1:5;y=[2,5,16,8,20];len=length(x); %获取数据的长度 %% 公式法计算最小二乘理想直线k=(5*sum(x.*y)-sum(x)*sum(y))/(5*sum(x.^2)-(sum(x))^2)b=mean(y)-k*mean(x)%%%% 用polyfit函数确定最小二乘理想直线% p=polyfit(x,y,1)% x1=x;% y1=polyval(p,x1);% k=p(1); % 一次项系数% b=p(2); % 常数项系数 %% 两个方法均可行xx=x;yy=k*x+b;plot(x,y,'-*','linewidth',2) %绘制原始数据图hold onplot(xx,yy,'-rs','MarkerFaceColor','r','linewidth',2) %绘制端点连线图set(gca,'xtick',[min(x):1:max(x)],'ytick',[min(y):1:max(y)]) %控制刻度grid onfor i=1:len d(i)=y(i)-(k*x(i)+b); % 循环扫描有所曲线上的点与端点联系的差值endL=max(d)-min(d); % 计算曲线的直线度误差L=dmax-dmin[d_max,max_index]=max(d); % 找到最大偏差的点 (二者有正负,是相对的)[d_min,min_index]=min(d); % 找到最小偏差的点hold onplot([max_index,max_index],[y(max_index),k*max_index+b],'b--') %绘制偏差线plot([min_index,min_index],[y(min_index),k*min_index+b],'k--')xlabel('x(测量点序号)')ylabel('y(测量值)')title({['理想直线方程为: ','y=',num2str(k),'x','+','(',num2str(b),')'];['最小二乘法求直线度值为:',num2str(L)]})
结果图如下:
两种办法 ,替换x y为自己对应的数据,即可得到符合自己数据的结果
阅读全文
0 0
- Matlab 端点法和最小二乘法计算直线度
- 最小二乘法直线拟合及其Matlab实现
- 牛顿迭代法和最小二乘法直线拟合代码
- 最小二乘法 MATLAB
- MATLAB 最小二乘法
- 使用MATLAB计算点到直线距离
- Matlab中点到直线距离计算
- 最小二乘法推导和证明(matlab代码实现)
- 最小二乘法直线拟合
- 最小二乘法直线拟合
- 最小二乘法似合直线
- 最小二乘法直线拟合
- 最小二乘法直线拟合
- 最小二乘法直线拟合
- 最小二乘法 直线拟合
- 最小二乘法拟合直线
- 最小二乘法 直线生成
- 最小二乘法直线拟合
- AndroidStudio配置忽略文件(Git)
- JAVA EE中 Servlet的入门
- POJ3268---Silver Cow Party (最短路径)
- Angular 组件
- Kinetis单片机——结构体相关
- Matlab 端点法和最小二乘法计算直线度
- ViewPager轮播
- 常用Shell脚本命令
- 欢迎使用CSDN-markdown编辑器
- acm算法有用吗?写给自己。
- Windows SDK 定时器Timer
- 九度oj-1070-今年第几天
- Mt1
- 马毅老师讲座收获总结