MATLAB “s filtfilt
순방향 역방향 필터링 (예 : 필터링, 신호 역방향, 다시 필터링 한 다음 다시 역방향)을 수행합니다.이 작업은 위상 지연을 줄이기 위해 수행 된 것 같습니다. 이러한 필터링을 사용하는 장점 / 단점은 무엇입니까? 필터 순서의 효과적인 증가).
filter
대신 항상 filtfilt
를 사용하는 것이 더 나을까요? 즉, 순방향 필터링 만)이 기능을 사용해야하고 사용해서는 안되는 응용 프로그램이 있습니까?
댓글
- ' 오디오에 0 위상 필터링을 사용하지 마십시오. " 사전 벨소리 ". 최소 위상 필터링이 더 자연 스럽습니다. ccrma.stanford.edu/~jos/filters/Linear_Phase_Really_Ideal.html
답변
주파수 영역에서 가장 잘 볼 수 있습니다. $ x [n] $이 입력 시퀀스이고 $ h [n] $이 필터의 임펄스 응답이면 첫 번째 필터 통과의 결과는 다음과 같습니다.
$$ X (e ^ {j \ omega}) H (e ^ {j \ omega}) $$
$ X (e ^ {j \ omega}) $ 및 $ H (e ^ {j \ omega}) $ 각각 $ x [n] $ 및 $ h [n] $의 푸리에 변환입니다. 시간 반전은 주파수 영역에서 $ \ omega $를 $-\ omega $로 대체하는 것에 해당하므로 시간 반전 후에는
$$ X (e ^ {-j \ omega}) H (e ^ {-j \ omega}) $$
두 번째 필터 패스는 $ H (e ^ {j \ omega}) $ :
$$ X (e ^ {-j \ omega}) H (e ^ {j \ omega}) H (e ^ {-j \ omega}) $ $
시간 반전 후 최종적으로 출력 신호의 스펙트럼을 제공합니다.
$$ Y (e ^ {j \ omega}) = X (e ^ {j \ omega }) H (e ^ {j \ omega}) H (e ^ {-j \ omega}) = X (e ^ {j \ omega}) | H (e ^ {j \ omega}) | ^ 2 \ tag {1} $$
실수 필터 계수의 경우 $ H (e ^ {-j \ omega}) = H ^ {*} (e ^ {j \ omega}) $가 있기 때문입니다. 방정식 (1)은 주파수 응답이 $ | H (e ^ {j \ omega}) | ^ 2 $, whi 인 필터로 필터링하여 출력 스펙트럼을 얻었음을 보여줍니다. ch는 순전히 실수 값입니다. 즉, 위상이 0이므로 위상 왜곡이 없습니다.
이게 이론입니다. 실시간 처리에서는 입력 블록의 길이에 해당하는 지연 시간을 허용하는 경우에만 시간 반전이 작동하기 때문에 상당한 지연이 있습니다. 그러나 이것은 위상 왜곡이 없다는 사실을 바꾸는 것이 아니라 단지 출력 데이터의 추가 지연 일뿐입니다. FIR 필터링의 경우이 접근 방식은 새 필터 $ \ hat {h를 정의하는 것이 좋을 수 있기 때문에 특별히 유용하지 않습니다. } [n] = h [n] * h [-n] $ 일반 필터링으로 동일한 결과를 얻습니다.이 방법을 IIR 필터와 함께 사용하는 것이 더 흥미 롭습니다. IIR 필터는 영 위상 (또는 선형 위상, 즉 순수 지연).
요약 :
-
IIR 필터가 있거나 필요하고 위상 왜곡을 제로화하려는 경우 처리 지연은 문제가되지 않습니다. 이 방법은 유용합니다.
-
처리 지연이 문제인 경우 사용하지 않아야합니다.
-
FIR 필터가있는 경우 ,이 방법을 사용하는 것과 동일한 새로운 FIR 필터 응답을 쉽게 계산할 수 있습니다. FIR 필터를 사용하면 항상 정확한 선형 위상을 실현할 수 있습니다.
댓글
-
maximum-aposteriori-estimation
.maximum-a-posteriori-estimation
로 이름을 변경해 주시겠습니까? 실수로a
뒤에있는-
를 잊어 버렸습니다. 감사합니다.
답변
이 동영상을 찾았습니다. 매우 유용합니다 (Matt의 답변에 대해 자세히 설명합니다).
다음은 동영상의 몇 가지 핵심 아이디어입니다.
- 위상 왜곡은 발생하지 않지만 인과 적이 지 않은 필터가 생성됩니다. 즉, 데이터가 수집 될 때 필터링되는 경우 옵션이 아닙니다 (후 처리 할 수있는 저장된 데이터에만 유효 함). .
- 비인과 필터를 구현하면 과도 신호가 앞뒤로 흐려집니다 (예 : 2dB 리플을 원하는 경우 필터를 사용하여 앞뒤로 실행한다는 것은 “각각이 1dB를 갖기를 원한다는 의미입니다.)
- 이산 시간 푸리에 변환의 시간 반전 속성을 사용합니다.
- FILTFILT로 인한 유효 주파수 응답은 한 방향의 크기를 제곱 한 것입니다. 입력 신호,
x[n]
를 가져 와서 필터링하고, 결과를 반대로하고, 다시 필터링하고, 다시 반대로합니다 (시간 반전 단계에서는 모든 데이터를 사용할 수 있어야 함).