LORENTZFIT对数据拟合一个单参数或多参数Lorentzian函数
%
%lorentzfit(x,y)返回yprime(x),Lorentzian适合数据
%找到了使用lsqcurvefit。函数y(x)由模型适合:
%yprime(x)= p1./(x - p2)。^ 2 + p3)+ c。
%
%[yprime params Resnorm Reseal Jacobian] = LorentzFit(x,y)返回yprime(x)
%值除了适合参数params = [p1 p2 p3 c]之外。resnorm,
% RESIDUAL,也返回LSQCURVEFIT的雅可比矩阵输出。
%
%[...] = lorentzfit(x,y,p0)可用于提供启动
用于参数中的参数的%值(p0 = [p01 p02 p03 c0])。
%
%[…= LORENTZFIT(X,Y,P0,BOUNDS)可用于定义lower
%和PARAMS中每个参数的可能值的上界。
% bounds = [lb1 lb2 lb3 lb4;
%UB1 UB2 UB3 UB4]。
%如果用户不希望手动定义P0的值,则可能是
%Enetered为空矩阵P0 = []。在这种情况下,默认值将
% 使用。所有参数的默认界限都是(-inf,INF)。
%
%[...] = lorentzfit(x,y,p0,边界,nparams)可用于指定
洛伦兹拟合函数中使用的参数数。的
%p0和边界中定义的参数数必须匹配
由nparams指定的%。如果用户不希望手动定义
%值P0或边界,两者都可以作为空矩阵输入:
%p0 = [];绑定= []。
%
% -NPARAMS选项
%
%'1' - 单个参数Lorentzian(没有常数术语)
%l1(x)= 1./(p1 (x.^2 + 1)))
%
%'1C' - 单个参数Lorentzian(带常数术语)
%l1c(x)= 1./(p1(x.^2 + 1))+ c
%
%'2' - 两个参数Lorentzian(没有常数术语)
%l2(x)= p1./(x.^2 + p2)
%
%'2C' - 两个参数Lorentzian(具有常数术语)
%l2c(x)= p1./(x.^2 + p2)+ c
%
%'3' - 三参数Lorentzian(没有常数术语)
%l3(x)= p1./(x - p2)。^ 2 + p3)
%
% [DEFAULT] '3c' -三个参数Lorentzian(带常数项)
% l3c (x) = p1。/ ((X - P2)。^2 + p3) + c
%
%[...] = lorentzfit(x,y,p0,界限,nparams,选项)定义选项
%数组为MATLAB函数LSQCURVEFIT。选项可以使用
百分比以下命令:
%
% OPTIONS = optimset('PARAM1',VALUE1,'PARAM2',VALUE2,…);
%
%有关更多详细信息,请参阅Optimet的帮助文档。
%
%
%x和y必须具有相同的大小,数字和非复杂。P0和界限
%也必须是数字和非复杂的。nparams是一个字符数组。
%
%的例子:
%x = -16:0.1:35;
%y = 19.4./( (x - 7)。^ 2 + 15.8)+ Randn(尺寸(x))./ 10;
% [yprime1 params1 resnorm1 residual1 jacobain1] = lorentzfit(x,y,[20 10 15 0]);
%图;情节(x, y, b。,“线宽”,2)
%等;情节(x, yprime1“r -”,“线宽”,2)
%
% [yprime2 params2 resnorm2 residual2 jacobian2] = lorentzfit(x,y,[],[],'3');
%图;情节(x, y, b。,“线宽”,2)
%等;情节(x, yprime2“r -”,“线宽”,2)
%
%另见:lsqcurvefit。
引用
Jered井(2021)。Lorentzfit(x,y,varargin)(//www.tatmou.com/matlabcentral/fileexchange/33775-varargin),Matlab中央文件兑换。检索到。