ディジタルフィルタの設計
フィルタの設計 与えられた仕様(周波数特性,インパルス応答,時間領域特性)を近似的に満足する伝達関数を見いだすこと 見いだされた伝達関数の式から構造が決定できればそれにこしたことはない
6-2 設計アルゴリズム フィルタの設計 フィルタの設計とは,仕様(周波数特性、インパルス応答、時間領域特性)に合った伝達関数を求めること 6-2 設計アルゴリズム フィルタの設計 フィルタの設計とは,仕様(周波数特性、インパルス応答、時間領域特性)に合った伝達関数を求めること 伝達関数を求める方法 ① 直接計算法:使用をもとに計算する ② 間接計算法:アナログの伝達関数から変換する 直接計算法を取り上げて説明する。 低域フィルタを理解すれば後は簡単 ・・・・次章で詳細に解説 ここでは、LPFが分ったとして、他のフィルタを概説する
ディジタルフィルタの伝達関数の求め方 仕様から直接導き出す・・・・直接設計法 第7章でいくつか説明する 直接設計法では低域フィルタの設計法が分かれば,他のフィルタの設計に変換できる アナログフィルタの伝達関数G(s)を変換してG’(z)を得る・・・・間接設計法 間接設計法はこの教科書では取り扱わない
6-2 設計アルゴリズム 6-2-1 LPFの設計アルゴリズム 6-2 設計アルゴリズム 6-2-1 LPFの設計アルゴリズム 遮断角周波数ωcのLPFを周波数領域で見ると,図6.14のように,-ωs±ωc, 0±ωc, ωs±ωc, 2ωs±ωc,の角周波数範囲を通過させる
ここで,Ω=ωT/πなる正規化角周波数を導入し,T=2π/ωcと合わせて変形すると横軸ωをΩに変えることができる (計算) ω=0のとき Ω=0 ω=ωcのとき Ω=2ωc/ωs=Ωc ω=ωs/2のとき Ω=1 ω= ωs -ωcのとき Ω=2( ωs –ωc)/ωs=2-Ωc
また,正規化周波数軸は,T=1/fs,ω=2πfとしたもので,Ωとの関係はΩ=2πFとなる このFを横軸にとることもできる (計算) Ω=0のとき F=0 Ω=Ωcのとき F=Ωc/2π=Fc Ω=1のとき そのままだとF=1/2πだが,サンプリング周波数の1/2であり,F=1とする
6-2-2 高域(通過)フィルタの設計アルゴリズム 6-2-2 高域(通過)フィルタの設計アルゴリズム カットオフ角周波数ωcのディジタルLPFを周波数領域で見れば ・・・・, -ωs± ωc , 0± ωc , ωs± ωc , 2ωs± ωc ,・・・・ の角周波数範囲だけ通過させる。 Ω=ωT/π ・・・・正規角周波数
6-2-2 高域(通過)フィルタの設計アルゴリズム 6-2-2 高域(通過)フィルタの設計アルゴリズム LPFの振幅特性図においてΩ軸を1移動させる(元の軸の値から1引いた値とする)と図6.15になる これはHPFにほかならない これをベクトル上で考えると
カットオフΩHをもつHPFの伝達関数GH(z)を求めるアルゴリズム 正規角周波数を1だけ推移させることはベクトルz=ejωT=ejπΩをπだけ回転させた新しいベクトル z’=ej(πΩ-π)=ejπΩe-jπ =-ejπΩ=-zに置き換えることに等しいので,次のHPFの設計アルゴリズムが生まれる カットオフΩHをもつHPFの伝達関数GH(z)を求めるアルゴリズム カットオフΩLをもつLPFの伝達関数GL(z)を見いだすアルゴリズムが存在するなら, (1) ΩL =1- ΩHとしてLPFの伝達関数GL(z)を見いだす (2) GH(z) = GL(-z)とする (3)終わり LPFができればHPFは完成も同然
6-2-3 BPF,BSFの設計アルゴリズム LPFを周波数変換法によってBPFやBSFに変換する方法もあるが,高域側と低域側の遮断特性が対称的になり自由度がない 高域側,低域側の遮断特性を別々に設計できるアルゴリズムが実用的だ
カットオフΩ1 , Ω2(Ω1<Ω2)をもつBPFの伝達関数GBP(z)を求めるアルゴリズム
カットオフΩ1 , Ω2(Ω1<Ω2)をもつBSFの伝達関数GBS(z)を求めるアルゴリズム
伝達関数と構造図 ブロック図には伝達関数を書き込む zで割ると,分子分母はz-1が表れる z-1は遅延素子で,構造図にそのまま描く 例1 ブロック図と構造図の対応 ブロック図には伝達関数を書き込む zで割ると,分子分母はz-1が表れる z-1は遅延素子で,構造図にそのまま描く 分子の係数は伝達関数通り構造図に描く 分母の係数は正負を反転して構造図に描く
注意:分母の係数(数値)は構造図上では符合を逆転せよ 例2 伝達関数の分母の係数 Y(z)=X(z)-bY(z)z-1 → y(z){1+bz-1}=x(z) Y(z) 1 G(z)= = X(z) 1+bz-1 ディレイはz-1のこと 注意:分母の係数(数値)は構造図上では符合を逆転せよ
演習問題6
1.標準形ディジタルフィルタの処理プログラム(p.66の6.1.3のアルゴリズム) #include<stdio.h> main() { int i,n,M,N; float a[50],b[50],v,x[50],y scanf(“%d%d”,&M,&N); for(i=0;i<=N;i++)scanf(“%f”,&a[i]); for(i=0;i<=N;i++)scanf(“%f”,&b[i]); for(i=0;i<=N;i++)x[i]=0.0; for(n=0;n<=M;n++){ scanf(%f”,&v); x[0]=v; for(i=0;i<=N;i++)x[0]=x[0]+b[i]*x[i]; y=0.0; for(i=0;i<=N;i++)y=y+a[i]*x[i]; for(i=0;i<=N;i++)x[N-1]==x[N-1-i]; printf(“%15.7e\n”,y); }
2.差分方程式y(nT)=x(nT)-b・y(nT-T)から (a)伝達関数 (b)周波数特性を求める 構造図 z変換式 Y(z)=X(z)-bY(z)z-1 伝達関数 G(z)=Y(z)/X(z)=1/(1+bz-1)・・・(a) 周波数特性G(z)において,z=ejωTとおき,オイラーの公式を用いて変形すると, G(ejωT)=(1+b・cosωT)/A+jb・sinωT/A ただし,A=1+b2+2b・cosωT ∴ |G(ejωT)|=1/√A ・・・(b-振幅) θ(ω)=atan-1b・sinωT/ (1+b・cosωT) ・・・(b-位相) 振幅も位相も教科書の解答と違ってしまった
3.伝達関数からインパルス応答を求める G(z)=∑aiz-i G(z)=∑aiz-i =a0z-0+a1z-1+a2z-2+・・・+aNz-N =H(z) ∴ h(nT)= an (0≦n≦N) 0 (n<0,n>N)
4.伝達関数から標準形構造図を描く G(z)=(z2+z+1)/(z2+0.2z-0.48)
5.伝達関数から1次縦続接続構造図を描く G(z)=(z2+2z+1)/(z2+0.2z-0.48)
6.伝達関数から1次並列接続構造図を描く G(z)=(2z2+1.2z-0.6)/(Z2+0.2Z-0.48)
7.伝達関数から安定判別 G(z)=(z2+z)/(z2+1.5z-1) 伝達関数の極に注目 z2+1.5z-1=0 より, z=2+j0 or z=-0.5+j0 一つの極が単位円内にない ゆえに不安定