Main Content

firpmord

팍스-맥클렐란(Parks-McClellan) 최적 FIR 필터 차수 추정

설명

[n,fo,ao,w] = firpmord(f,a,dev)는 근사 차수 n, 정규화 주파수 대역 경계 fo, 주파수 대역 진폭 ao, 입력 사양 f, a, dev를 충족하는 가중치 w를 반환합니다.

예제

[___] = firpmord(___,fs)는 샘플링 주파수 fs를 지정합니다. fs는 디폴트 값이 2Hz이며, 따라서 나이퀴스트 주파수는 1Hz입니다. 특정 응용 사례의 샘플 레이트로 스케일링된 대역 경계를 지정할 수 있습니다. 이 구문은 위에 열거된 모든 입력 구문과 함께 사용할 수 있습니다.

예제

c = firpmord(___,'cell')firpm에 대한 파라미터를 요소로 갖는 셀형 배열 c를 반환합니다.

예제

모두 축소

통과대역 차단 주파수가 500Hz이고 저지대역 차단 주파수가 600Hz인 최소 차수 저역통과 필터를 설계합니다. 샘플링 주파수를 2000Hz로 지정합니다. 저지대역 감쇠량은 최소한 40dB이어야 하고 통과대역 리플은 3dB보다 작아야 한다고 지정합니다.

rp = 3;           % Passband ripple in dB 
rs = 40;          % Stopband ripple in dB
fs = 2000;        % Sampling frequency
f = [500 600];    % Cutoff frequencies
a = [1 0];        % Desired amplitudes

편차를 선형 단위로 변환합니다. 필터를 설계하고, 필터의 크기와 위상 응답을 시각화합니다.

dev = [(10^(rp/20)-1)/(10^(rp/20)+1) 10^(-rs/20)]; 
[n,fo,ao,w] = firpmord(f,a,dev,fs);
b = firpm(n,fo,ao,w);
freqz(b,1,1024,fs)
title('Lowpass Filter Designed to Specifications')

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (kHz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Lowpass Filter Designed to Specifications, xlabel Frequency (kHz), ylabel Magnitude (dB) contains an object of type line.

필터는 저지대역 감쇠량과 통과대역 리플 사양에 조금 못 미칩니다. firpm을 호출할 때 n 대신에 n+1을 사용하면 원하는 진폭 특성을 얻을 수 있습니다.

통과대역 차단 주파수가 1500Hz고 저지대역 차단 주파수가 2000Hz인 저역통과 필터를 설계합니다. 샘플링 주파수를 8000Hz로 지정합니다. 최대 저지대역 진폭은 0.1이어야 하고 최대 통과대역 오차(리플)는 0.01이어야 한다고 지정합니다.

[n,fo,ao,w] = firpmord([1500 2000],[1 0],[0.01 0.1],8000);
b = firpm(n,fo,ao,w);

firpmord에서 셀형 배열을 생성하게 하여 동일한 결과를 얻습니다. 필터의 주파수 응답을 시각화합니다.

c = firpmord([1500 2000],[1 0],[0.01 0.1],8000,'cell');
B = firpm(c{:});
freqz(B,1,1024,8000)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (kHz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (kHz), ylabel Magnitude (dB) contains an object of type line.

입력 인수

모두 축소

주파수 대역 경계로, 실수 값 벡터로 지정됩니다. 인수는 범위 [0, Fs/2] 내에 있어야 합니다. 여기서 Fs는 나이퀴스트 주파수입니다. 벡터의 요소 개수는 항상 2의 배수입니다. 주파수는 오름차순이어야 합니다.

f에 포함된 점에서 원하는 진폭으로, 벡터로 지정됩니다. fa는 조건 length(f) = 2length(a)–2를 충족해야 합니다. 원하는 함수는 조각별 상수 함수입니다.

허용 가능한 최대 편차로, 벡터로 지정됩니다. deva와 크기가 같습니다. dev는 각 대역에 대해 출력 필터의 주파수 응답과 원하는 진폭 사이의 허용 가능한 최대 편차나 리플을 지정합니다.

샘플 레이트로, 실수형 스칼라로 지정됩니다.

출력 인수

모두 축소

필터 차수로, 양의 정수로 반환됩니다.

정규화 주파수 점으로, 실수 값 벡터로 지정됩니다. 인수는 범위 [0, 1] 내에 있어야 합니다. 여기서 1은 나이퀴스트 주파수에 해당합니다. 벡터의 요소 개수는 항상 2의 배수입니다. 주파수는 오름차순이어야 합니다.

진폭 응답으로, 실수 값 벡터로 지정됩니다.

각 주파수 대역의 피팅을 조정하는 데 사용되는 가중치로, 실수 값 벡터로 지정됩니다. w의 길이가 fa 길이의 절반이기 때문에 대역당 정확히 하나의 가중치가 있습니다.

FIR 필터 파라미터로, 셀형 배열로 반환됩니다.

알고리즘

firpmord[1]에 제시된 알고리즘을 사용합니다. 이 함수는 대역 경계가 0이나 나이퀴스트 주파수 fs/2에 가까운 경우 정확하지 않은 결과를 생성합니다.

참고

경우에 따라, firpmord는 차수 n을 작게 또는 높게 추정합니다. 필터가 사양을 충족하지 않는 경우 n+1, n+2 등과 같이 더 높은 차수를 사용해 보십시오.

참고 문헌

[1] Rabiner, Lawrence R., and Otto Herrmann. “The Predictability of Certain Optimum Finite-Impulse-Response Digital Filters.” IEEE® Transactions on Circuit Theory. Vol. 20, Number 4, 1973, pp. 401–408.

[2] Rabiner, Lawrence R., and Bernard Gold. Theory and Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975, pp. 156–157.

확장 기능

버전 내역

R2006a 이전에 개발됨