返回信息流知道函数y(x)表达式以及(x,y)的若干数据,我用了lsqcurvefit求解y中的四个参数,但将求出的参数值带入y函数发现与原始(x,y)数据几乎完全不对,求各位大佬帮孩子看看吧
这是一条镜像帖。来源:北邮人论坛 / matlab / #13180同步于 2020/12/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
求助:有关参数拟合
niey
2020/12/14镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
你可以试试MATLAB自带的cftool,不过效果也不好。拟合的初值还挺重要的。
这个是cftool生成的代码。初值选[30 0.1 30 0.1]
用的函数形式为:1-a/(((x-196)/0.0227)^2+b)+c/(((x-196)/0.0227)^2+d)
[xData, yData] = prepareCurveData( xdata, ydata );
% Set up fittype and options.
ft = fittype( '1-a/(((x-196)/0.0227)^2+b)+c/(((x-196)/0.0227)^2+d)', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.DiffMinChange = 1e-09;
opts.Display = 'Off';
opts.Lower = [0 0 0 0];
opts.MaxFunEvals = 1000;
opts.MaxIter = 20000;
opts.Robust = 'LAR';
opts.StartPoint = [30 0.1 30 0.1];
opts.TolFun = 0.001;
opts.TolX = 0.0001;
opts.Upper = [100 1 100 1];
% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts );
% Plot fit with data.
figure( 'Name', 'untitled fit 1' );
h = plot( fitresult, xData, yData );
legend( h, 'ydata vs. xdata', 'untitled fit 1', 'Location', 'NorthEast', 'Interpreter', 'none' );
% Label axes
xlabel( 'xdata', 'Interpreter', 'none' );
ylabel( 'ydata', 'Interpreter', 'none' );
grid on
【 在 niey 的大作中提到: 】
: 知道函数y(x)表达式以及(x,y)的若干数据,我用了lsqcurvefit求解y中的四个参数,但将求出的参数值带入y函数发现与原始(x,y)数据几乎完全不对,求各位大佬帮孩子看看吧
【 在 dhown 的大作中提到: 】
: 你可以试试MATLAB自带的cftool,不过效果也不好。拟合的初值还挺重要的。
: 这个是cftool生成的代码。初值选[30 0.1 30 0.1]
: 用的函数形式为:1-a/(((x-196)/0.0227)^2+b)+c/(((x-196)/0.0227)^2+d)
: ...................
[ema12]感谢感谢,我再学一下