最小二乘法matlab实现
最小二乘法matlab实现
前言
最小二乘法是一种在误差估计、不确定度、系统辨识及预测、预报等数据处理诸多学科领域得到广泛应用的数学工具。
1 polyfit多阶拟合
x,y为离散点数据。
p=polyfit(x,y,n)
最小二乘法计算拟合多项式系数。x,y为拟合数据向量,要求维度相同,n为拟合多项式次数(即拟合函数的阶数)。返回p(p是一个向量)保存多项式系数,由最高次向最低次排列。
y = p ( 1 ) ⋅ x n + p ( 2 ) ⋅ x n − 1 + ⋅ ⋅ ⋅ + p ( n ) ⋅ x 1 + p ( n + 1 ) y= p(1)·x^n + p(2)·x^{n-1} +···+p(n)·x^1+p(n+1) y=p(1)⋅xn+p(2)⋅xn−1+⋅⋅⋅+p(n)⋅x1+p(n+1)
y1=polyval(p,x)
计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序。
自变量x中不重复的元素个数m,和拟合阶数k需要满足m>=k+1。简单分析:k阶拟合需要确定k+1个未知参数(如1阶拟合y = ax + b需要确定a和b两个参数),故而至少需要k+1个方程,故而需要至少k+1个不同的已知数对(x,y),由于函数中x只能对应一个y,故而需要至少k+1个不同的x。
plot(x,y,'·',x,y1,'-')
画图。
2 lsqnonlin非线性拟合
x=lsqnonlin('fun',x0)
fun是函数文件,x0是迭代初值。
函数文件
function r=fun(t)
%x,y为离散点数据。
x=[];
y=[];
%函数
r=x-t(1)*exp(t(2)*y);
x0=[];
%得到系数
t=lsqnonlin('fun',x0);
%结果可视化
y=[];
x=t(1)*exp(t(2)*y);
plot(x,y,'·');
本文来自博客园,作者:Patrick-Rex,转载请注明原文链接:https://www.cnblogs.com/patrickrex/p/18028848
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升