Smooth data for slowly-sampled data

Hi,
I have a data sampled slow as blue. I need to obtain the red curve that smoothen out the data. Can anyone please tell me what Matlab command to handle this?
Thanks,
Dave
smooth_data.PNG

Antworten (2)

Image Analyst
Image Analyst am 10 Feb. 2020

0 Stimmen

Try sgolayfilt() in the Signal Processing Toolbox. That's one way.
See my attached demo.
00_Screenshot.png

3 Kommentare

Dave Lee
Dave Lee am 10 Feb. 2020
Hi,
Thanks for your response. It looks like sgolayfilt can lead to phase lag, not having zero-phase filtering characteristics, as with filtfilt. Is there any way that I can still use sgolayfilt without phase lag? It is a nice filter and I think it is very close to what I am trying to do.
Dave
Image Analyst
Image Analyst am 10 Feb. 2020
How does it lead to phase lag? The window is centered over the point so it uses points both ahead of and behind the signal so the filter value is at exactly the same time point as the original signal. What elements do you want to include when you are getting the smoothed output value at a particular time point?
Dave Lee
Dave Lee am 10 Feb. 2020
Bearbeitet: Dave Lee am 10 Feb. 2020
Hi,
I obtained the following result. I wanted to have the black smoother and tried the red to the level I wanted but it looks lag. Not exactly lag all the time I suppose but some averaging characteristics makes it deviate more from the raw data. The deviation of the black is better.
Thanks, Dave

Melden Sie sich an, um zu kommentieren.

Akira Agata
Akira Agata am 10 Feb. 2020

0 Stimmen

How about applying interpolation?
The following is an example:
% Original data
time = 1:10;
value = rand(1,10);
% Apply interpolation
time2 = linspace(1,10);
value2 = interp1(time,value,time2,'pchip');
% Visualize the result
figure
scatter(time,value)
hold on
plot(time2,value2)
legend({'Original data','After interpolation'},'FontSize',12)
grid on
box on
interp.png

1 Kommentar

Dave Lee
Dave Lee am 10 Feb. 2020
Hi,
Thanks for your suggestion. I had thought of interp1 as well but it doesn't work for the purpose. The data is flat during sampling, as you can see about 1 sec. Doing interpolation with finer sampling of 0.1sec for example will just keep the same value during the sampling of 1sec.
Dave

Melden Sie sich an, um zu kommentieren.

Gefragt:

am 10 Feb. 2020

Bearbeitet:

am 10 Feb. 2020

Community Treasure Hunt

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

Start Hunting!

Translated by