2015-06-21 340 views
0

我正在使用matlab曲线拟合工具箱来拟合我的数据曲线。我已经使用了三次样条曲线,它的曲线非常合适,但我希望看到使用的公式。有没有办法做到这一点?如何在Matlab拟合工具箱中显示公式?

此外,有没有办法显示代码?我的意思是代码被用来适合工具箱的曲线?

编辑:我能够得到如下代码,file-> generate code。 但我仍然需要找到方程,任何人都可以告诉我我该怎么做?

谢谢。

回答

1

我不确定如何在图上显示任何方程,但您应该能够使用命令splineunmkpp复制三次样条插值。

% returns the piecewise polynomial form of the cubic spline interpolant 
pp = spline(x,Y) 
% use unmkpp(pp) to get the piecewise polynomial details 
[breaks,coefs,l,k,d] = unmkpp(pp) 

请注意,您将在分段多项式中为每件作品提供一组系数。例如:

x = -4:4; 
y = [0 .15 1.12 2.36 2.36 1.46 .49 .06 0]; 
% cs stores the piecewise polynomial 
cs = spline(x,[0 y 0]); 
% extract the coefficients 
[breaks,coefs,l,k,d] = unmkpp(cs) 
% the endpoints of each of the polynomial pieces 
breaks = 
    -4 -3 -2 -1 0 1 2 3 4 
% 8 sets of coefficients (each set of 4 coefficients for one polynomial piece) 
coefs = 
    0.20344 -0.05344 0.00000 0.00000 
    -0.09033 0.55689 0.50344 0.15000 
    -0.39211 0.28589 1.34622 1.12000 
    0.14878 -0.89045 0.74167 2.36000 
    0.13699 -0.44411 -0.59289 2.36000 
    0.13325 -0.03313 -1.07012 1.46000 
    -0.05998 0.36661 -0.73663 0.49000 
    -0.06334 0.18668 -0.18334 0.06000 
% the number of pieces is 8 
l = 8 
% order is 4 (so 4 coefficients) 
k = 4 
d = 1 
% plot the interpolation 
xx = linspace(-4,4,101); 
plot(x,y,'o',xx,ppval(cs,xx),'-'); 
+0

谢谢,我在命令窗口中这样做,这是它的工作原理,第=花(深度,CNCF) PP = 形式: 'PP' 符: 1x4427 double] coefs:[4426x4 double] pieces:4426 order:4 dim:1看起来这些是关于数据的信息,但是如何得到方程?我添加了这一行,[break,coefs,l,k,d] = unmkpp(pp),但是我得到很多行数据,每个数据包含11个值,这些是系数? – Dania

+0

您有4426个独立的多项式碎片。每片是具有4个对应系数的三次多项式。没有一个方程:你有4426个单独的方程,它们被分割在一起。这就是为什么你的健康看起来如此光滑;每个多项式只适合您的数据的一小部分! –

+0

非常感谢,这是一个很好的解释,但你能帮我解决这个问题,我不知道如何解释系数。它是从右向左交叉点,x^1,x^2,x^3吗?谢谢。 – Dania