在此处输入图像描述我不知道如何在 MATLAB 中选择lb
andub
以及如何将我的函数与数据相匹配,我的意思是我有一些输出,但它们不正确,lsqcurvefit
x0
这是我的数据:
xdata= [22.8700000000000;7.92000000000000;3.45000000000000;1.78000000000000;
1.57000000000000;6.41000000000000;12.9000000000000;1.82000000000000;
1.86000000000000;3.71000000000000;12.0900000000000;15.9900000000000;
18.9600000000000;23.1500000000000;23.4500000000000;24.8200000000000;
25.0700000000000;13.2800000000000];
ydata= [8.44300000000000;7.92100000000000;7.64600000000000;7.51600000000000;
7.47100000000000;7.82100000000000;8.03200000000000;7.76200000000000;
7.77400000000000;7.87800000000000;8.07000000000000;8.26000000000000;
8.40000000000000;8.52000000000000;8.52000000000000;8.57000000000000;
8.58000000000000;8.03200000000000];
然后我将 myfunc 放在一个单独的 m 文件中:
function F = myfun(x,xdata)
F=x(1)*(1-x(2)^2)./((1+x(2)^2+2*x(2)*cosd(xdata)).^1.5);
我有x(1)
和x(2)
,我想在拟合我的数据后估计未知,并且我知道 kx(2)
不会是负值。
所以我这样设置lsqcurvefit
:
[x, resnorm]=lsqcurvefit(@myfun,[-0.5:0.5], xdata, ydata, 0, 1.5, options)
这是结果:
x = 1.5000 -0.4945
resnorm = 52.1739
它显示了一个负值x(2)
!
请你帮助我好吗?
非常感谢您回答我的问题,现在在命令计算了 x 和 resnorm 之后,我在函数中使用了结果,这意味着我使用了 x(1)=92.8054 x(2)=0.7427
所以;
F=92.8054*(1-(0.7427)^2)./((1-0.7427)^2+2*(0.7427)*cosd(xdata)).^1.5;
现在我有向量 F ,当我绘制我的数据和结果时, plot(xdata, ydata, 'o', xdata, F, '*')
我不明白为什么 y 轴的范围如此不同!也许我需要将 x(3) 添加到我的函数中。
我附上了图。