Determining function for smoothing spline

9 ビュー (過去 30 日間)
Gavin Seddon
Gavin Seddon 2017 年 3 月 27 日
コメント済み: Image Analyst 2022 年 4 月 4 日
Hello, my data when plotted resembles a plot of a sine function and consequently a polynomial curve will not converge. Therefore I am using a smoothing spline. Is it possible to determine the cubic function associated with this?
GS.
  1 件のコメント
Stephen23
Stephen23 2017 年 3 月 27 日
編集済み: Stephen23 2017 年 3 月 27 日
The function spline returns a structure which encodes the spline.
And read this:

サインインしてコメントする。

採用された回答

Image Analyst
Image Analyst 2017 年 3 月 27 日
The equations of the cubics between each pair of knots is given in the coefs field. See how I took the demo script from the help and printed them out:
x = -4:4;
y = [0 .15 1.12 2.36 2.36 1.46 .49 .06 0];
cs = spline(x,[0 y 0]);
xx = linspace(-4,4,101);
plot(x,y,'o',xx,ppval(cs,xx),'-');
% Now print out the coefficients
coefficients = cs.coefs
fprintf('The equation for the different segments are:\n');
for k = 1 : size(coefficients, 1)
fprintf('y = %7.4f * x^3 + %7.4f * x^2 + %7.4f * x + %7.4f\n', coefficients(k,:));
end
In the command window, you will see:
coefficients =
0.20344440353461 -0.0534444035346097 0 0
-0.0903332106038293 0.55688880706922 0.50344440353461 0.15
-0.392111561119293 0.285889175257731 1.34622238586156 1.12
0.148779455081001 -0.890445508100147 0.741666053019146 2.36
0.136993740795287 -0.444107142857143 -0.592886597938144 2.36
0.13324558173785 -0.0331259204712812 -1.07011966126657 1.46
-0.0599760677466861 0.366610824742268 -0.736634756995581 0.49
-0.0633413107511046 0.186682621502209 -0.183341310751105 0.06
The equation for the different segments are:
y = 0.2034 * x^3 + -0.0534 * x^2 + 0.0000 * x + 0.0000
y = -0.0903 * x^3 + 0.5569 * x^2 + 0.5034 * x + 0.1500
y = -0.3921 * x^3 + 0.2859 * x^2 + 1.3462 * x + 1.1200
y = 0.1488 * x^3 + -0.8904 * x^2 + 0.7417 * x + 2.3600
y = 0.1370 * x^3 + -0.4441 * x^2 + -0.5929 * x + 2.3600
y = 0.1332 * x^3 + -0.0331 * x^2 + -1.0701 * x + 1.4600
y = -0.0600 * x^3 + 0.3666 * x^2 + -0.7366 * x + 0.4900
y = -0.0633 * x^3 + 0.1867 * x^2 + -0.1833 * x + 0.0600
  4 件のコメント
Nilanshu Mahant
Nilanshu Mahant 2022 年 4 月 4 日
Hi, did you manage to find any equation. because I'm also working on same situiation. I'm using curve fitting tool to identify the corelation between different parameters and usning spline. My condition is match with the spline. But, now I'm wondering how to create a equation from that.
Could you please suggest?
Image Analyst
Image Analyst 2022 年 4 月 4 日
@Nilanshu Mahant not sure what you mean. The cubic spline determines a cubic polynomial for each segment between two points. For example in my answer above I gave all the equations between all the data points. There is not really any need to create dozens or hundreds of equations. Just use the spline function. By its very nature there is no one, overall cubic function for all of your dozens or hundreds of points. You get an equation between each pair of points. If you need some overall analytical formula instead of doing it numerically with spline, then I suggest you use the theoretical formula for your physical process and then use fitnlm() to get the parameters for your formula. If you need more help, start your own question and attach your data and code to read it in and plot it, and what your desired output would be.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSplines についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by