MATLAB非线性最小二乘lsqnonlin
1.函数介绍
lsqnonlin 解决非线性最小二乘(非线性数据拟合)问题。
语法:
x = lsqnonlin(fun,x0)
x = lsqnonlin(fun,x0,lb,ub) #lb ≤ x ≤ ub
x = lsqnonlin(fun,x0,lb,ub,options)
x = lsqnonlin(problem)
[x,resnorm] = lsqnonlin(___)
[x,resnorm,residual,exitflag,output] = lsqnonlin(___)
[x,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(___)
2.部分参数
options — Optimization options
MaxFunctionEvaluations:最大函数求值次数,默认值是100*numberOfVariables。
MaxIterations:最大迭代次数,默认值是400次。resnorm — Squared norm of the residual
Squared norm of the residual, returned as a nonnegative real. resnorm is the squared 2-norm of the residual at x: sum(fun(x).^2).
返回残差平方。residual — Value of objective function at solution
目标函数在解处的值,作为数组返回。通常,residual = fun(x)。
3.lsqnonlin与lsqcurvefit区别:
- lsqnonlin: Solve nonlinear least-squares (nonlinear data-fitting) problem(非线性最小二乘);
- lsqcurvefit: Solve nonlinear curve-fitting (data-fitting) problems in least-squares sense(非线性曲线拟合)。
相同点:两者默认算法都是:trust-region-reflective,并且都可以修改为:levenberg-marquardt algorithm
;
如:options = optimoptions(@lsqnonlin,'Algorithm','trust-region-reflective');
可以修改算法为levenberg-marquardt:
options.Algorithm = 'levenberg-marquardt';
[x,resnorm,residual,exitflag,output] = lsqnonlin(fun,x0,[],[],options);
lsqcurvefit 函数使用与 lsqnonlin 相同的算法。lsqcurvefit 只是为数据拟合问题提供一个方便的接口。
不同点:
(1)lsqcurvefit 的使用形式要更简单一点:The lsqcurvefit function uses the same algorithm as lsqnonlin. lsqcurvefit simply provides a convenient interface for data-fitting problems
(2)lsqnonlin函数定义为差值函数,如:fun = @(r)exp(-d*r)-y;
lsqcurvefit 函数定义为目标函数,如:fun = @(x,xdata)x(1)*exp(x(2)*xdata);
4.使用方法
方法一:创建函数文件和求解文件
function F = myfun(x)
F = ... % Compute function values at x
x = lsqnonlin(@myfun,x0)
方法二:不需要单独函数文件
x = lsqnonlin(@(x)sin(x.*x),x0);
注意:
5.实例
t = linspace(0.1, 300, 1000)';
y = 300*exp(-t/5) + 10;
y_noise = y + 20*randn(1000, 1);
% funl = @(p,x,y_noise) p(1)*exp(-x/p(2)) + p(3)- y_noise;
fun = @(x)x(1)*exp(-t/x(2))+x(3) - y_noise;
x0 = [100, 2 1];
options.Algorithm = 'levenberg-marquardt';
[x,resnorm,residual] = lsqnonlin(fun,x0,[],[],options)plot(t,y_noise,'ro',t,fun(x)+y_noise,'b-')
xlabel('t')
legend('Normal density','Fitted function')
结果:
6.组合多个目标函数的lsqnonlin
https://www.mathworks.com/matlabcentral/answers/285211-how-to-combine-multiple-objective-functions-for-lsqnonlin
function [ rssOutput ] = objFunctions( params,X,Y) a = params(1); % parameter 1b = params(2); % parameter 2rss1 = a.*exp(b.*X) - Y; % objective function 1 rss2 = a.*sin(b.*X) - Y; % objective function 2 rssOutput = [rss1; rss2]; end
x0 = [1,1]'; % initial value of a and b
x=lsqnonlin(@objFunctions,x0,[],[],[],X,Y);
参考资料:
lsqnonlin 函数官网:https://www.mathworks.com/help/optim/ug/lsqnonlin.html
MATLAB文档 lsqnonlin 函数:https://blog.csdn.net/qq_34122861/article/details/103514923
MATLAB 非线性最小二乘拟合 lsqnonline 和 lsqcurvefit(总结很好):https://www.cnblogs.com/pupilLZT/p/13379691.html?ivk_sa=1024320u
MATLAB帮助文档非常有用!
MATLAB非线性最小二乘lsqnonlin相关推荐
- 最小覆盖模型matlab_数学规划模型的matlab求解 非线性最小二乘lsqnonlin
数学规划模型是优化模型的一种,包括线性规划模型(目标函数和约束条件都是线性函数的优化问题); 非线性规划模型(目标函数或者约束条件是非线性的函数); 整数规划(决策变量是整数值得规划问题); 多目标规 ...
- matlab非线性最小二乘拟合
在实际应用中常常会遇到利用非线性最小二乘进行拟合函数的系数情况.这可以通过MATLAB中内置的函数lsqcurvefit实现,对其进行简单介绍如下: 1.自定义函数 首先,新建一个函数文件,如下图所示 ...
- c++分治法求最大最小值实现_最优化计算与matlab实现(12)——非线性最小二乘优化问题——G-N法...
参考资料 <精通MATLAB最优化计算(第二版)> 编程工具 Matlab 2019a 目录 石中居士:最优化计算与Matlab实现--目录zhuanlan.zhihu.com 非线性最 ...
- matlab初值的非线性最小二乘,非线性最小二乘最优化
最小二乘最优问题(转) 默认分类 2009-05-21 14:56:33 阅读 62 评论 1 字号:大中小 1.约束线性最小二乘 有约束线性最小二乘的标准形式为 sub.to 其中:...... 2 ...
- lsqnonlin函数_matlab非线性最小二乘函数
函数语法 x = lsqnonlin(fun,x0) 函数用于: 解决非线性最小二乘(非线性数据拟合)问题 解决非线性最小二乘曲线拟合问题的形式 变量x的约束上下限为ub和lb, x = lsqnon ...
- matlab 画非线性曲线,matlab 非线性曲线拟合, nlinfit lsqcurvefit lsqnonlin
% matlab 非线性曲线拟合,polyfit & nlinfit & lsqcurvefit & lsqnonlin: %x0 初始向量 %p 表达式参数变量 xdata ...
- Matlab最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较
最近我们被客户要求撰写关于最小二乘法的研究报告,包括一些图形和统计输出.matlab软件在拟合数据时使用最小二乘法.拟合需要一个参数模型,该模型将因变量数据与具有一个或多个系数的预测数据相关联.拟合过 ...
- 论文翻译 | LS-Net:单目双目视觉的非线性最小二乘学习算法
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1 摘要 在本文中,我们提出了最小二乘网络,一种神经非线性最小二乘优化算法,即使在逆境中也能有效地优化 ...
- matlab 非线性曲线拟合
% matlab 非线性曲线拟合, nlinfit & lsqcurvefit & lsqnonlin: %x0 初始向量 %p 表达式参数变量 xdata = [0.25 0.5 0 ...
- matlab 非线性拟合残差,求大神帮助一下关于matlab非线性拟合的问题
楼主如果要用MATALB,需要编2个M文件,一个用来定义函数,另一个用来估计参数.可用fminsearch命令或非线性最小二乘命令lsqnonlin()函数. 不过楼主的问题可以直接在EVIEWS中用 ...
最新文章
- go语言中的big包
- livechart 只显示 y 值_基于Python语言的SEGY格式地震数据读取与显示编程
- 利用php-console和Chrome开发者工具实现PHP应用的printf
- NO_CHANGE_ALLOWED error code
- 2020德勤面试开始了吗_2020国考面试开始,近期面试公告汇总,附结构化小组面试流程...
- 彩虹DS6.6免授权版源码+后台同步更新+独家防黑策略
- Office编程(二)C#读取Excel并存入数据库,通过XML自定义表名,是否重建并插入数据...
- QQ总显示服务器请求中,网站添加QQ登陆 报错 可能是服务器无法请求https协议 解决方法...
- 线性反馈移位寄存器(Linear Feedback Shift Register, LFSR)
- 日本JAFFE表情库
- JUNIT5 + Mockito
- java翻译smali_【翻译】apk反汇编之smali语法
- lisp princ详解_LISP – 输入和输出
- 产品生命周期,鸿沟理论和CNCF项目孵化
- VR全景航拍补天教程
- 操作系统正则符号知识点总结
- 高性能Excel操作工具
- 风洞实验可以用计算机模拟吗,CFD数值风洞模拟
- 基于jsp(java)财务管理系统的设计和开发
- Linux虚拟文件系统vfs及proc详解
热门文章
- python股票交易微信提醒_python实现秒杀商品的微信自动提醒功能(代码详解)
- 数据结构——>单向环形链表
- 联想微型计算机电脑黑屏怎么做系统,联想电脑黑屏怎么办 5种方法轻松排除黑屏故障...
- 字符串排序算法 java_Java经典算法:重新排列字符串K
- mysql sqlserver 拷贝_SQLyog工具进行SQLSERVER表结构或数据拷贝到MySQL数据库
- cedit多行文本设置透明背景会重叠_python:电商用户评价文本分析(wordcloud+jieba)...
- raid5用户mbr还是gpt_系统硬盘gpt转换的操作方法
- 《计算机操作系统》练习题
- VScode:创建用户代码片段
- JavaScript:字符串相关操作