Continuez à lire l'histoire. Quand je regardais la référence officielle, j'ai trouvé une fonction pour créer un filtre, donc j'ai immédiatement expérimenté. Cette fois, j'ai fait un filtre passe-bas par la méthode remez et la méthode de la fonction de fenêtre.
filter.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import scipy as sp
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
if __name__ == '__main__':
#La zone de passage est de 0 à 0 avec 64 taps.25,La zone de blocage est 0.3〜0.5 filtres
taps = 64;
edge = [ 0, 0.25 , 0.3, 0.5 ]
gain = [ 1.0, 0.000 ]
weight = [ 0.2, 1.0 ]
remez_impres = sp.signal.remez( taps, edge, gain )
remez_freq, remez_fresponse = sp.signal.freqz( remez_impres )
remez_amp = np.abs( remez_fresponse )
wf_impres = sp.signal.firwin( taps, 2.0 * edge[1] );
wf_freq, wf_fresponse = sp.signal.freqz( wf_impres )
wf_amp = np.abs( wf_fresponse )
plt.subplot(221)
plt.semilogy( remez_freq / ( 2 * np.pi ), remez_amp, 'b-' )
plt.title( 'Frequency Response( Remez )' )
plt.subplot(222)
plt.plot( remez_impres, 'b-' )
plt.title( 'Impres Response( Remez )' )
plt.subplot(223)
plt.semilogy( wf_freq / ( 2 * np.pi ), wf_amp, 'b-' )
plt.title( 'Frequency Response( Window )' )
plt.subplot(224)
plt.plot( wf_impres, 'b-' )
plt.title( 'Impres Response( Window )' )
plt.show()
La méthode de la fonction de fenêtre était étonnamment bonne. Il est facile de définir les paramètres, et je pense que c'est mieux si vous voulez l'utiliser avec désinvolture.
Recommended Posts