Determining function for smoothing spline

조회 수: 12 (최근 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.

채택된 답변

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 CenterFile Exchange에서 Splines에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by