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
9 years ago
def example_reconstruct_noisy_chirp():
figure(figsize=(7, 12))
9 years ago
# generate chirp signal
tvec = arange(0, 6.28, .02)
true_signal = sin(tvec * (2.0 + tvec))
9 years ago
# add noise to signal
noise = random.normal(size=true_signal.shape)
signal = true_signal + .15 * noise
9 years ago
# plot signal
subplot(311)
plot(signal)
title('signal')
9 years ago
# 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')
9 years ago
# smooth derivative of signal and plot it
subplot(313)
savgol1 = SavitzkyGolay(n=8, degree=1, diff_order=1)
9 years ago
d_signal = savgol1.smooth(signal)
9 years ago
plot(d_signal)
title('smoothed derivative of signal')
9 years ago
plt.show('hold') # show plot
9 years ago
if __name__ == '__main__':
example_reconstruct_noisy_chirp()