yB_L1 = polyfit(y_L1_Pt(:,1),y_L1_Pt(:,2),3);  %%使用最小二乘法对后向车道线方程进行拟合

p=polyfit(x,y,n):最小二乘法计算拟合多项式系数。x,y为拟合数据向量,要求维度相同,n为拟合多项式次数。返回p向量保存多项式系数,由最高次向最低次排列。
y=polyval(p,x):计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序。

http://www.ece.northwestern.edu/local-apps/matlabhelp/techdoc/ref/polyfit.html

官方解法

https://ww2.mathworks.cn/help/matlab/ref/polyfit.html

  • 使用中心化和缩放改善数值属性
[p,~,mu] = polyfit(T.year, T.pop, 5);
f = polyval(p,year,[],mu);
  • 具有误差估计值的线性回归,将一个线性模型拟合到一组数据点并绘制结果,其中包含预测区间为 95% 的估计值。
x = 1:100;
y = -0.3*x + 2*randn(1,100);
[p,S] = polyfit(x,y,1);
%计算以 p 为系数的一次多项式在 x 中各点处的拟合值。将误差估计结构体指定为第三个输入,以便 polyval 计算标准误差的估计值。标准误差估计值在 delta 中返回。[y_fit,delta] = polyval(p,x,S);
%绘制原始数据、线性拟合和 95% 预测区间 y±2Δ。plot(x,y,'bo')
hold on
plot(x,y_fit,'r-')
plot(x,y_fit+2*delta,'m--',x,y_fit-2*delta,'m--')
title('Linear Fit of Data with 95% Prediction Interval')
legend('Data','Linear Fit','95% Prediction Interval')

算法

polyfit 使用 x 构造具有 n+1 列和 m = length(x) 行的 Vandermonde (范德蒙德(Vandermonde)方阵)矩阵 V 并生成线性方程组

其中 polyfit 使用 p = V\y 求解。由于 Vandermonde 矩阵中的列是向量 x 的幂,因此条件数 V 对于高阶拟合来说通常较大,生成一个奇异系数矩阵。在这些情况下,中心化和缩放可改善系统的数值属性以产生更可靠的拟合。

浅谈范德蒙德(Vandermonde)方阵的逆矩阵与拉格朗日(Lagrange)插值的关系以及快速傅里叶变换(FFT)中IDFT的原理

https://www.cnblogs.com/gzy-cjoier/p/9741950.html

polyfit是线性拟合而lsqcurvefit 是非线性拟合

https://www.ilovematlab.cn/forum.php?mod=viewthread&tid=262388

%g = fittype('a*x.^2+b*x+c','independent', 'x')
%fy=fit(x,y,g)function f=conf(a,x)
f=a(1)*x.^2+a(2)*x+a(3)xev=lsqcurvefit(@conf,[0 0 0],x,y);

lsqcurvefit 和 polyfit的拟合算法不一样,拟合出的结果当然有可能不一样。

首先,lsqcurvefit 使用的是非线性最小二乘算法,本质上利用的是内部映射牛顿法来迭代搜索(见lsqcurvefit help文档里的算法部分),所以,它不是一次性算出来的多项式系数,而是多次数值迭代找到一个最小二乘意义上的解。另外,它的拟合结果还可能跟拟合时设定的初值有关,初值给得不好,结果也可能不一样。

其次,polyfit 可以看作线性最小二乘法拟合,因为polyfit函数算法描述部分是将x的不同次数构造范德蒙矩阵,然后用矩阵左除求出多项式系数(见help文档的算法部分),这是非常典型的线性最小二乘算法。它是一次性算出系数,无需任何迭代。所以,结果是确定性的(不依赖任何初值的设定),即只要输入数据相同,必然得到相同的拟合系数

至于 fit 函数,help 里没有对其算法原理有详细说明,不过可以看出,它支持很多种拟合算法,有自定义的函数,也有特定的参数,如:‘poly2’。这里poly2就是二次多项式拟合。你可以试试poly2,再看看跟polyfit有什么区别

函数性能

