scipy로 필터링
공식 레퍼런스를 바라 보았을 때, 필터 작성용의 함수를 발견했기 때문에 조속히 실험.
이번에는 remez법과 창함수법으로 저역 통과 필터를 만들어 보았다.
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__':
#64タップで通過域が0〜0.25, 阻止域が0.3〜0.5なフィルタ
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()
창함수법이 생각외로 좋았다.
파라미터의 설정도 편하고, 부담없이 사용하고 싶을 때는 이쪽이 좋다고 생각한다.
Reference
이 문제에 관하여(scipy로 필터링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ar90n@github/items/9f29eaa3554966f5631d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)