最小二乘法拟合非线性函数及其Matlab/Excel 实现(转)
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

拟合结果
如下图所示
3、Excel的实现
使用 lenest函数进行最小二乘拟合,对以上生成的数据进行拟合,拟合结果和matlab是一致的。
已知拟合函数y=ax+b,那么
斜率计算公式为:
a = lenest(ydata,xdata,,FALSE)
截距计算公式为:
b = index(lenest(ydata,xdata),,FALSE),2)
拟合的代码,请查阅附件:最小二乘拟合.xlsx,包含了带噪声的原始数据,拟合公式,拟合结果图
拟合结果如下图所示:
http://www.cnblogs.com/cv-pr/p/4741262.html
最小二乘法拟合非线性函数及其Matlab/Excel 实现(转)的更多相关文章
- 最小二乘法拟合非线性函数及其Matlab/Excel 实现
1.最小二乘原理 Matlab直接实现最小二乘法的示例: close x = 1:1:100; a = -1.5; b = -10; y = a*log(x)+b; yrand = y + 0.5*r ...
- 使用MindSpore的线性神经网络拟合非线性函数
技术背景 在前面的几篇博客中,我们分别介绍了MindSpore的CPU版本在Docker下的安装与配置方案.MindSpore的线性函数拟合以及MindSpore后来新推出的GPU版本的Docker编 ...
- tensorflow神经网络拟合非线性函数与操作指南
本实验通过建立一个含有两个隐含层的BP神经网络,拟合具有二次函数非线性关系的方程,并通过可视化展现学习到的拟合曲线,同时随机给定输入值,输出预测值,最后给出一些关键的提示. 源代码如下: # -*- ...
- MATLAB神经网络(2) BP神经网络的非线性系统建模——非线性函数拟合
2.1 案例背景 在工程应用中经常会遇到一些复杂的非线性系统,这些系统状态方程复杂,难以用数学方法准确建模.在这种情况下,可以建立BP神经网络表达这些非线性系统.该方法把未知系统看成是一个黑箱,首先用 ...
- MATLAB神经网络(3) 遗传算法优化BP神经网络——非线性函数拟合
3.1 案例背景 遗传算法(Genetic Algorithms)是一种模拟自然界遗传机制和生物进化论而形成的一种并行随机搜索最优化方法. 其基本要素包括:染色体编码方法.适应度函数.遗传操作和运行参 ...
- 非线性函数的最小二乘拟合及在Jupyter notebook中输入公式 [原创]
突然有个想法,能否通过学习一阶RC电路的阶跃响应得到RC电路的结构特征——时间常数τ(即R*C).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多的采样点数来降低信号采集噪声对τ估计值的 ...
- 利用最小二乘法拟合任意次函数曲线(C#)
原文:利用最小二乘法拟合任意次函数曲线(C#) ///<summary> ///用最小二乘法拟合二元多次曲线 ///</summary> ///< ...
- MATLAB神经网络(7) RBF网络的回归——非线性函数回归的实现
7.1 案例背景 7.1.1 RBF神经网络概述 径向基函数是多维空间插值的传统技术,RBF神经网络属于前向神经网络类型,网络的结构与多层前向网络类似,是一种三层的前向网络.第一层为输入层,由信号源结 ...
- MATLAB神经网络(4) 神经网络遗传算法函数极值寻优——非线性函数极值寻优
4.1 案例背景 \[y = {x_1}^2 + {x_2}^2\] 4.2 模型建立 神经网络训练拟合根据寻优函数的特点构建合适的BP神经网络,用非线性函数的输入输出数据训练BP神经网络,训练后的B ...
随机推荐
- 单例模式 - 程序实现(Java)
我们知道单例模式,其实就是返回一个被调用类的实例. 在频繁的进行实例(Instance)创建过程,难免过多的进行new InstanceName():我们可以只通过调用一个方法解决. 在进行设计模式的 ...
- hdu1243(最长公共子序列变形)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1243 分析:dp[i][j]表示前i个子弹去炸前j个恐怖分子得到的最大分.其实就是最长公共子序列加每个 ...
- MVAPI第一个版本架构图
MVAPI采用矢量与栅格结合的方式进行移动地图的显示. 进过几个月,目前终于可以完成基本的地图显示及操作功能.还有待实现的是各种性能及效果优化.3D地物等. 发一个1.0的架构图留存一下.(虽然目前还 ...
- web开发性能优化---项目架构篇
项目技术架构层级规划和介绍 简称四横两纵 四横即四大层次.分别为: 1.用户渠道层:用户渠道层是直接面向终于用户.通过站点的形式向用户提供产品展示.企业市场宣传.对产品的订购.互动分享.客户关怀以及用 ...
- php中页面跳转部分方法论述
假设当前页面:http://localhost:80/index.php 1.include echo “include t1.php”; 跳转后,url地址栏http://localhost:80/ ...
- IntelliJ IDEA Groovy(转)
更新环境变量: source /etc/profile 验证是否成功: # groovy -version Groovy Version: 2.3.6 JVM: 1.7.0_67 Vendor: Or ...
- pygame系列
在接下来的blog中,会有一系列的文章来介绍关于pygame的内容,pygame系列偷自http://www.cnblogs.com/hongten/p/hongten_pygame_install. ...
- ASP.NET 成员资格 Part.2(使用安全控件 Login)
原文:ASP.NET 成员资格 Part.2(使用安全控件 Login) 准备好提供程序以及用户信息的存储,就可以开始构建验证用户.注册用户或者让用户能够重置密码的用户界面了.ASP.N ...
- 使用CSS3制图
参考资料:http://blog.csdn.net/fense_520/article/details/37892507 本文非转载.为个人原创,转载请先联系博主,谢谢~ 准备: <!DOCTY ...
- 深入浅出KnockoutJS
深入浅出KnockoutJS 写在前面,本文资料大多来源网上,属于自己的学习笔记整理. 其中主要内容来自learn.knockoutjs.com,源码解析部分资料来自司徒正美博文<knockou ...