アナログローパスフィルタを作成する
[hs,pols,zers,gain]=analpf(n,fdesign,rp,omega) hs=analpf(n,fdesign,rp,omega)
正の整数 : フィルタ次数
文字列 : 以下のようにフィルタ設計手法を示します:
"butt" は,バターワースフィルタ用です.
"cheb1" は,チェビシェフI型フィルタ用です.
"cheb2" は,チェビシェフII型フィルタ用 (逆チェビシェフフィルタとも呼ばれます)です.
"ellip" は,楕円フィルタ用です.
"cheb1", "cheb2"および"ellip"フィルタ用の
リップル値の2要素ベクトル.
この要素は以下の関係を満たす必要があります:
0<rp(1),rp(2)<1
.
"cheb1"フィルタの場合, rp(1)
のみが
使用されます. 通過域のリップルは,
1-rp(1)
および 1
の間です.
"cheb2" フィルタの場合, rp(2)
のみが
使用されます. 阻止域のリップルは,
0
および
rp(2)
の間です.
"ellip" フィルタの場合, rp(1)
および
rp(2)
が共に使用されます. 通過域の
リップルは1-rp(1)
および1
の
間, 一方, 阻止域のリップルは,
0
および rp(2)
の間です.
ローパスフィルタのカットオフ周波数(単位:rad/s)
有理数多項式伝達関数
(syslin参照).
これは,以下となります:
hs=gain*syslin("c",real(poly(zers,"s")),
real(poly(pols,"s")))
行ベクトル: 伝達関数の極
行ベクトル: 伝達関数のゼロ
スカラー: 伝達関数のゲイン
omegaをカットオフ周波数とするアナログローパスフィルタを作成します. この関数は, zpbutt, zpch1, zpch2 およびzpell関数のドライバです.
バターワースフィルタは通過域にリップルを有さず, 阻止域においてゼロ方向に緩やかにロールオフします. 他のフィルタ型は通過域または阻止域に非単調リップルを 有するのに対して, バターワースフィルタは,omegaについてゲインが単調に 変換する関数を有します. バターワースフィルタは,他のフィルタよりも 通過域でより線形な位相応答を有します.
チェビシェフフィルタは,バターワースフィルタに比べ, より急なロールオフと,より大きな通過域リップル(I型)または 阻止域リップル(II型)を有します. チェビシェフフィルタは,フィルタの範囲において 理想化されたフィルタと実際のフィルタの間の 誤差を最小化する特性を有しますが, 通過域にリップルを有します.
楕円フィルタは通過域と阻止域の両方で 均一化したリップル特性を有します. 各バンドにおけるリップルの量は独立に調整でき, リップルの値を指定された場合, 同じ次数の他のフィルタでは, 通過域と阻止域の間で,より速いゲインの遷移を実現できません.
//Evaluate magnitude response of the filter fcut=5; //hz n=7;//filter order hc1=analpf(n,'cheb1',[0.1 0],fcut*2*%pi); hc2=analpf(n,'cheb2',[0 0.1],fcut*2*%pi); he=analpf(n,'ellip',[0.1 0.1],fcut*2*%pi); hb=analpf(n,'butt',[0 0],fcut*2*%pi); hc1.dt='c';hc2.dt='c';he.dt='c';hb.dt='c'; clf(); [fr, hf]=repfreq(hc1,0,15); plot(fr,abs(hf),'b') [fr, hf]=repfreq(hc2,0,15); plot(fr,abs(hf),'y') [fr, hf]=repfreq(he,0,15); plot(fr,abs(hf),'r') [fr, hf]=repfreq(hb,0,15); plot(fr,abs(hf),'c') legend(["Chebyshev I","Chebyshev II","Elliptic","Butterworth"]); xgrid() xlabel("Frequency (Hz)") ylabel("Gain") title("Analog filters of order 7") | ![]() | ![]() |