[med-svn] [python-mne] 234/376: basic band pass filter based on firwin2
Yaroslav Halchenko
debian at onerussian.com
Fri Nov 27 17:22:53 UTC 2015
This is an automated email from the git hooks/post-receive script.
yoh pushed a commit to annotated tag v0.1
in repository python-mne.
commit f8a385eeaaef6b6925b0b6bdb62f561bd432f702
Author: Alexandre Gramfort <alexandre.gramfort at inria.fr>
Date: Thu May 5 16:04:52 2011 -0400
basic band pass filter based on firwin2
---
mne/filter.py | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 76 insertions(+)
diff --git a/mne/filter.py b/mne/filter.py
new file mode 100644
index 0000000..a6a8be4
--- /dev/null
+++ b/mne/filter.py
@@ -0,0 +1,76 @@
+import numpy as np
+from scipy import signal
+from scipy.fftpack import fft, ifft
+
+
+def band_pass_filter(x, Fs, Fp1, Fp2):
+ """Bandpass filter for the signal x.
+
+ An acausal fft algorithm is applied (i.e. no phase shift). The filter
+ functions is constructed from a Hamming window (window used in "firwin2"
+ function) to avoid ripples in the frequency reponse (windowing is a
+ smoothing in frequency domain)
+
+ Parameters
+ ----------
+ x : 1d array
+ Signal to filter
+ Fs : float
+ sampling rate
+ Fp1 : float
+ low cut-off frequency
+ Fp2 : float
+ high cut-off frequency
+
+ Returns
+ -------
+ xf : array
+ x filtered
+
+ Notes
+ -----
+ The passbands (Fp1 Fp2) frequencies are defined in Hz as
+ ----------
+ /| | \
+ / | | \
+ / | | \
+ / | | \
+ ---------- | | -----------------
+ | |
+ Fs1 Fp1 Fp2 Fs2
+
+ DEFAULTS values
+ Fs1 = Fp1 - 0.5 in Hz
+ Fs2 = Fp2 + 0.5 in Hz
+ """
+
+ # Default values in Hz
+ Fs1 = Fp1 - 0.5
+ Fs2 = Fp2 + 0.5
+
+ assert x.ndim == 1
+
+ # Make x EVEN
+ Norig = len(x)
+ if Norig % 2 == 1:
+ x = np.c_[x, 1]
+
+ # Normalize frequencies
+ Ns1 = Fs1 / (Fs / 2)
+ Ns2 = Fs2 / (Fs / 2)
+ Np1 = Fp1 / (Fs / 2)
+ Np2 = Fp2 / (Fs / 2)
+
+ # Construct the filter function H(f)
+ N = len(x)
+
+ B = signal.firwin2(N, [0, Ns1, Np1, Np2, Ns2, 1], [0, 0, 1, 1, 0, 0])
+
+ # Make zero-phase filter function
+ H = np.abs(fft(B))
+
+ xf = np.real(ifft(fft(x) * H))
+ xf = xf[:Norig]
+ x = x[:Norig]
+
+ return xf
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-mne.git
More information about the debian-med-commit
mailing list