이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

firls

최소제곱 선형 위상 FIR 필터 설계

구문

b = firls(n,f,a)
b = firls(n,f,a,w)
b = firls(n,f,a,'ftype')
b = firls(n,f,a,w,'ftype')

설명

firls는 원하는 주파수 대역에서 이상적인 조각별 선형 함수와 필터의 크기 응답 간의 가중 적분 제곱 오차를 최소화하는, 선형 위상 FIR 필터를 설계합니다.

b = firls(n,f,a)는 주파수-진폭 특성이 벡터 fa로 지정된 특성과 거의 일치하는, n차 FIR 필터의 n+1개 계수를 포함하는 행 벡터 b를 반환합니다. b에 포함된 출력 필터 계수(즉, “탭”)는 다음과 같은 대칭 관계를 따릅니다.

b(k)=b(n+2k),     k=1,...,n+1

이러한 필터는 유형 I(n이 홀수)과 유형 II(n이 짝수) 선형 위상 필터입니다. 벡터 fa는 필터의 주파수-진폭 특성을 지정합니다.

  • f는 0에서 1 사이의 범위에 지정된 주파수 점의 쌍으로 구성된 벡터입니다. 여기서 1은 나이퀴스트 주파수에 해당됩니다. 주파수는 오름차순이어야 합니다. 주파수 점은 중복될 수 있습니다. 실제로, 중복된 주파수 점은 사각(rectwin) 윈도우가 사용된 fir1fir2 함수가 반환하는 필터와 완전히 동일한 필터를 설계하는 데 사용할 수 있습니다.

  • af에 지정된 점에서 원하는 진폭을 포함하는 벡터입니다.

    k가 홀수인 경우 점의 쌍 (f(k), f(k+1)) 간의 주파수에서 원하는 진폭 함수는 점 (f(k), a(k))와 (f(k+1), a(k+1))을 연결하는 선분입니다.

    k가 짝수인 경우 점의 쌍 (f(k), f(k+1)) 사이의 주파수에서 원하는 진폭 함수는 지정되지 않습니다. 이러한 영역은 천이 영역 또는 “무관(Don't Care)” 영역입니다.

  • fa는 길이가 같습니다. 이 길이는 짝수여야 합니다.

firls는 나이퀴스트 주파수에서 통과대역을 갖는 구성에 대해 항상 짝수 필터 차수를 사용합니다. 이는 홀수 차수의 경우 나이퀴스트 주파수에서 주파수 응답이 반드시 0이 되기 때문입니다. 홀수 값을 가지는 n을 지정하는 경우 firls은 이를 1씩 증가시킵니다.

아래 그림은 원하는 진폭 응답을 정의할 때 f 벡터와 a 벡터 간의 관계를 보여줍니다.

b = firls(n,f,a,w)는 벡터 w가중치를 사용하여 각 주파수 대역에서 피팅에 가중치를 적용합니다. w의 길이가 fa 길이의 절반이기 때문에 대역당 정확히 하나의 가중치가 있습니다.

b = firls(n,f,a,'ftype')

b = firls(n,f,a,w,'ftype')은 필터 유형을 지정합니다. 여기서 'ftype'은 다음과 같습니다.

  • 'hilbert' - 기대칭을 갖는 선형 위상 필터의 경우(유형 III 및 유형 IV). b에 포함된 출력 계수는 다음 관계를 따릅니다.

    b(k)=b(n+2k),k=1,,n+1.

    이 유형의 필터는 힐베르트 변환기를 포함합니다. 힐베르트 변환기는 전체 대역에 걸쳐 원하는 진폭 1을 갖습니다.

  • 'differentiator' - 특수 가중 기법을 사용하는 유형 III 및 유형 IV 필터의 경우 0이 아닌 진폭의 대역에 대해, 저주파수의 오차가 고주파수의 오차보다 훨씬 작도록 적분 제곱 오차는 (1/f)2을 가중치로 갖습니다. 주파수에 비례하는 진폭 특성을 갖는 FIR 미분기의 경우, 필터는 상대 적분 제곱 오차(원하는 진폭에 대한 오차 비율의 제곱 적분)를 최소화합니다.

예제

모두 축소

0.25π0.3π 사이의 천이 대역을 갖고 차수가 255인 FIR 저역통과 필터를 설계합니다. fvtool을 사용하여 필터의 크기 응답과 위상 응답을 표시합니다.

b = firls(255,[0 0.25 0.3 1],[1 1 0 0]);
fvtool(b,1,'OverlayedAnalysis','phase')

이상적인 미분기는 D(ω)=jω로 지정되는 주파수 응답을 갖습니다. 0.9π를 초과하는 주파수를 감쇠하고 차수가 30인 미분기를 설계합니다. 주파수가 π로 정규화되기 때문에 진폭에 인자 π를 포함시킵니다. 필터의 영위상 응답을 표시합니다.

b = firls(30,[0 0.9],[0 0.9*pi],'differentiator');

fvtool(b,1,'MagnitudeDisplay','zero-phase')

조각별 선형 통과대역을 갖는 24차 반대칭 필터를 설계합니다.

F = [0 0.3 0.4 0.6 0.7 0.9]; 
A = [0 1.0 0.0 0.0 0.5 0.5];
b = firls(24,F,A,'hilbert');

원하는 주파수 응답과 실제 주파수 응답을 플로팅합니다.

[H,f] = freqz(b,1,512,2);
plot(f,abs(H))
hold on
for i = 1:2:6, 
   plot([F(i) F(i+1)],[A(i) A(i+1)],'r--')
end
legend('firls design','Ideal')
grid on
xlabel('Normalized Frequency (\times\pi rad/sample)')
ylabel('Magnitude')

FIR 저역통과 필터를 설계합니다. 통과대역 범위는 DC에서 0.45π rad/sample 사이입니다. 저지대역 범위는 0.55π rad/sample에서 나이퀴스트 주파수 사이입니다. 최소제곱 피팅의 대역 가중치를 변경하여, 서로 다른 세 개의 설계를 만듭니다.

첫 번째 설계에서는 저지대역 가중치를 통과대역 가중치보다 100배 높게 만듭니다. 저지대역의 크기 응답이 0에 가까운 평탄한 응답이어야 하는 경우, 이 사양을 사용하십시오. 통과대역 리플이 저지대역 리플보다 약 100배 높습니다.

bhi = firls(18,[0 0.45 0.55 1],[1 1 0 0],[1 100]);

두 번째 설계에서는 통과대역 가중치가 저지대역 가중치보다 100배 높도록 가중치를 바꿉니다. 통과대역의 크기 응답이 1에 가까운 평탄한 응답이어야 하는 경우, 이 사양을 사용하십시오. 저지대역 리플이 통과대역 리플보다 약 100배 높습니다.

blo = firls(18,[0 0.45 0.55 1],[1 1 0 0],[100 1]);

세 번째 설계에서는 두 대역에 동일한 가중치를 지정합니다. 그러면 통과대역과 저지대역의 리플이 비슷한 필터가 생성됩니다.

b = firls(18,[0 0.45 0.55 1],[1 1 0 0],[1 1]);

세 개 필터의 크기 응답을 시각화합니다.

hfvt = fvtool(bhi,1,blo,1,b,1,'MagnitudeDisplay','Zero-phase');
legend(hfvt,'bhi: w = [1 100]','blo: w = [100 1]','b: w = [1 1]')

진단

잘못된 인수가 사용될 경우 다음 진단 메시지 중 하나가 표시됩니다.

F must be even length. F and A must be equal lengths. Requires symmetry to be 'hilbert' or 'differentiator'. Requires one weight per band. Frequencies in F must be nondecreasing. Frequencies in F must be in range [0,1].

다음과 같은 더 심각한 경고 메시지가 표시될 수도 있습니다.

Warning: Matrix is close to singular or badly scaled.

이 메시지는 주로 필터 길이와 천이 폭의 곱이 크게 증가할 때 표시됩니다. 이 경우 필터 계수 b가 원하는 필터를 나타내지 않을 수 있습니다. 주파수 응답을 살펴보면 필터를 확인할 수 있습니다.

알고리즘

참고 문헌 [1]에는 firls의 이론적 접근 방식이 설명되어 있습니다. 이 함수는 MATLAB® \ 연산자를 사용하여 크기가 대략 n/2인 내적 행렬을 포함하는 선형 연립방정식을 풉니다.

이 함수는 유형 I, II, III, IV 선형 위상 필터를 설계합니다. 유형 I과 유형 II는 각각 짝수 n과 홀수 n에 대한 디폴트 필터이고, 'hilbert' 플래그와 'differentiator' 플래그는 유형 III(n이 짝수인 경우)과 IV(n이 홀수인 경우) 필터를 만듭니다. 필터는 유형에 따라 각기 다른 대칭성과 해당 주파수 응답에 대한 제약 조건을 가집니다(자세한 내용은 [2] 항목 참조).

선형 위상 필터 유형필터 차수계수의 대칭성응답 H(f), f = 0응답 H(f), f = 1(나이퀴스트)

유형 I

짝수

b(k)=b(n+2k),k=1,...,n+1

제한 사항 없음

제한 사항 없음

유형 II

홀수

b(k)=b(n+2k),k=1,...,n+1

제한 사항 없음

H(1) = 0

유형 III

짝수

b(k)=b(n+2k),k=1,...,n+1

H(0) = 0

H(1) = 0

유형 IV

홀수

b(k)=b(n+2k),k=1,...,n+1

H(0) = 0

제한 사항 없음

참고 문헌

[1] Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987, pp. 54–83.

[2] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

참고 항목

| | |

R2006a 이전에 개발됨