Revision: 4675
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4675&view=rev
Author: jdh2358
Date: 2007-12-08 08:35:17 -0800 (Sat, 08 Dec 2007)
Log Message:
-----------
added filter examples
Modified Paths:
--------------
trunk/py4science/examples/butter_filter.py
Added Paths:
-----------
trunk/py4science/examples/skel/butter_filter_skel.py
Modified: trunk/py4science/examples/butter_filter.py
===================================================================
--- trunk/py4science/examples/butter_filter.py 2007-12-08 16:23:40 UTC (rev
4674)
+++ trunk/py4science/examples/butter_filter.py 2007-12-08 16:35:17 UTC (rev
4675)
@@ -9,26 +9,38 @@
# sine corrupted wih gaussian white noise
sn = s + 0.1*n.random.randn(len(s)) # noisy sine
-# the nyquist frequency 1/(2dt)
+# the nyquist frequency 1/(2dt) is the maximum frequency in a sampled
+# signal
Nyq = 0.5/dt
+#the corner frequency represents a boundary in the system response at
+#which energy entering the system begins to be attenuate, and the stop
+#frequency is the frequency at which the signal is (practically)
+#completely attenuated
cornerfreq = 2. # the corner frequency
stopfreq = 5. # the stop frequency
-# the corner and stop freqs as fractions of the nyquist
+# the scipy.signal routines accept corner an stop frequencies as a
+# *fraction* of the nyquist
ws = cornerfreq/Nyq
wp = stopfreq/Nyq
-# the order and butterworth natural frequency for use with butter
+# call scipy.buttord to compute the order and natural frequency of the
+# butterorth filter. See the help for signal.buttord. You will pass
+# in ws and wp, as well as the attenuation in the pass and stop bands
N, wn = signal.buttord(wp, ws, 3, 16)
-# return the butterworth filter coeffs for the given order and frequency
+# scipy.butter will take the output from buttord and return the
+# lfilter coeefs for that filter
b, a = signal.butter(N, wn)
-# filter the data
+# Now lfilter will filter the noisy sine with the filter parameters
+# from butter
sf = signal.lfilter(b, a, sn)
+# plot the original, noisy and filtered sine, all on the same axes in
+# pylab, and make a legend
fig = figure()
ax = fig.add_subplot(111)
ax.plot(t, s, label='original signal')
Added: trunk/py4science/examples/skel/butter_filter_skel.py
===================================================================
--- trunk/py4science/examples/skel/butter_filter_skel.py
(rev 0)
+++ trunk/py4science/examples/skel/butter_filter_skel.py 2007-12-08
16:35:17 UTC (rev 4675)
@@ -0,0 +1,46 @@
+import numpy as n
+import scipy.signal as signal
+from pylab import figure, show
+
+XXX = 0. # just so he XXX blanks will not crash
+dt = 0.01
+t = n.arange(0, 2, dt)
+s = XXX # a 1 Hz sine wave over t
+
+# sine corrupted wih gaussian white noise the sine wave s corrupted
+# with gaussian white noise with sigma=0.1. See numpy.random.randn
+
+sn = XXX
+# the nyquist frequency 1/(2dt) is the maximum frequency in a sampled
+# signal
+Nyq = XXX
+
+#the corner frequency represents a boundary in the system response at
+#which energy entering the system begins to be attenuate, and the stop
+#frequency is the frequency at which the signal is (practically)
+#completely attenuated
+cornerfreq = 2. # the corner frequency
+stopfreq = 5. # the stop frequency
+
+# the scipy.signal routines accept corner an stop frequencies as a
+# *fraction* of the nyquist
+ws = XXX
+wp = XXX
+
+
+# call scipy.buttord to compute the order and natural frequency of the
+# butterorth filter. See the help for signal.buttord. You will pass
+# in ws and wp, as well as the attenuation in the pass and stop bands
+N, wn = XXX, XXX # the output of signal.buttord
+
+# scipy.butter will take the output from buttord and return the
+# lfilter coeefs for that filter. See help signal.butter
+b, a = XXX, XXX # the output of signal.butter
+
+# Now lfilter will filter the noisy sine with the filter parameters
+# from butter. See help signal.lfilter
+sf = XXX # the filtered signal returned from lfi,ter
+
+# plot the original, noisy and filtered sine, all on the same axes in
+# pylab, and make a legend
+XXX
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins