我有许多波长及其相应的吸光度。
首先我输入了x和y值
x = [400 425 450 475 500 505 510 525];
y = [.24 .382 .486 .574 .608 .608 .602 .508];
绘制点
情节(x,y,' o')
然后我想要拟合数据。 我不确定选择多大程度的多项式,但由于它是波长与吸收的关系图,所以不存在数学公式吗?就像你怎么知道动能与速度的关系将是2级,因为KE = 1 / 2mv ^ 2?
答案 0 :(得分:0)
好的,所以这里有一个适用于你的数据的解决方案,使用polyfit和polyval来评估通过你的数据点的多项式。
在polyfit(here)的文档中,它声明了
通常,对于n个点,可以拟合n-1度的多项式 完全通过点。
由于您有8个数据点,我们可以尝试使用7度多项式并查看它给出的数据点
clear
clc
x = [400 425 450 475 500 505 510 525];
y = [.24 .382 .486 .574 .608 .608 .602 .508];
%// Get polynomial coefficients to fit the data
p = polyfit(x,y,7)
%// Create polynomial to plot
fFit = polyval(p,x);
plot(x,y,'o')
hold on
plot(x,fFit,'r--')
hold off
axis([400 525 0 .7]);
legend({'Data points' 'Fitted curve'},'Location','NorthWest')
给出了这个:
所以看起来效果很好!如果我们看一下polyfit给出的系数:
p =
1.0e+05 *
Columns 1 through 6
0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0003
Columns 7 through 8
0.0401 -2.7206
也许7度有点矫枉过正,因为前5个系数是0(或大约0),但无论如何它非常适合!
希望有所帮助!