FIR 필터 설계 : Window vs Parks McClellan 및 Least Squares


21

저역 통과 필터의 FIR 필터 설계를 위해 Parks-McClellan (여기서는 PMcC로 약칭 함) 또는 최소 제곱 알고리즘에 비해 윈도우 접근 방식을 사용하는 이점이 있습니까? 오늘날의 계산 능력을 통해 알고리즘 자체의 복잡성이 요인이 아니라고 가정하십시오.

이 질문은 PMcC를 최소 제곱과 비교하는 것이 아니라 구체적으로 해당 알고리즘 대신 창 FIR 설계 기법을 사용해야하는 이유가 있거나 해당 알고리즘에 의해 사용되지 않고 교훈적인 목적으로 강등 된 설계를 필터링하는 창 기법입니까?

아래는 동일한 수의 탭을 사용하여 Hamming 창을 Least-Squared에서 선호하는 디자인 방식과 비교 한 비교입니다. 나는 최소 제곱 방식의 통과 대역을 해밍 윈도우의 통과 대역과 밀접하게 일치시키기 위해 통과 대역을 넓혔으며,이 경우 최소 제곱이 성능을 능가 할 것임을 분명히 알 수있었습니다 (중단 대역 제거가 훨씬 더 많음). 모든 창 에서이 작업을 수행하지 않았으므로 PMcC 및 최소 제곱보다 성능이 뛰어나거나 윈도우 방식이 선호되는 FIR 저역 통과 필터에 대한 다른 응용 프로그램이 있는지에 대한 질문으로 이어집니다.

여기에 이미지 설명을 입력하십시오


2
나는 Kaiser- windowed sinc firpm()와 and를 비교하는 것이 좋습니다 firls().
robert bristow-johnson 2012

답변:


16

나는 윈도 잉 필터 설계 방법이 더 이상 가장 중요한 설계 방법 중 하나가 아니라는 점에 동의합니다. 실제로 역사적인 이유로 인해 전통적인 교과서에서 과도하게 표현 될 수 있습니다.

그러나 특정 상황에서는 그 사용이 정당화 될 수 있다고 생각합니다. 계산 복잡성이 더 이상 문제가되지 않는다는 데 동의하지 않습니다. 플랫폼에 따라 다릅니다. 데스크탑 컴퓨터에 앉아 필터를 설계 할 때 실제로 복잡성에 대해 걱정할 필요가 없습니다. 그러나 특정 플랫폼과 설계를 준 실시간으로 수행해야하는 상황에서는 계산 복잡성이 문제가되고, 훨씬 복잡한 최적의 기술보다 단순한 차선책 디자인 기법이 선호됩니다. 예를 들어 필자는 필터 (beamformer)를 즉석에서 다시 설계해야하는 빔 포밍 시스템에서 작업 한 적이있어 계산 복잡성이 실제로 문제가되었습니다.

또한 많은 실제 상황에서 최적 설계와 차선책 설계의 차이에 대해 걱정할 필요가 없다고 확신합니다. 양자화 된 계수와 산술 연산의 양자화 된 결과와 함께 고정 소수점 산술을 사용해야하는 경우 더욱더 사실이됩니다.

또 다른 문제는 최적의 필터 설계 방법과 그 구현의 수치 안정성입니다. Parks-McClellan 알고리즘 ( 내가 사용한 구현 )이 단순히 수렴하지 않은 몇 가지 사례를 보았습니다 . 이는 사양이 의미가없는 경우에 발생하지만 완전히 합리적인 사양에서도 발생할 수 있습니다. 선형 방정식 시스템을 해결해야하는 최소 제곱 설계 방법에 대해서도 마찬가지입니다. 이러한 상황에서 윈도 잉 방법은 결코 실망시키지 않습니다.