function dpolydengyaxuanzexing(n)
clc;
x=[238,258,278,298,318,338,358];
y1=[2.409,4.219,5.553,9.241,23.425,23.75,25.142];
y2=[3.060,5.270,9.421,13.423,25.909,31.125,31.833];
y3=[3.393,5.452,9.077,11.5,25.454,29.315,29.333];
y4=[3.803,5.381,7.078,9.667,25.3,28.5,28.666];
plot(x,y1,'gx')
hold on
plot(x,y2,'b*')
hold on
plot(x,y3,'r+')
hold on
plot(x,y4,'mo')
xlabel('temperature(K)');ylabel('adsorption capacity(mmol/g)');
p1=polyfit(x,y1,n);
p2=polyfit(x,y2,n);
p3=polyfit(x,y3,n);
p4=polyfit(x,y4,n);
y1=polyval(p1,x);
y2=polyval(p2,x);
y3=polyval(p3,x);
y4=polyval(p4,x);
plot(x,y1,'g-');
hold on
plot(x,y2,'b-')
hold on
plot(x,y3,'r-')
hold on
plot(x,y4,'m-')
legend('100kpa in MCM-41 without APTS','100kpa in MCM-41 with 15APTS',...'100kpa in MCM-41 with 30APTS','100kpa in MCM-41 with 45APTS');
hold off
end

可以分别试试 interp1 spline csaps spap2 spaps 等函数
http://muchong.com/html/201011/2644558_2.html

function dpolydengyaxuanzexing
clc;
x=[238,258,278,298,318,338,358];
y1=[2.409,4.219,5.553,9.241,23.425,23.75,25.142];
y2=[3.060,5.270,9.421,13.423,25.909,31.125,31.833];
y3=[3.393,5.452,9.077,11.5,25.454,29.315,29.333];
y4=[3.803,5.381,7.078,9.667,25.3,28.5,28.666];
plot(x,y1,'gx')
hold on
plot(x,y2,'b*')
hold on
plot(x,y3,'r+')
hold on
plot(x,y4,'mo')
xlabel('temperature(K)');ylabel('adsorption capacity(mmol/g)');
yy1=fit(x',y1','smoothingspline');
yy2=fit(x',y2','smoothingspline');
yy3=fit(x',y3','smoothingspline');
yy4=fit(x',y4','smoothingspline');
plot(yy1,'g-');
hold on
plot(yy2,'b-')
hold on
plot(yy3,'r-')
hold on
plot(yy4,'m-')
legend('100kpa in MCM-41 without APTS','100kpa in MCM-41 with 15APTS',...'100kpa in MCM-41 with 30APTS','100kpa in MCM-41 with 45APTS');
hold off
end
Year=[1625 1830 1930 1960 1974 1987 1999];
Population=[5 10 20 30 40 50 60];
Year1=1625:2020;
Year2=2000:2020;
[P2 S2]=polyfit(Year,Population,3);
Population1=polyval(P2,Year1);
Population2=polyval(P2,Year2);
plot(Year,Population,'*',Year2,Population2,'X',Year1,Population1);
%这里的S2是误差的大小~

