Me cuesta encontrar la documentación para implementar el filtro de paso de banda o paso alto con python / scipy / numpy.
Sin embargo, puedo crear y aplicar fácilmente un filtro de paso bajo, así que pregunto:
¿Sería correcto conceptualmente filtrar una señal de paso bajo y luego restar el resultado de la señal original para obtener solo las frecuencias altas?
Además, si alguien tiene un ejemplo simple de un filtro de paso de banda ingenuo en Python (preferiblemente usando las bibliotecas numpy y scipy), estaría muy agradecido.
Lo que busco es algo como:
filtered_signal = band_pass(original_signal, rate, low=20, high=500)
¡Gracias por cualquier ayuda!
EDITAR: con scipy, estoy usando esto como paso bajo, con buenos resultados:
import numpy, scipy.signal
def firfilt(interval, freq, sampling_rate):
nfreq = freq/(0.5*sampling_rate)
taps = sampling_rate + 1
a = 1
b = scipy.signal.firwin(taps, cutoff=nfreq)
firstpass = scipy.signal.lfilter(b, a, interval)
## second pass to compensate phase delay
secondpass = scipy.signal.lfilter(b, a, firstpass[::-1])[::-1]
return secondpass
scipy.signal.firwin
le indica cómo hacer filtros de paso bajo, paso alto, paso de banda, parada de banda y multibanda. ¿Lo intentastefirwin(taps, cutoff=nfreq, pass_zero=False)
?