창 방법과 최소 제곱 디자인 간의 비교에 대한 언급 :이 비교는 창 방법보다 최소 제곱 방법의 일반적인 우수성을 보여주지 않는다고 생각합니다. 첫째, 정지 대역 감쇠를 살펴 보는 것 같습니다. 이는 두 가지 방법 중 하나에 대한 설계 목표가 아닙니다. 윈도 잉 방법은 어떤 의미에서도 최적이 아니며 최소 제곱 설계는 정지 대역 에너지를 최소화하고 정지 대역 리플 크기에 대해서는 전혀 신경 쓰지 않습니다. 볼 수있는 것은 윈도우 설계의 통과 대역 에지가 최소 제곱 설계 중 하나보다 큰 반면 정지 대역 에지는 더 작다는 것입니다. 결과적으로, 윈도 잉 (winding)에 의해 설계된 필터의 전이 대역 폭은 더 작아서 정지 대역 리플이 더 높아질 것이다. 전이 대역 폭의 차이는 작을 수 있습니다. 그러나 필터 속성은이 매개 변수에 매우 민감합니다. 밴드 에너지를 막을 때 최소 제곱 필터가 다른 필터보다 성능이 뛰어나다는 것은 의심의 여지가 없지만 리플 크기만큼 쉽게 볼 수는 없습니다. 그리고 그 차이가 실제로 실제 응용에서 변화를 가져올 지 여부는 여전히 의문입니다.

그러한 비교가 종종 그들이 바라는 방식으로 보일 수 있음을 보여 드리겠습니다. 아래 그림에서 Matlab / Octave 기능 firls.m(파란색)으로 설계된 최소 제곱 최적의 저역 통과 필터를 Kaiser 창 (빨간색)을 사용하여 창 방법으로 설계된 저역 통과 필터와 비교합니다.

여기에 이미지 설명을 입력하십시오

그림으로부터, 윈도 잉에 의해 설계된 필터가 최소 제곱 최적 필터보다 약간 우수하다는 결론을 내릴 수도 있습니다. 물론 "더 나은"정의조차하지 않았기 때문에 이것은 의미가 없습니다. 최소 제곱 필터 평균 제곱 근사 오차가 더 작아야합니다. 그러나 그림에서 직접 볼 수는 없습니다. 어쨌든 이것은 비교를 할 때 매우 신중하고 명확해야한다는 나의 주장을 뒷받침하는 것입니다.

요컨대, DSP 학생들에게 순수하게 교훈적인 이유를 배우는 데 도움이되는 것 외에도 1970 년대 이후 기술 발전에도 불구하고 특정 실제 시나리오에서 윈도 잉 방법의 사용이 정당화 될 수 있다고 생각합니다. 곧 바뀝니다.


좋은 답변 Matt Couple 부부의 설명 / 질문 : 복잡성과 관련하여 실제 사례를 생각해 낼 수 있습니까? 나는 이것이 구현에 문제가 있음을 알 수 있지만 계수를 생각해 낼 때 열등한 플랫폼에서 디자인을 할 이유를 생각할 수 없다 (따라서 내 질문). 비교에 관해서는, 최소 제곱이 분명히 좋습니다. 동일한 리플과 전환을 위해 더 나은 정지 대역 감쇠를 얻습니다. 통과 대역 폭을 증가시켜 둘을 맞추 었습니다. 가장자리는 내가 일치하는 것을 멈추었지만 결론에 더 가깝게 일치 할 수 있기 때문에 약간 더 큽니다.
Dan Boschen

2
@ DanBoschen : 물론 대부분의 경우 디자인은 오프라인에서 이루어지며 복잡성은 문제가되지 않습니다. 그러나 필자는 실시간으로 필터를 재 설계해야하는 응용 프로그램 (빔 포밍 응용 프로그램)을 살펴 봤으므로 복잡성에 문제가 있습니다.
Matt L.

1
그리고 창 디자인과 비교하여 최적의 디자인으로 탭 수를 실제로 절약하는 것과 관련하여 내가 본 결과는 종종 실망합니다. 종종 하나 또는 두 개의 탭으로 많은 구현에서 큰 차이가 없습니다.
Matt L.

1
오프라인 디자인의 경우 수치 안정성이 문제가되지 않는 경우 (특정 디자인의 경우 일반적으로 문제가 남아 있음) 윈도우는 유용하지 않습니다. 그러나 일반적으로 항상 오프라인 디자인에 의존 할 수는 없으며, 더 중요한 것은 수치 문제를 항상 피할 수는 없습니다. 그래서 나는 '단종'이라는 단어가 여전히 너무 강하다고 생각합니다.
Matt L.

