FFT를 사용하여 FIR 필터를 설계 할 때 어떤 문제가 있습니까?


15

컨볼 루션이있는 필터 커널을 사용하여 "제 1 원리"로 설계된 FIR 필터와 FFT를 사용하여 두 가지 방법 중 하나로 설계된 필터 (아래 참조) 사이의 관계를 이해하려고합니다.

내가 이해하는 한, FIR 필터의 임펄스 응답은 필터의 컨볼 루션 커널과 동일합니다. (틀린 점 있으면 지적 해주세요.)

또한 FIR 필터 임펄스 응답의 구성 요소 주파수 (예 : 푸리에 변환)는 필터의 주파수 응답과 동일합니다. 따라서 역 푸리에 변환은 임펄스 응답을 다시 제공합니다 (다시 틀리면 수정하십시오).

이것은 두 가지 결론 (위상 응답 무시 또는 선형 위상 응답 가정)으로 이어집니다.

  1. 원하는 주파수 응답을 "그리기", 임펄스 응답을 얻기 위해 IFFT를 사용하여이를 컨볼 루션 커널로 사용하여 임의 주파수 응답의 FIR 필터를 설계 할 수 있어야합니다.

  2. 또는 입력 신호의 FFT를 취하고 주파수 영역에서 원하는 임의의 주파수 응답을 곱한 후 결과의 IFFT를 사용하여 출력 신호를 생성하여 필터를 만들 수 있어야합니다.

직관적으로, 1과 2가 동등한 것처럼 느껴지지만 그것을 증명할 수 있는지 확실하지 않습니다.

사람들 (및 DSP 문학)은 Chebyshev 또는 Remez와 같은 복잡한 알고리즘을 사용하여 미리 정의 된 응답으로 FIR 커널을 설계하는 데 많은 시간을 투자하는 것처럼 보입니다 (실제로 이해하지 않고 읽은 일부 이름을 버리고 있습니다) .

  • 가능한 모든 FIR 커널에 대해 FFT / IFFT 변환이 존재하는 이유는 무엇입니까?
  • 원하는 정확한 주파수 응답을 간단하게 그리고 IFFT를 취하고 FIR 커널 (위의 방법 1)이있는 이유는 무엇입니까?

관심 분야는 관련이있는 경우 디지털 오디오 / 디지털 음악입니다.
bryhoyt

답변:


13

사람들이 직접 접근 방식 (1과 2 모두)을 사용하지 않고 FIR 필터를 설계하는 이유 중 하나는 직접 접근 방식이 일반적으로 주파수 영역의 주기성을 고려하지 못하기 때문에 FFT를 사용하여 컨볼 루션을 구현 한 사실 원형 컨벌루션 .

이것은 무엇을 의미 하는가?

엑스=[1,2,,4]h=[1,1]

와이=엑스h[1,,5,7,4][,5,7,5]

FFT 길이가 선형 컨벌루션 결과의 길이보다 크거나 같으면 두 개가 동일합니다. 그렇지 않으면 두 신호는 동일하지 않습니다 (예를 들어, 한 신호가 0 인 경우 데이터가 어떤 식으로 데이터를 혼동하지 않는 한).


물론 FFT / IFFT 크기가 최종 컨볼 루션 길이와 일치하는지 확인할 수없는 이유는 무엇입니까? 예를 들어 컨벌루션 길이는 N + M-1이므로 길이가 M-1 인 푸리에 도메인에서 주파수 응답을 '그리기'만하면됩니다. 왜 그렇게되지 않을까요? 재미있는 것들 btw. :)
TheGrapeBeyond

1
미디엄1

2
길이 M-1의 주파수 응답은 여전히 ​​무한 길이 임펄스 응답을 갖습니다. 즉, 필터링 된 결과를 얻기 위해 IFFT를 수행하면 필터 임펄스 응답의 꼬리가 여러 번 감겨 최종 시간 도메인 결과가 축소됩니다. 아마 조금 아마 많이.
hotpaw2

10

한 가지 문제는 유한 길이 FFT를 사용할 때 랩 어라운드 무한 변환을 처리하는 것입니다. 유한 길이 주파수 응답의 푸리에 변환은 무한 길이 임펄스 응답 또는 필터 커널입니다. 대부분의 사람들은 죽거나 컴퓨터 메모리가 부족하기 전에 필터를 끝내기를 원하므로 더 짧은 FIR 필터를 생산하기위한 트릭이 필요합니다. FFT 주변에서 무한 임펄스 응답의 테일을 감싸거나 일반적인 길이로 짧게 자르면 "클래식"필터 프로토 타입 중 하나에 비해 원하는 주파수 스펙에 비해 열등한 FIR 필터가 생성 될 수 있습니다.

