주요 콘텐츠

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;        % Sample rate
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를 충족해야 합니다.

허용 가능한 최대 편차로, a와 크기가 같고 요소가 간격 (0; 1) 이내 범위인 벡터로 지정됩니다.

이 인수는 각 대역에 대해 원하는 진폭과 추정된 팍스-맥클렐란 최적 FIR 필터의 진폭 응답 사이의 최대 편차나 리플을 지정합니다.

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

출력 인수

모두 축소

필터 차수 추정값으로, 음이 아닌 정수로 반환됩니다.

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

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

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

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

알고리즘

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

참고

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

  • 경우에 따라 알고리즘이 필터 차수에 대해 음수 값을 추정하는 경우도 있습니다. 그러한 경우 함수는 n0으로 반환합니다.

참고 문헌

[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 이전에 개발됨