아날로그 IIR 저역통과 필터 비교
2GHz의 차단 주파수를 갖는 5차 아날로그 버터워스 저역통과 필터를 설계합니다. 를 곱하여 주파수를 초당 라디안 값으로 변환합니다. 4096개 점에서 필터의 주파수 응답을 계산합니다.
n = 5;
wc = 2*pi*2e9;
w = 2*pi*1e9*logspace(-2,1,4096)';
[zb,pb,kb] = butter(n,wc,"s");
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,w);
gdb = -diff(unwrap(angle(hb)))./diff(wb);동일한 경계 주파수와 3dB의 통과대역 리플을 갖는 5차 체비쇼프 유형 I 필터를 설계합니다. 필터의 주파수 응답을 계산합니다.
[z1,p1,k1] = cheby1(n,3,wc,"s");
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,w);
gd1 = -diff(unwrap(angle(h1)))./diff(w1);동일한 경계 주파수와 30dB의 저지대역 감쇠량을 갖는 5차 체비쇼프 유형 II 필터를 설계합니다. 필터의 주파수 응답을 계산합니다.
[z2,p2,k2] = cheby2(n,30,wc,"s");
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,w);
gd2 = -diff(unwrap(angle(h2)))./diff(w2);동일한 경계 주파수, 3dB의 통과대역 리플, 30dB의 저지대역 감쇠량을 갖는 5차 타원 필터를 설계합니다. 필터의 주파수 응답을 계산합니다.
[ze,pe,ke] = ellip(n,3,30,wc,"s");
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,w);
gde = -diff(unwrap(angle(he)))./diff(we);동일한 경계 주파수를 갖는 5차 베셀 필터를 설계합니다. 필터의 주파수 응답을 계산합니다.
[zf,pf,kf] = besself(n,wc); [bf,af] = zp2tf(zf,pf,kf); [hf,wf] = freqs(bf,af,w); gdf = -diff(unwrap(angle(hf)))./diff(wf);
감쇠량(단위: 데시벨)을 플로팅합니다. 주파수를 기가헤르츠 단위로 표현합니다. 필터를 비교합니다.
fGHz = [wb w1 w2 we wf]/(2e9*pi); plot(fGHz,mag2db(abs([hb h1 h2 he hf]))) axis([0 5 -45 5]) grid on xlabel("Frequency (GHz)") ylabel("Attenuation (dB)") legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

샘플의 군지연을 플로팅합니다. 주파수를 기가헤르츠 단위로, 군지연을 나노초 단위로 표현합니다. 필터를 비교합니다.
gdns = [gdb gd1 gd2 gde gdf]*1e9; gdns(gdns<0) = NaN; loglog(fGHz(2:end,:),gdns) grid on xlabel("Frequency (GHz)") ylabel("Group delay (ns)") legend(["butter" "cheby1" "cheby2" "ellip" "besself"])

버터워스 필터와 체비쇼프 유형 II 필터는 평탄한 통과대역과 넓은 천이 대역을 가집니다. 체비쇼프 유형 I 필터와 타원 필터는 더 빨리 롤오프되지만 통과대역 리플을 가집니다. 체비쇼프 유형 II 설계 함수에 대한 주파수 입력값은 통과대역의 끝값이 아니라 저지대역의 시작값을 설정합니다. 베셀 필터는 통과대역에서 거의 일정한 군지연을 가집니다.