• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab学以致用 - 曲线拟合

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

曲线拟合

使用Matlab自带的polyfit函数,可以很方便地根据现有样本数据进行多项式曲线拟合,为了有直观感受,先上例程,如下所示:

 1 x = -5:0.1:5;                           % 样本数据x坐标
 2 y = 3*x.^2 + 6*x + 5 + randn(size(x));  % 样本数据y坐标,添加随机噪声
 3 
 4 p = polyfit(x, y, 2);   % 使用自带函数进行数据拟合,拟合的多项式维数n=2
 5 yy = polyval(p, x);     % 生成拟合数据
 6 
 7 figure, plot(x, y, \'.\');                    % 显示原始数据
 8 xlabel(\'x\'), ylabel(\'y\');                   % 坐标轴
 9 hold on, plot(x, yy, \'r\', \'LineWidth\', 2);  % 显示拟合数据
10 legend(\'raw data\', \'fitting line\');         % 图例

 

运行结果:

 

函数说明:
p = polyfit(x,y,n) returns the coefficients for a polynomial p(x) of degree n that is a best fit (in a least-squares sense) for the data in y. The coefficients in p are in descending powers, and the length of p is n+1

即,polyfit(x,y,n) 返回对应于样本数据y的n维多项式p(x)的系数(基于最小二乘法)。该系数按照降幂顺序排列,个数为 n+1


直线拟合

基本原理:给定一组数据[x1,x2,…,xn]和[y1,y2,…yn],已知x和y成基本线性关系,即存在一条最佳拟合直线 y = kx + b,对此,同样可以基于最小二乘法来求出系数k和b。此时,调用polyfit(x,y,n)时,应取n=1,即把直线拟合看作是一阶多项式的拟合,在此不再赘述。

另外,还可以使用基于矩阵除法的直线拟合方法,基本原理如下:

例程:

 1 % 基于矩阵除法的直线拟合
 2 x = [0.5 1 1.5 2 2.5 3];  
 3 y = [1.75 2.45 3.81 4.8 8 8.6];  
 4 
 5 n = length(x);  
 6 x = reshape(x,n,1);          % 生成列向量  
 7 y = reshape(y,n,1);            
 8 A = [x,ones(n,1)];           % 连接矩接A  
 9 
10 yy = A \ y;                  % 左除,相当于inv(A)*y
11 
12 k = yy(1);                   % 得到k  
13 b = yy(2);                   % 得到b
14 
15 yy = polyval([k, b], x);     % 生成拟合数据
16 figure,
17 plot(x, y, \'*\');
18 hold on, plot(x, yy, \'r\');   % 显示拟合曲线

 

运行结果:

 

reference


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【Rust日报】 2019-03-01发布时间:2022-07-18
下一篇:
【转】Matlab曲线拟合工具箱发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap