IIR 필터 설계
이 예제에서는 기본적인 버터워스 설계, 체비쇼프 설계, 타원 설계를 비교하고, 베셀 필터, Yule-Walker 필터, 일반화된 버터워스 필터를 살펴봅니다.
IIR 필터와 FIR 필터 비교
FIR 필터 대신 IIR 필터를 사용하면 FIR 필터보다 훨씬 낮은 필터 차수로 지정된 사양 세트를 충족할 수 있습니다. IIR 필터에 비선형 위상이 있더라도 MATLAB®에서의 데이터 처리는 일반적으로 “오프라인”으로 수행됩니다. 즉, 필터링을 수행하기 전에 전체 데이터 시퀀스를 사용할 수 있습니다. 따라서 비인과적 영위상 필터링 접근 방식(filtfilt
함수 사용)이 허용됩니다. 이 접근 방식에서는 IIR 필터의 비선형 위상 왜곡이 제거됩니다.
기본적인 IIR 필터
기본적인 IIR 필터인 버터워스, 체비쇼프 유형 I 및 유형 II, 타원, 베셀 모두 각기 다른 방식으로 이상적인 “벽돌담(Brick Wall)” 필터를 근사합니다.
Signal Processing Toolbox™에서는 아날로그 영역 및 디지털 영역 모두에서, 그리고 저역통과, 고역통과, 대역통과, 대역저지 구성에서 이러한 기본적인 유형의 IIR 필터를 생성할 수 있도록 함수를 제공합니다(베셀 필터는 아날로그 영역만 지원됨). 대부분의 필터 유형의 경우 통과대역 감쇠량과 저지대역 감쇠량 및 천이 폭 측면에서 지정된 필터 사양에 맞는 최저 필터 차수를 구할 수도 있습니다.
기타 IIR 필터
직접 필터 설계 함수 yulewalk
는 지정된 주파수-응답 함수에 가까운 크기 응답을 가지는 필터를 구합니다. 이는 다중대역 대역통과 필터를 생성하는 한 가지 방법입니다.
모수적 모델링 함수 또는 시스템 식별 함수를 사용하여 IIR 필터를 설계할 수도 있습니다. 이러한 함수에 대해서는 Parametric Modeling에 설명되어 있습니다.
일반화된 버터워스 설계 함수 maxflat
에 대해서는 일반화된 버터워스 필터 설계 섹션에 설명되어 있습니다.
IIR 필터 방법 요약
다음 표에는 Signal Processing Toolbox™를 사용한 다양한 필터 방법에 대한 요약과 함께 이러한 방법을 구현하는 데 사용할 수 있는 함수가 나열되어 있습니다.
툴박스 필터 방법과 사용 가능한 함수
필터 방법 | 설명 | 필터 함수 |
---|---|---|
아날로그 프로토타이핑 | 연속적인(라플라스) 영역에서 기본적인 저역통과 프로토타입 필터의 극점과 영점을 사용하여 주파수 변환 및 필터 이산화를 통해 디지털 필터를 구합니다. | 필터 설계:
차수 추정: 저역통과 아날로그 프로토타이핑: |
직접 설계 | 조각별 선형 크기 응답의 근삿값을 계산하는 방식으로 이산시간 영역에서 직접 디지털 필터를 설계합니다. | |
일반화된 버터워스 설계 | 극점보다 영점이 많은 저역통과 버터워스 필터를 설계합니다. | |
모수적 모델링 | 미리 정해진 시간 영역 응답 또는 주파수 영역 응답을 근사하는 디지털 필터를 구합니다. (광범위한 모수적 모델링 툴 모음은 System Identification Toolbox™ 문서를 참조하십시오.) | 시간 영역 모델링: |
아날로그 프로토타이핑을 사용하는 기본적인 IIR 필터 설계
이 툴박스에서 제공하는 주요 IIR 디지털 필터 설계 기법은 기본적인 저역통과 아날로그 필터를 디지털 필터로 변환하는 것을 기반으로 합니다. 다음 섹션에서는 필터를 설계하는 방법을 설명하고 지원되는 필터 유형의 특성에 대한 요약을 제공합니다. 필터 설계 절차에 대한 세부 단계는 Special Topics in IIR Filter Design 항목을 참조하십시오.
완전히 기본적인 IIR 필터 설계
필터 설계 함수를 사용하여 저역통과, 고역통과, 대역통과 또는 대역저지 ftype
구성으로 임의 차수의 필터를 손쉽게 생성할 수 있습니다.
필터 설계 함수
필터 유형 | 설계 함수 |
---|---|
베셀( |
|
버터워스( |
|
체비쇼프 유형 I( |
|
체비쇼프 유형 II( |
|
타원( |
|
기본적으로 이들 함수는 각각 저역통과 필터를 반환합니다. 따라서 나이퀴스트 주파수가 1Hz가 되도록 원하는 차단 주파수 Wn
만 정규화된 단위로 지정해야 합니다. 고역통과 필터라면 함수의 파라미터 목록에 "high"
를 추가하십시오. 대역통과 필터나 대역저지 필터라면 통과대역 경계 주파수를 포함하는, 요소를 2개 가진 벡터로 Wn
을 지정하십시오. 대역저지 구성의 경우에는 "stop"
을 추가하십시오.
다음은 디지털 필터의 몇 가지 예입니다.
[bB,aB] = butter(5,0.4); % Lowpass Butterworth [bC1,aC1] = cheby1(4,1,[0.4 0.7]); % Bandpass Chebyshev Type I [bC2,aC2] = cheby2(6,60,0.8,"high"); % Highpass Chebyshev Type II [bE,aE] = ellip(3,1,60,[0.4 0.7],"stop"); % Bandstop elliptic
시뮬레이션을 위해 아날로그 필터를 설계하려면 후행 "s"
를 사용하여 차단 주파수를 단위 rad/s로 지정하십시오.
[bBA,aBA] = butter(5,0.4,"s"); % Analog Butterworth filter
모든 필터 설계 함수는 설정된 출력 인수의 개수에 따라 전달 함수, 영점-극점-이득, 또는 상태공간 선형 시스템 모델 표현으로 필터를 반환합니다. 일반적으로 전달 함수 형식은 반올림 오차로 인한 수치적 문제가 발생할 수 있기 때문에 사용하지 않도록 합니다. 대신, zp2sos
를 사용하여 2차섹션형(SOS)으로 변환할 수 있는 영점-극점-이득 형식을 사용한 후 SOS 형식을 사용하여 필터를 분석하거나 구현하십시오.
기본적인 IIR 저역통과 필터는 차단 주파수가 매우 낮은 경우 나쁜 조건 상태가 됩니다(ill-conditioned). 따라서, 매우 좁은 통과대역을 가지는 저역통과 IIR 필터를 설계하는 대신 넓은 통과대역을 설계하고 입력 신호를 데시메이션하는 것이 더 적합할 수 있습니다.
주파수 영역 사양에 맞는 IIR 필터 설계하기
Signal Processing Toolbox™에서는 차수 선택 함수를 제공합니다. 이 함수를 사용하여 주어진 일련의 요구 사항을 충족하는 최소 필터 차수를 계산할 수 있습니다.
필터 유형 | 차수 추정 함수 |
---|---|
버터워스 |
|
체비쇼프 유형 I |
|
체비쇼프 유형 II |
|
타원 |
|
이러한 차수 추정 함수는 필터 설계 함수와 함께 사용하는 경우에 유용합니다. 1000Hz ~ 2000Hz의 통과대역, 양쪽에서 500Hz 떨어진 저지대역 시작값, 10kHz 샘플링 주파수, 최대 1dB의 통과대역 리플, 최소 60dB의 저지대역 감쇠량을 가지는 대역통과 필터가 필요하다고 가정하겠습니다. 다음과 같이 butter
함수를 사용하여 이러한 사양을 충족할 수 있습니다.
[n,Wn] = buttord([1000 2000]/5000,[500 2500]/5000,1,60)
n = 12
Wn = 1×2
0.1951 0.4080
[bB2,aB2] = butter(n,Wn);
동일한 요구 사항을 충족하는 타원 필터는 다음과 같이 지정됩니다.
[n,Wn] = ellipord([1000 2000]/5000,[500 2500]/5000,1,60)
n = 5
Wn = 1×2
0.2000 0.4000
[bE2,aE2] = ellip(n,1,60,Wn);
이러한 함수는 기타 표준 대역 구성은 물론, 아날로그 필터에도 사용할 수 있습니다.
기본적인 IIR 필터 유형 비교
Signal Processing Toolbox™에서는 다섯 가지 유형의 기본적인 IIR 필터를 제공하며, 각 방식별로 최적화하여 사용할 수 있습니다. 이 섹션에서는 각각에 대한 기본적인 아날로그 프로토타입 형식을 보여주며 주요 특성에 대한 요약을 제공합니다.
버터워스 필터
버터워스 필터는 아날로그 주파수 및 에서 이상적인 저역통과 필터 응답에 대한 최적의 테일러 급수 근사(Taylor series approximation)를 제공합니다. 임의 차수 에 대해 크기 제곱 응답은 이러한 위치에서 0값 도함수를 가집니다( 및 에서 최대로 평탄함). 응답은 전체적으로 단조적(Monotonic)입니다. 즉 에서 까지 매끄럽게 감소합니다. 에서 입니다.
n = 5; [z,p,k] = buttap(n); [bBp,aBp] = zp2tf(z,p,k); [hBp,wBp] = freqs(bBp,aBp,4096); semilogx(wBp,abs(hBp)) grid on xlabel("Frequency (rad/s)") ylabel("Magnitude")
체비쇼프 유형 I 필터
체비쇼프 유형 I 필터는 통과대역에 동일한 리플 Rp
dB을 결합시켜 전체 통과대역에서 이상적인 주파수 응답과 실제 주파수 응답 사이의 절대 오차를 최소화합니다. 저지대역 응답은 최대로 평탄합니다. 통과대역에서 저지대역으로의 천이는 버터워스 필터보다 더 빠르게 이루어집니다. 에서 입니다.
n = 5; Rp = 0.5; [z,p,k] = cheb1ap(n,Rp); [bC1p,aC1p] = zp2tf(z,p,k); [hC1p,wC1p] = freqs(bC1p,aC1p,4096); semilogx(wC1p,abs(hC1p)) grid on xlabel("Frequency (rad/s)") ylabel("Magnitude")
체비쇼프 유형 II 필터
체비쇼프 유형 II 필터는 저지대역에 동일한 리플 Rs
dB을 결합시켜 전체 저지대역에서 이상적인 주파수 응답과 실제 주파수 응답 사이의 절대 오차를 최소화합니다. 통과대역 응답은 최대로 평탄합니다.
저지대역은 유형 I 필터만큼 빠르게 0에 도달하지 않습니다(짝수 값 필터 차수 n의 경우 0에 도달하지 않음). 그러나 통과대역에 리플이 없는 경우 대개 중요한 이점으로 작용합니다. 에서 입니다.
n = 5; Rs = 20; [z,p,k] = cheb2ap(n,Rs); [bC2p,aC2p] = zp2tf(z,p,k); [hC2p,wC2p] = freqs(bC2p,aC2p,4096); semilogx(wC2p,abs(hC2p)) grid on xlabel("Frequency (rad/s)") ylabel("Magnitude")
타원 필터
타원 필터는 통과대역과 저지대역에서 등리플을 가집니다. 이 필터는 지원되는 필터 유형의 최소 차수로 필터 요구 사항을 충족합니다. 필터 차수 n, 통과대역 리플 Rp
(단위: 데시벨), 저지대역 리플 Rs
(단위: 데시벨)가 주어진 경우, 타원 필터는 천이 폭을 최소화합니다. 에서 입니다.
n = 5; Rp = 0.5; Rs = 20; [z,p,k] = ellipap(n,Rp,Rs); [bEp,aEp] = zp2tf(z,p,k); [hEp,wEp] = freqs(bEp,aEp,4096); semilogx(wEp,abs(hEp)) grid on xlabel("Frequency (rad/s)") ylabel("Magnitude")
베셀 필터
아날로그 베셀 저역통과 필터는 영주파수에서 최대로 평탄한 군지연을 가지며 전체 통과대역에서 거의 일정한 군지연을 유지합니다. 따라서 필터링된 신호가 통과대역 주파수 범위에서 그 파형을 유지합니다. 아날로그 베셀 저역통과 필터가 주파수 매핑을 통해 디지털로 변환되면 더 이상 이러한 최대 평탄 속성을 가지지 않습니다. Signal Processing Toolbox™가 제공하는 완전한 베셀 필터 설계 함수는 아날로그에만 사용할 수 있습니다.
베셀 필터는 일반적으로 만족스러운 저지대역 감쇠량을 얻기 위해 다른 필터보다 높은 필터 차수를 필요로 합니다. 에서 입니다. 그리고 필터 차수 이 증가할수록 감소합니다.
n = 5; [z,p,k] = besselap(n); [bBsp,aBsp] = zp2tf(z,p,k); [hBsp,wBsp] = freqs(bBsp,aBsp,4096); semilogx(wBsp,abs(hBsp)) grid on xlabel("Frequency (rad/s)") ylabel("Magnitude")
참고: 위에 나온 저역통과 필터는 아날로그 프로토타입 함수 besselap
, buttap
, cheb1ap
, cheb2ap
, ellipap
를 사용하여 작성되었습니다. 이러한 함수는 1rad/s의 차단 주파수를 갖는 적합한 유형의 n
차 아날로그 필터에 대한 영점, 극점, 이득을 구합니다. 완전한 필터 설계 함수(besself
, butter
, cheby1
, cheby2
, ellip
)는 설계 절차의 첫 번째 단계로 프로토타이핑 함수를 호출합니다. 자세한 내용은 Special Topics in IIR Filter Design 항목을 참조하십시오.
직접 IIR 필터 설계
이 툴박스에서는 이산 영역에서의 사양을 기반으로 하여 필터를 구하는 IIR 설계 기법을 직접 방법이라는 용어를 사용하여 설명합니다. 아날로그 프로토타이핑 방법과 달리, 직접 설계 방법은 표준 저역통과, 고역통과, 대역통과 또는 대역저지 구성으로 제한되지 않습니다. 이 함수는 다중대역 등의 임의 주파수 응답을 갖는 필터를 설계합니다. 이 섹션에서는 yulewalk
함수에 대해 설명합니다. 이 함수는 필터 설계에 사용하도록 특별히 고안되었습니다. Parametric Modeling에서는 Prony 방법, 선형 예측, Steiglitz-McBride 방법, 역 주파수 설계와 같은 직접 설계 방법으로 간주될 수도 있는 기타 방법에 대해 설명합니다.
yulewalk
함수는 지정된 주파수 응답에 적합한 재귀적인 IIR 디지털 필터를 설계합니다. yulewalk
의 이름은 필터의 분모 계수를 구하는 방법을 나타냅니다. 이 함수는 지정된 이상적인 크기 제곱 응답의 역 FFT를 구하고 결과로 생성된 자기상관 함수 샘플을 사용하여 수정된 Yule-Walker 방정식의 해를 구합니다. [b,a] = yulewalk(n,f,m)
문은 주파수-크기 특성이 벡터 f
와 m
에 지정된 주파수-크기에 근사한 n
차 IIR 필터에 대한 n+1
개 분자 및 분모 계수를 포함하는 행 벡터 b
와 a
를 반환합니다. f
는 0부터 1까지의 범위에 속하는 주파수 점으로 구성된 벡터입니다(여기서 1은 나이퀴스트 주파수임). m
은 f
에 포함된 점에서 지정된 크기 응답을 포함하는 벡터입니다. f
와 m
은 다중대역 응답을 포함하여 모든 조각별 선형 크기 응답을 설명할 수 있습니다. 이 함수에 대응되는 FIR 함수는 fir2
이며, 이 함수도 임의 조각별 선형 크기 응답을 기반으로 하여 필터를 설계합니다. 자세한 내용은 FIR 필터 설계 항목을 참조하십시오.
참고로, yulewalk
는 위상 정보를 받지 않으며, 결과로 생성되는 필터의 최적성에 대한 명령문은 없습니다.
yulewalk
를 사용하여 다중대역 필터를 설계하고 지정된 주파수 응답과 실제 주파수 응답을 플로팅합니다.
m = [0 0 1 1 0 0 1 1 0 0]; f = [0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 1]; [bY,aY] = yulewalk(10,f,m); freqz(bY,aY,128)
일반화된 버터워스 필터 설계
maxflat
함수를 사용하면 일반화된 버터워스 필터, 즉 영점 개수와 극점 개수가 다른 버터워스 필터를 설계할 수 있습니다. 이는 극점이 영점보다 더 많은 계산량을 필요로 하는 일부 구현에서 적합합니다. maxflat
은 butter
함수와 동일합니다. 단, 하나의 차수를 지정하는 대신 분자와 분모에 각각 하나씩 두 개의 차수를 지정할 수 있습니다. 이러한 필터는 최대로 평탄합니다. 이는 결과로 생성되는 필터가 어떤 분자나 분모의 차수에 대해서도 가장 적합하다는 것을 의미합니다. 이 경우, 0과 나이퀴스트 주파수 ω = π에서 최대 개수의 도함수는 모두 0으로 설정됩니다.
예를 들어, 두 차수가 동일한 경우 maxflat
은 butter
와 동일합니다.
[bM0,aM0] = maxflat(3,3,0.25)
bM0 = 1×4
0.0317 0.0951 0.0951 0.0317
aM0 = 1×4
1.0000 -1.4590 0.9104 -0.1978
[bB0,aB0] = butter(3,0.25)
bB0 = 1×4
0.0317 0.0951 0.0951 0.0317
aB0 = 1×4
1.0000 -1.4590 0.9104 -0.1978
그러나, maxflat
을 사용하면 극점보다 영점이 더 많은 필터를 설계할 수 있기 때문에 더 유연합니다.
[bM1,aM1] = maxflat(3,1,0.25)
bM1 = 1×4
0.0950 0.2849 0.2849 0.0950
aM1 = 1×2
1.0000 -0.2402
maxflat
에 대한 세 번째 입력값은 반전력 주파수, 즉 1/√2의 크기 응답을 가지는 0에서 1 사이의 주파수입니다.
"sym"
옵션을 사용하여 최대 평탄 속성을 가지는 선형 위상 필터를 설계할 수도 있습니다.
bM2 = maxflat(4,"sym",0.3)
bM2 = 1×5
0.0331 0.2500 0.4337 0.2500 0.0331
필터 응답 비교:
filterAnalyzer(bM0,aM0,bM1,aM1,bM2,1, ... FilterNames=["SameOrder" "DiffOrder" "Symmetric"])
maxflat
알고리즘에 대한 자세한 내용은 셀레스닉(Selesnick) 및 부루스(Burrus)[3]를 참조하십시오.