matlab 最小一乘法,MATLAB实现最小二乘法
转载自: https://blog.csdn.net/zengxiantao1994/article/details/70210662
文章仅为创作者的观点,可与转载者讨论
最小二乘法
最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。
利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
线性函数模型
典型的一类函数模型是线性函数模型。最简单的线性式是
写成矩阵形式为:
直接给出该式的参数解:
其中
,为x的算术平均值,也可解得如下形式:
一般线性情况
若含有更多不相关模型变量
,可如组成线性函数的形式:
即线性方程组:
通常人们将xij记作数据矩阵 A,参数bj记做参数向量b,观测值yi记作Y,则线性方程组又可写成:
上述方程运用最小二乘法导出为线性平方差计算的形式为:
。
最后的最优解为:
。
示例
实验得到4个数据(x, y):(1, 6)、(2, 5)、(3, 7)、(4, 10)。希望找出一条和这四个点最匹配的直线:
。
最小二乘法采用的手段是尽量使得等号两边的方差最小:
求
通过对β1,β2求偏导:
得到β1=3.5,β2=1.4。所以:
最佳。
MATLAB实现
例一:小车时间与位移关系
% 小车时间(xi)和位移关系(yi)关系
x = [0 1 2 3 4 5 6 7 8 9];
y = [0 2 4 7 8 9 12 14 15 18];
%{
subplot(m,n,p) 其中前两个参数 m,n是指将你的图分成 m*n个栅格,
每个栅格用 p 来编号,而编号是按行(横着)编号的,所以,当 m = 2,n = 2时编号规则为
1 | 2
------
3 | 4
所以subplot(2,2,[1 3]),就说明你这一个子图占据的是 1, 3两个栅格,
而subplot(2,2,2)说明子图仅占据第2个栅格.
%}
subplot(1,2,1);
plot(x,y,‘o’);
% 图形的一些设置
xlabel(‘时间(秒)’);
ylabel(‘位移(米)’);
title(‘原始数据离散点’)
%{
grid on:是打开网格
grid off:是关闭网格
而grid是切换两种状态,如果在grid off的状态下,输入grid,相当于grid on
相反,如果在grid on状态下输入grid 等价于grid off
%}
grid on
%{
polyfit函数是matlab中用于进行曲线拟合的一个函数。其数学基础是最小二乘法曲线拟合原理。
曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。
调用方法:polyfit(x,y,n)。用多项式求过已知点的表达式,
其中x为源数据点对应的横坐标,可为行向量、矩阵;
y为源数据点对应的纵坐标,可为行向量、矩阵;
n为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况而定。
多项式在x处的值y可用下面程序计算:y=polyval(a,x,m)
%}
p = polyfit(x,y,1)
% 0:0.01:9 起始为0,终点为9,步长0.01
x1 = 0:0.01:9;
y1 = polyval(p,x1);
x2 = 0:0.01:9;
%{
MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,‘method’)
其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量,
'method’表示采用的插值方法,MATLAB提供的插值方法有几种:
'nearest’是最邻近插值, 'linear’线性插值; 'spline’三次样条插值; 'pchip’立方插值.缺省时表示线性插值
注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
%}
y2 = interp1(x,y,x2,‘spline’);
subplot(1,2,2);
plot(x1,y1,‘k’,x2,y2,‘r’)
xlabel(‘时间(秒)’);
ylabel(‘位移(米)’);
title(‘黑线为最小二乘法拟合,红色为插值法拟合’)
grid on
例二:温度和时间关系
%{
例如:对某日隔两小时测一次气温。设时间为ti,气温为Ci,i = 0,2 ,4,…,24。数据如下:表2 温度(Ci)随时间(ti)变化关系
-----------------------------------------------------------
ti 02 46 810 1214 1618 2022 24
-----------------------------------------------------------
ci 15 14 14 16 20 23 28 27 26 25 22 18 16
-----------------------------------------------------------
%}
x = [0 2 4 6 8 10 12 14 16 18 20 22 24]
y = [15 14 14 16 20 23 26 27 26 25 22 18 16]
plot(x,y,‘o’)
grid on
%{
hold on 和hold off,是相对使用的
前者的意思是,你在当前图的轴(坐标系)中画了一幅图,再画另一幅图时,原来的图还在,与新图共存,都看得到
后者表达的是,你在当前图的轴(坐标系)中画了一幅图,此时,状态是hold off,则再画另一幅图时,
原来的图就看不到了,在轴上绘制的是新图,原图被替换了
%}
hold on
% 三阶拟合 得到的 p = -0.0061 0.1474 -0.0246 13.7390是个多项式的系数
% 即拟合的曲线y = -0.0061*x3 + 0.1474*x2 - 0.0246*x + 13.7390 (其中x3表示x的3次方,x2同理)
p = polyfit(x,y,3)
x1 = 0:0.01:24
y1 = polyval(p,x1)
plot(x1,y1,‘r’)
% axis坐标轴范围设置
axis([0 24 12 28])
xlabel(‘温度(度)’);
ylabel(‘时间(点)’);
title(‘温度变化图’,‘position’, [18,10])
matlab 最小一乘法,MATLAB实现最小二乘法相关推荐
- 行列式因子、不变因子、初等因子、smith标准型、Jordan标准型、最小多项式的matlab实现
版权声明:<–本博客所有内容均为自己在学习工作中的总结.摘录等-- --转载请注明出处-- --如有侵权请联系删除–> https://blog.csdn.net/ai359005521/ ...
- 最小二乘法与最小一乘法
更多深度学习资讯都在公众号:DLCV 什么是最小二乘法: 最小二乘法是一种误差度量方法,一种被优化的问题,在线性最小二乘问题中可以直接求解 x = ( A T A ) − 1 A T b x=\lef ...
- matlab lscov c语言,Matlab 函数大全 - 文章教程
一.一般函数命令(General) 1.常用信息(General information) help 联机帮助命令,在MATLAB命令窗口显示帮助主题(在help后加函数或命令的特殊字符,可得到具体命 ...
- Matlab学习一本通,matlab基础教程
链接:https://pan.baidu.com/s/1uTCbiRfIxcrt6lmiy6_QlQ 提取码:f2dn Matlab学习一本通,matlab基础教程 <MATLAB R201 ...
- matlab的数学函数,matlab中常见数学函数的使用
matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...
- 阿当姆斯matlab,数值计算方法与MATLAB应用
第1篇 数值计算的基本方法和概念 第1章 算法与误差 1.1 算法 1.2 误差 第2章 方程求解 2.1 引言 2.2 二分法 2.3 迭代法 2.4 牛顿法 2.5 弦截法 2.6 解非线性方程组 ...
- matlab中exp(liangx),Matlab基础知识
<Matlab基础知识>由会员分享,可在线阅读,更多相关<Matlab基础知识(122页珍藏版)>请在人人文库网上搜索. 1.Lxy, China Jiliang Univer ...
- matlab 椭圆方程拟合,matlab中如何插值拟合求椭圆方程
[g_fitting.rar] 使用正交多项式完成数据拟合.程序对读入的gps采样点完成曲线拟合. (2007-08-01, matlab, 1KB, 26次) [曲面拟合.rar] 这是利用matl ...
- matlab 圆角,rectangle函数MATLAB matlab中rectangle画圆角矩形
MATLAB如何画长方形,怎么用rectangle函数 rectangle函数用于绘制矩形图形.例如>>rectangle('Position',[0 0 2 4],'Curvature' ...
最新文章
- android如何与服务器交互?
- html5新加的元素,HTML5新增元素
- CamShift算法,OpenCV实现(3):CamShift算法
- HYSBZ - 2243 染色 (树链剖分+线段树)
- Gradle下载 Jar 包
- 当前只读状态:是_DM数据库的启停以及数据库状态检查
- 【Vue: 使用pdf.js顯示PDF Viewer】
- 小米路由器挂php,小米路由器mini 安装openWrt+更新源+挂载U盘+安装python
- html语言隔开的代码,2、HTML(示例代码)
- nas文件服务器权限安全,大势至局域网共享文件监控NAS文件权限设置的方法
- 街篮中服务器维修什么时候能结束,街头篮球手游1月6日微信iOS维护公告 服务器扩容...
- 电子科大杨宁TCPIP协议原理(总结)
- 第二次软件综合实验专题作业——结对编程 1759103 李思佳 、 1759107 陶彦婷
- matlab求梯度的原理,matlab 梯度计算原理
- 2018币圈热搜大事件汇总-千氪
- 教学计划编制问题(C语言)
- 女神节 | 那些奋斗在IT领域的“女神”们
- respond.min.js/respond.js下载
- python中uppercase是什么意思_python判断大小写并转换_python中string模块相关方法(大小写转换,字符串条件判断)....
- 关于计算机这个行业,中级技工证书有什么意义吗?
热门文章
- linux ftp服务器搭建及用户的分配,Linux搭建FTP服务器
- 西安思源中学2021高考成绩查询入口,西安思源中学隆重举行2020-2021学年第二学期开学典礼...
- oracle 日期改字符格式_oracle怎么把数值型日期转换成日期字符型
- Kotlin学习 PART 3:类,对象和接口
- Xshell高级后门完整分析报告
- 开源DDos 机器学习思路求解的一些源码——TODO 待分析
- mysql 图形化工具
- Delphi 多文件拖放获取路径示例
- 11G RAC ORA-32701
- [CF]Codeforces Round #528 Div.2