我正在使用matlab,我有一组x和y数据,
x=[0,1.25,1.88,2.5,5,6.25,6.88,7.19,7.5,10,12.5,15,20];
y=[-85.93,-78.82,-56.95,-34.56,-33.57,-39.64,-41.96,-49.28,-66.6,-66.61,-59.16,-48.78,-41.53];
我想使用具有样条函数的曲线拟合工具箱来生成图形,所以我这样做了,
cftool
它会带我到工具箱,然后我可以选择样条拟合。我在想是否有可能从生成的样条图中提取数据点。这意味着我可能会有比我输入的更多的x和y数据点,因为样条图是一种连续图。有人可以给我一些建议吗?谢谢!
答案 0 :(得分:0)
您可以使用cftool
执行与fit
执行的样条拟合的等价物,例如参见here,here或此处:
% perform spline fit without cftool
ft = fittype('cubicspline');
coeff=fit(x,y,ft);
% use plot to display the interpolating polynomial
% (relying on internal plot settings)
figure
h=plot(coeff,x,y,'o');
% extract the *interpolated* curve from the figure
xi=get(h,'XData');
yi=get(h,'YData');
重新绘制它只是为了表明我们可以:
但是如果你只是想插入do,那么Fraukje解释here。在x
上定义更精细的网格并使用interp1
函数,如下例所示(与之前相同的x,y输入数据):
% interpolate
Ni = 100;
xi = linspace(x(1),x(end),Ni);
yi = interp1(x,y,xi,'spline');
现在xi,yi
是插值数据: