从曲线拟合工具箱中提取数据

时间:2013-09-13 06:06:30

标签: matlab

我正在使用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数据点,因为样条图是一种连续图。有人可以给我一些建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用cftool执行与fit执行的样条拟合的等价物,例如参见herehere或此处:

% 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');

重新绘制它只是为了表明我们可以:

enter image description here

但是如果你只是想插入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是插值数据:

enter image description here