smooth noisy data with spline smoothing

23 visualizaciones (últimos 30 días)
Dimani4
Dimani4 el 31 de Jul. de 2023
Comentada: Dimani4 el 1 de Ag. de 2023
Hi,
I have some noisy function. See attached x and y data. I want to smooth this data and then make a derrivative of that data. When I make derrivative I get in some point Inf so I need to smooth this data. I saw in Curve fitting App that smoothing spline with center and scale option does the job which fits me but I dont quite understand how I do this in the code. I need to do it automatically for every function I'll give to do smooth so I cannot use Curve Fitting Tool every time.
Thank you very much.

Respuesta aceptada

Bruno Luong
Bruno Luong el 31 de Jul. de 2023
  2 comentarios
Bruno Luong
Bruno Luong el 31 de Jul. de 2023
Editada: Bruno Luong el 31 de Jul. de 2023
Result with your data
x=webread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1446472/x2.txt')
y=webread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1446477/y2.txt')
x=str2num(x);
y=str2num(y);
options = struct('animation', true, 'sigma', 1e-3);
pp = BSFK(x,y,[],[],[],options); % FEX https://www.mathworks.com/matlabcentral/fileexchange/25872-free-knot-spline-approximation?s_tid=srchtitle_BSFK_1
pp1 = ppder(pp); % You might use fnder, I don't have the toolbox
% Check the spline model
close all
figure
xq = linspace(min(x),max(x),100);
plot(x,y,'.r',xq, ppval(pp,xq),'b')
xlabel('x')
ylabel('function y')
yyaxis('right')
plot(xq, ppval(pp1,xq), 'Linewidth', 2)
ylabel('derivative dy/dx')
grid on
legend('data', 'spline fitting','derivative','Location','north')
Dimani4
Dimani4 el 1 de Ag. de 2023
Thank you very much Bruno.
Actually I found the way to get the same graph as I got in the picture I attach before.
[curve, goodness, output] = fit(x2u,y2u,'smoothingspline','SmoothingParam',0.998,'Normalize','on');
P this is the smoothing parameter which runs from [0 1]. and center and scale it's I do by 'Normalize', 'on'.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Smoothing en Help Center y File Exchange.

Productos


Versión

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by