3
매우 잘했다. 기억해야 할 것은 엔지니어링은 요구 사항을 충족하기에 충분한 구현을 찾는 것입니다. window 메소드는 구현하기 쉽고 항상 작동합니다. 다른 메소드는 더 복잡한 구현이 있으며 작업하기 까다로운 경우가 있습니다. 필자는 필터를 즉석에서 설계해야하는 여러 시스템과 함께 작업했으며 이러한 상황에서는 창 방법을 사용합니다.
Jason R

7

Windowed Sinc 필터는 관련 FIR 필터를 실행할만큼 강력한 프로세서에서 즉시 적응 형으로 생성 될 수 있습니다. 한정된 시간 내에 윈도우 드 Sinc 필터를 생성 할 수 있습니다.

일부 간단한 윈도우 형 Sinc 필터의 생성은 일부 불투명 한 툴박스의 블라인드 사용과 비교 하여 몇 줄의 코드 로 완벽하게 설명 (및 맬웨어 등 검사) 될 수 있습니다 .

PMcC 필터 생성기를 처음부터 코딩하는 데 필요한 것과 비교하여 윈도 잉 된 Sinc 필터를 설명하는 데 필요한 전제 조건이 적은 수학 배경이 필요합니다.

PMcC 필터의 주파수 응답에서 동일한 리플은 시간 영역에서 단순한 윈도우 필터로 생성 된 아티팩트와 다른 (아마 바람직하지 않은) 아티팩트를 유발할 수 있습니다.


1
예, 좋은 점 @ hotpaw2, 통과 대역 리플은 심볼 간 간섭 (트레일 링 및 리딩 에코)으로 이어집니다. 감사합니다
Dan Boschen

2
2003 년 comp.dsp의 Parks-McClellan pre 및 post echo 에 대해 이야기했습니다 . Alexey Lukin은 f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)Octave에서 실행되는 최소 MATLAB 예제를 게시했습니다 . 매우 가파른 필터를 사용하면 잔물결이 코사인과 유사 할 정도로 규칙적 일 수 있습니다. 주파수 도메인 코사인에 해당하는 시간 도메인은 두 개의 충동 에코입니다.
Olli Niemitalo

6

여기서는 창문 디자인의 장점과 Parks-McClellan의 이점을 얻는 요령을 보여 드리겠습니다.

하프 밴드, 쿼터 밴드 등의 필터 윈도 잉은 스케일링 된 sinc 함수의 시간 영역 0을 유지하는데, 이는 프로토 타입 이상적인 저역 통과 필터입니다. 계수가 0이면 필터의 계산 비용이 줄어 듭니다. 반대 역 필터의 경우, 창 디자인은 중간 계수 (짝수로 간주 됨)를 제외한 모든 짝수 계수 0의 필터를 제공합니다.

아연
그림 1. 계수 2로 수평으로 확장 된 Sinc 기능은 게인이 2 인 프로토 타입 반대 역 저역 통과 필터로, 계수 2의 업 샘플링에 적합합니다.

그러나 Parks–McClellan / Remez는 단일 이득 통과 대역 만 정의 된 짝수 개의 탭이있는 필터를 사용하여 동일한 이점을 제공하도록 속일 수 있습니다. 얻어진 계수는 더 긴 필터의 홀수 계수로 사용됩니다. 더 긴 필터의 중간 계수는 1로 설정되고 다른 짝수 계수는 0으로 설정됩니다.이 필터는 통과 대역에서 게인이 2이고 통과 및 정지 대역에서 대칭 리플이 있습니다. 파이썬에서 :

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
c0 = signal.remez(14, [0, 3500.0/8000], [1])
c = np.zeros(c0.size*2-1)
c[0::2] = c0
c[c0.size-1] = 1
freq, response = signal.freqz(c)
plt.semilogy(freq/(2*np.pi), np.abs(response))
plt.show()
plt.plot(range(-c0.size+1, c0.size, 1), c, 'x')
plt.grid(True)
plt.show()

그림 2.
그림 2. Python을 사용하여 간접적으로 설계된 하프 밴드 필터의 계수 scipy.signal.remez.

그림 3.
그림 3.를 사용하여 간접적으로 설계된 하프 밴드 필터의 진폭 주파수 응답 플롯 scipy.signal.remez.

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