3月24 matlab函数polyfit(x,y,n)分析相关推荐

  1. 格林斯潘的一句话造成昨天(5月24日)股市大跌后爬升的分析

    一.格林斯潘前天说中国股市会面临大跌     格林斯潘说的话对不对呢?我们先不分析正确性,我们先来做点逻辑分析.     如果格林斯潘说的话是对的,那么热钱.机构投资者会立刻抛售手头的股票吗?聪明的应 ...

  2. preall点云粗对齐作为matlab函数,pca和普氏分析法都有函数,主成分也有函数

    target=V0;十万点 source=V111;七万点 [COEFF,Prealligned_source] = princomp(source); [COEFF,Prealligned_targ ...

  3. matlab求x对应y值,matlab 不知道函数表达式,已知y值求x

    ^根据给定的数来据,我们可以假自定函数表达式为baiy=b1+b2*x+b3*x^du2+b4*x^3+b5*x^4;所以上述函zhi数可以用matlab的regress()多元线性dao回归分析函数 ...

  4. matlab的polyfit,polyval,lsqcurvefit拟合函数

    a = polyfit(x,y,n) 用n次多项式拟合多项式 x,y:已知数据集的解释变量和响应变量数组 返回多项式从高次到低次项的系数 f(x) = polyval(a,x) 返回x对应的拟合值 a ...

  5. matlab由x得到y,matlab 已知x、y值以及函数,求未知参数

    满意答案 1位老农民 2013.10.03 采纳率:59%    等级:12 已帮助:5911人 matlab 非线性的拟合有两个命令lsqcurvefit和lsqnonlin.这里用lsqcurve ...

  6. matlab中函数的公式计算,MATLAB怎样定义函数(入门) 有一函数 f(x,y)=x^2+sinxy+2y , 写一程序, 输入自变量的值,输出函数值....

    (x,y)=x+y(x>=0&y>=0)f(x,y)=x+y*y(x>= 由热心网友提供的答案1: 对于函数Sa(t)=sin(x)/x,其中x∈[-10π,10π],mat ...

  7. matlab复数向极坐标转换_[matlab 极坐标]利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。谁能写出函数和调用语句?...

    利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.谁能写出函数和调用语句? 问题补充:利用MATLAB函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.谁能写出 ...

  8. matlab三元函数泰勒展开,如何用matlab绘制三元函数f(x,y,z)=x^2 y^3 z^4在[-1,1]x[-2,2]x[-3,3] 上的各...

    问题描述: 如何用matlab绘制三元函数f(x,y,z)=x^2 y^3 z^4在[-1,1]x[-2,2]x[-3,3] 上的各种切片图. 还有怎么绘制f(x,y,t)=10*exp(1-t)*s ...

  9. 【matlab教程】09、函数已知y值求x,或已知x值求y

    数据 x.y两组数据,三次拟合得到拟合系数p p = polyfit(x,y,3); 已知x值求y y=polyval(p,x); 已知y值求x 1 solve >> syms x; &g ...

  10. MATLAB函数大全 .

    http://pleasaunce.blog.sohu.com/94162301.html   网上看到的,很珍贵,怕人家删了,就自己考过来了 附录1 常用命令 附录1.1 管理用命令 函数名 功能描 ...

最新文章

  1. ICRA 2021| 聚焦距离的Camera-IMU-UWB融合定位方法
  2. BZOJ1217: [HNOI2003]消防局的设立
  3. js/jquery循环提取table单元格值
  4. 获取Linux终端大小及像素值
  5. 编写一个Applet,随机选择矩形、圆形、椭圆、直线等形状,在可视区域内绘制20个图形,同一种图形使用同一种颜色,不需要填充。
  6. atitit.抽奖活动插件组件设计--结构设计and 抽奖流程建模
  7. 系统集成项目管理工程师07《项目质量管理》
  8. 基于决策树模型的金融保险用户分类综合项目【数据可视化相关性分析填充缺失值转码建模商业应用】
  9. 生活大爆炸第六季 那些精妙的台词翻译
  10. 模具师傅告诉我塑胶模具是由这10大系统构成,不会的赶紧学习
  11. JavaScript学习--我的第一次作业
  12. 开发一个分销小程序需要多少钱?
  13. 清华大学计算机考研经历,从普通一所大学考研到清华有多难?
  14. 实验室计算机主机应关闭显示器一般不用关,实验室的计算机主机应关闭,显示器一般不用关闭...
  15. 勾股定理算斜边用计算机怎么按,勾股定理怎么算斜边
  16. 静态成员和非静态成员的区别是什么?
  17. 跨省游拯救疫后旅游业:汝之蜜糖,彼之砒霜
  18. ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程
  19. 小白如何开通微信公众号中的订阅号(服务号)以及认证账号
  20. 适合Web开发人员的10个CSS代码生成器

热门文章

  1. Python获取矢量文件属性表字段及类型
  2. thinkphp html里使用c u,原来C可以这么用 Thinkphp C
  3. 面试官问我“Java中的锁有哪些?以及区别”,我跪了
  4. 基于 SurfaceView 的直播点亮心形效果
  5. python中替换字符串中子串的函数为_python替换字符串中的子串图文步骤
  6. Python让繁琐工作自动化——chapter17 操作图像
  7. vc++ 6.0 三次bezier曲线绘制_Python matplotlib绘制散点图
  8. 电路实验一阶电路误差分析_逆变器电路原理分析
  9. python 实现两个excel表格数据的对比--代码
  10. pythonATM,购物车项目实战_补充5-interface接口