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

最小二乘法拟合非线性函数及其Matlab/Excel 实现

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

1、最小二乘原理

  Matlab直接实现最小二乘法的示例:  

close
x = 1:1:100;
a = -1.5;
b = -10;
y = a*log(x)+b;
yrand = y + 0.5*rand(1,size(y,2));

%%最小二乘拟合
xf=log(x);
yf=yrand;

xfa = [ones(1,size(xf,2));xf]
w = inv(xfa*xfa\')*xfa*yf\';%直接拟合得到的结果

 

  参考资料:

  1、http://blog.csdn.net/lotus___/article/details/20546259

  2、http://blog.sina.com.cn/s/blog_5404ea4f0101afth.html

 

2、matlab调用函数实现最小二乘法

利用matlab的最小二乘拟合函数对非线性函数进行拟合,具体地拟合的函数:

[q r] = lsqcurvefit(fun, q_0, xdata, ydata);
输入参数:
fun:需要拟合的函数,假定有n个需要拟合的参数,那么 q = [q1,q2,...,qn]
q_0:表示用户给定的一个起始点
xdata:函数的自变量
ydata:函数的因变量
输出参数:
q:表示求解得到的最优参数
r:表示最小二乘的目标函数值,即残差。

实现代码

close
x = 1:1:100;
a = -1.5;
b = -10;
y = a*log(x)+b;
plot(x,y);

yrand = y + 0.5*rand(1,size(y,2));
plot(x,yrand,\'ro\');

%%最小二乘拟合
xf=log(x);
yf=yrand;
f=inline(\'a(1)+a(2).*x\',\'a\',\'x\');
[q,r]=lsqcurvefit(f,[1,0],xf,yf)
plot(x,yrand,\'ro\',\'LineWidth\',2) %绘制图表
hold on;

%%绘制拟合曲线
yn = q(1)+q(2)*log(x);
hold on;
plot(x,yn,\'b\',\'LineWidth\',2);

%%设置Legend
hleg = legend([\'原始函数(y=\' num2str(b,3) \'+\' num2str(a,3) \'ln(x)\' \')数据\'],[\'拟合结果:y=\' num2str(q(1),3) \'+\' num2str(q(2),3) \'ln(x)\'],\'Location\',\'NorthEast\');%本身不能设置字体的大小,需要通过set进行设置
set(hleg,\'FontSize\', 15, \'FontAngle\',\'italic\',\'FontWeight\',\'bold\',...
     \'TextColor\',[.6,.2,.1],\'Color\',[1,1,1]);%Color为设置坐标的背景颜色
 
 %%设置标题
 title(\'最小二乘拟合:y=a+b*ln(x)\',\'Color\',\'k\',\'FontSize\',20);
 
 %%坐标轴标题设置
 xlabel(\'x\',\'Color\',\'k\',\'FontSize\',15);%横轴标题
 ylabel(\'y\',\'Color\',\'k\',\'FontSize\',15);%纵轴标题
 
%%保存图像
set(1, \'InvertHardCopy\', \'off\');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
filename = \'lnx\';
print(1, \'-djpeg\', filename);%其他格式 -djpeg,-dpng,-dbmp,-dtiff,-dgif

   附件:最小二乘matlab.zip

 

拟合结果

如下图所示

 

3、Excel的实现

使用 lenest函数进行最小二乘拟合,对以上生成的数据进行拟合,拟合结果和matlab是一致的。

已知拟合函数y=ax+b,那么

斜率计算公式为:

  a = lenest(ydata,xdata,,FALSE)

截距计算公式为:

  b = index(lenest(ydata,xdata),,FALSE),2)

 

拟合的代码,请查阅附件:最小二乘拟合.xlsx,包含了带噪声的原始数据,拟合公式,拟合结果图

拟合结果如下图所示:

 


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
线性最小二乘法(附MATLAB代码)发布时间:2022-07-18
下一篇:
[转载]matlab_最小二乘法数据拟合 - a往南向北发布时间: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