또 다른 문제는 임의의 "그리기"주파수 응답이 유한 해상도에서 그려진 점 사이에 끔찍한 응답 (와일드 오버 슈트)을 갖는 경우가 많습니다. FIR 필터로 변환하면 미친 듯이 울립니다. 클래식 필터 프로토 타입은 샘플 포인트간에 부드러운 주파수 응답 기능을 갖도록 설계되었습니다.

귀하의 (2)는 빠른 회선이라고하며, FFT가 데이터 창의 길이와 필터 커널을 합한 길이보다 길고 각 회선 세그먼트의 시작 / 끝을 처리하기 위해 적절한 오버랩 추가 / 저장이 사용되는 경우 일반적으로 사용됩니다 또는 창 (FFT는 일반적으로 길이가 고르기 때문에).


6

Re 1) : 예. 주파수 응답 (크기와 위상 모두)을 "그리기"하여 FIR 필터를 설계 할 수 있습니다. 그러나 이는 매우 비효율적 인 경향이 있습니다. 임펄스 응답의 길이 (및 필터 순서)는 단순히 사전 -FFT 길이로 결정 128 포인트 FFT를 선택하면 임펄스 응답을 위해 128 개의 탭을 얻게되고 4096 포인트 FFT를 선택하면 4096 개의 필터 탭을 얻게됩니다.

Re 2) : 그렇습니다. 주파수 영역에서 곱셈으로 필터링 할 수 있으며 이는 실제로 큰 임펄스 응답을 위해 효율적으로 수행 할 수있는 유일한 방법입니다. 그러나 Peter K가 지적했듯이 주파수 영역에서의 곱셈은 원형 컨벌루션에 해당합니다. 선형 컨벌루션을 구현하는 가장 일반적인 방법은 "오버랩 추가"또는 "오버랩 저장"알고리즘 (쉽게 구글 검색)입니다.


3

나는 여기에서 말한 모든 것을 이해하지는 못하지만 푸리에 변환 방법에 대한 사례를 만들고 싶습니다.

첫째, FIR 필터를 설계 할 수있는 매우 유연하고 간단한 방법입니다. 말씀 드린대로, 크기와 위상 응답을 정의하기 만하면됩니다. 그러나 앞서 말했듯이 응답을 정의하는 방법에 대해 약간 신중해야합니다. 임의의 응답은 시간 도메인 응답을 끔찍하게 구현하고 제공하기 위해 엄청나게 많은 수의 탭이 필요할 수 있습니다. 정의하는 방법에주의하십시오.

두 번째로, 예를 들어 Parks McClellan 방법이 특정 요구 사항에 대해 푸리에 방법보다 더 나은 필터를 생성 할 수 있지만 탭 수를 제어하고 크기, 위상 및 단계 응답을 정의하는 것은 쉽지 않습니다. 방법.

예를 들어, 10 극 IIR 베셀과 유사한 특성을 가진 FIR 필터를 설계하려고하지만 전이 대역을 조금 좁히고 싶다 (단계 응답 오버 슈트 비용). 그런 다음 푸리에 방법은 천이 대역이 얼마나 좁아 지는지에 따라 약 22 개의 탭으로 해결하기 쉬운 문제를 만듭니다.

푸리에 방법이 가능한 기능을 보려면이 FIR 프로그램 ( http://www.iowahills.com/5FIRFiltersPage.html)을 사용해보십시오 (무료). 예를 들어 가우스, 베셀, 버터 워스 및 역 체비 쇼프 필터와 동등한 IIR을 설계 할 수 있습니다. 일반적으로 푸리에 방법의 장점 인 거의 모든 것에 대해 필터의 응답을 조정할 수 있습니다. 단점은 필터가 특정 요구 사항에 적합하지 않을 수 있습니다.


재미 있겠다. 실제로 무슨 일이 일어나고 있는지 내 머리를 얻기 위해 소프트웨어를 시험해야 할 것입니다. 웹 페이지는 그 방법을 너무 자세하게 설명하지 않는 것 같습니다. 내가 알 수 있듯이, 좀 더 전통적인 방식으로 생성 된 필터 프로토 타입의 주파수 응답을 조작하는 일종의 하이브리드처럼 보입니다. 그 맞습니까? 나는 당신이 말하는 것이 옳다고 생각합니다. 응답을 정의하는 방법에주의를 기울여야합니다. 그렇지 않으면 수많은 탭이 생길 것입니다. AFAIU, 이것은 주파수 응답만으로 필터를 설계 할 때 큰 문제입니다.
bryhoyt

1

AFAIK 이것을 "순진 필터링 방식"이라고합니다. 주파수 공간의 특정 지점에서 스펙트럼 내용에 영향을 줄 수 있지만 해당 지점 사이의 주파수 내용에 유용한 것은 없습니다. 적절한 FIR 필터를 설계하는 경우 실제로 해당 주요 지점 사이의 지점도 고려해야하며 이러한 필터는 첫 번째 지점보다 훨씬 좋습니다.

감사합니다. Bul.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.