Filter/interpolation in a curve

3 次查看(过去 30 天)
Tobia Alessi
Tobia Alessi 2021-2-23
回答: Nipun 2024-5-31
Hi everybody,
I have the black curve in the figure that I would to trasform in the blu one in the .jpeg file.
I tryed to do that using a filter (I wrote this script):
windowSize = 20;
b1 = (1/windowSize)*ones(1,windowSize);
a1 = 1;
f1 = filter(b1,a1,Ygraph1);
But I obtained only the red curve in the figure.
Can someone help me on how to do that?
Thank you so much.
I attach the figure .fig
  4 个评论
Star Strider
Star Strider 2021-2-23
Experiment with changing ‘windowSize’.
Tobia Alessi
Tobia Alessi 2021-2-24
Thank you everyone for the answer. I tryed to use the Signal Analyzer App to find the right smoothing factor and it run.
But now I'd like to know how to put this factor in my script.
Which value of windowSize, b1 and a1 I have to use to obtain a smoothing factor of 0.4?
Thanks in advance

请先登录,再进行评论。

回答(1 个)

Nipun
Nipun 2024-5-31
Hi Tobia,
I understand that you want to transform the black curve into the blue one using a smoother filter. Your current attempt with a moving average filter only achieved the red curve.
To achieve a smoother result like the blue curve, you can use a Savitzky-Golay filter:
% Load the data
load('your_data.mat'); % Adjust this line to load your data
% Apply Savitzky-Golay filter
windowSize = 51; % Adjust window size for smoother result
polyOrder = 3; % Polynomial order for Savitzky-Golay filter
smoothedData = sgolayfilt(Ygraph1, polyOrder, windowSize);
% Plot the result
plot(time, Ygraph1, 'k', time, smoothedData, 'b', 'LineWidth', 2);
xlabel('Tempo [s]');
ylabel('Velocità [mm/s]');
legend('Original Data', 'Smoothed Data');
title('Velocità di avanzamento pezzo');
This should give you a smoother curve like the blue one in your image. Refer to the following MathWorks documentation for more information on Savitzky-Golay filtering in MATLAB:
Hope this helps.
Regards, Nipun

Community Treasure Hunt

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

Start Hunting!

Translated by