You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.1 KiB
Python

import matplotlib.pyplot as plt
from pylab import subplot, plot, title, figure
from numpy import random, arange, sin
from sg_filter import SavitzkyGolay, smoothn # calc_coeff, smooth
def example_reconstruct_noisy_chirp():
figure(figsize=(7, 12))
# generate chirp signal
tvec = arange(0, 6.28, .02)
true_signal = sin(tvec * (2.0 + tvec))
# add noise to signal
noise = random.normal(size=true_signal.shape)
signal = true_signal + .15 * noise
# plot signal
subplot(311)
plot(signal)
title('signal')
# smooth and plot signal
subplot(312)
savgol = SavitzkyGolay(n=8, degree=4)
s_signal = savgol.smooth(signal)
s2 = smoothn(signal, robust=True)
plot(s_signal)
plot(s2)
plot(true_signal, 'r--')
title('smoothed signal')
# smooth derivative of signal and plot it
subplot(313)
savgol1 = SavitzkyGolay(n=8, degree=1, diff_order=1)
d_signal = savgol1.smooth(signal)
plot(d_signal)
title('smoothed derivative of signal')
plt.show('hold') # show plot
if __name__ == '__main__':
example_reconstruct_noisy_chirp()