2012-02-14 13 views
1

scipy.signal.filter_design.ellipでSciPyの楕円フィルター設計機能を試してみたいと思います。私はオクターブのフィルタ設計機能に精通んだけど、私はこれを使用するかどうかはわかりません:http://www.scipy.org/doc/api_docs/SciPy.signal.filter_design.htmlscipy.signal.filter_design.ellipのrp、rs、およびWnパラメータの使用方法

ellipでは(N、RP、RS、WN、BTYPE =でドキュメントから

を'low'、アナログ= 0、出力= 'ba')

楕円形(デジタル)およびアナログフィルタ設計。

説明:

Design an Nth order lowpass digital or analog elliptic filter and return the filter coefficients in (B,A) or (Z,P,K) form. 

はellipordはも参照してください。

N(順序)、btype(低または高)、アナログ(真/偽)、出力(ba対zpk)を理解しています。

rp、rs、Wnとは何ですか?どのように動作するはずですか?

オクターブでの私の経験から、私は、rpとrsがパスとストップバンドの最大許容リップルと関係があり、Wnがウェイトかカットオフ周波数を制御していると推測していますが、文書化されておらず、例が見つかりません。

答えて

1

私はHYRYが正しいと信じています。 Python Matlabクローンスクリプトを使った私の経験から、貧弱なドキュメンテーションを除いてうまくいきます。はい、RpとRsはそれぞれ通過帯域と阻止帯域の最大許容リップルです。 Wnはデジタルカットオフまたはエッジ周波数です。

import pylab 
import scipy 
import scipy.signal 
[b,a] = scipy.signal.ellip(6,3,50,300.0/500.0); 

import matplotlib.pyplot as plt 
import numpy as np 
fig = plt.figure() 
plt.title('Digital filter frequency response') 
ax1 = fig.add_subplot(111) 
h,w = scipy.signal.freqz(b, a) 
plt.semilogy(h, np.abs(w), 'b') 
plt.semilogy(h, abs(w), 'b') 
plt.ylabel('Amplitude (dB)', color='b') 
plt.xlabel('Frequency (rad/sample)') 
plt.grid() 
plt.legend() 
ax2 = ax1.twinx() 
angles = np.unwrap(np.angle(w)) 
plt.plot(h, angles, 'g') 
plt.ylabel('Angle (radians)', color='g') 
plt.show() 

申し訳ありませんフォーマットはとてもラメですが、それは動作します:

そう...ここMathWorks社は、一例として使用するフィルタを複製するためにそれを使用する方法についていくつかのコードです!あなたは、周波数スケールは、matlabのショーとは違っていることに気付くでしょう、それはちょうど化粧品です。これはあなたが得るものです: Elliptical Filter with AWESOME Cutoff

+0

お返事ありがとうございました! – wjl

関連する問題