[英]lsqcurvefit input parameters matlab
我有一大组 x 数据和一大组 y 数据,它们形成了一系列不规则的洛伦兹峰。 我正在尝试使用内置的 matlab 函数 lsqcurvefit
X = lsqcurvefit(FUN,X0,XDATA,YDATA)
我知道X0
, XDATA
, YDATA
是什么,但我正在为FUN
投入什么而苦苦挣扎。 我创建了以下函数,但从 matlab 中删除了一条错误消息:
function is undefined for arguments of type 'double'
我的功能:
function F = myfun(c,xdata)
F = c(1) + c(2)*exp(-1*(xdata-c(3)).^2/c(4).^2);
end
有没有人对我应该/可以用于FUN
而不是我已经使用的功能有任何建议? 谢谢!!
我认为您只需要创建一个匿名函数并确保您的初始猜测向量具有正确的维度。 将 X0 设置为您对曲线拟合参数的初始猜测,并确保 X0 是 1x4 向量,您可能希望将初始值添加到您的问题中,以明确您要解决的问题。
% setup your initial guess, this is just an example
X0 = [ 1 1 1 1];
X = lsqcurvefit(@(c,xdata) c(1)+(c(2)*exp(-1*(((xdata-c(3)).^2)/(c(4)).^2))),X0,XDATA,YDATA);
当我测试上述内容时,我得到:
% assign the anon function to a handle
me = @(c,xdata) c(1)+(c(2)*exp(-1*(((xdata-c(3)).^2)/(c(4)).^2)))
% test the function
me([1,1,1,1],1)
ans =
2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.