푸리에 변환을하기 전에 왜 신호를 제로 패드해야합니까?


77

에 대한 답변에서 이전 질문 , 그것은 사람이해야한다고 주장했다

입력 신호를 제로 패드하십시오 (파의 절반 이상이 "공백"이되도록 끝에 0을 추가하십시오)

그 이유는 무엇입니까?


그것은 당신이하는 일에 달려 있습니다. 이것은 내 대답에 대한 의견이 될 수 있습니다. 나는 그것에 대한 설명을 추가했다.
endolith

@endolith : 처음에는 의견으로 생각했지만 일반적인 질문 일지 모릅니다. 좋은 답변이 어딘가에 의견에 묻혀 있으면 안타깝습니다. 동의하지 않으면이 질문을 삭제하겠습니다.
Jonas

9
매우 일반적인 질문입니다. 제로 패드를 사용하여 무언가를 2의 거듭 제곱으로 만들 수 있습니다. 원형 패드를 비 원형 변환처럼 작동하도록 제로 패드를 사용할 수 있습니다. 신호를 리샘플링하거나 주파수 분해능 등을 변경하는 등의 작업을 수행 할 수 있습니다.
endolith

답변:


82

제로 패딩을 사용하면 더 긴 FFT를 사용할 수 있으므로 더 긴 FFT 결과 벡터가 생성됩니다.

FFT 결과가 길수록 더 많은 주파수 구간이 주파수 간격이 더 가깝습니다. 그러나 그들은 본질적으로 원래 데이터의 짧은 0으로 채워지지 않은 FFT의 고품질 Sinc 보간과 동일한 결과를 제공 할 것입니다.

이로 인해 추가 보간없이 플롯 할 때 매끄럽게 보이는 스펙트럼이 생길 수 있습니다.

이 보간법은 인접 주파수 또는 인접 주파수의 분해 또는 분해에 도움이되지 않지만 스펙트럼에서 중요한 인접 신호 또는 노이즈가없는 단일 분리 주파수의 피크를 시각적으로 쉽게 분석 할 수 있습니다. . 통계적으로, FFT 결과 빈의 밀도가 높을수록 피크 크기 빈이 임의의 고립 된 입력 주파수 정현파의 주파수에 가까워지고 추가 보간 (포물선 등)이 없을 가능성이 높아집니다.

그러나 본질적으로 DFT / FFT 이전의 제로 패딩은 많은 수의 포인트를 보간하는 계산 효율적인 방법입니다.

교차 상관, 자동 상관 또는 컨볼 루션 필터링을위한 제로 패딩은 컨벌루션 결과 (원형 컨볼 루션으로 인해)를 혼합하지 않는 데 사용됩니다. 선형 컨벌루션의 전체 결과는 두 입력 벡터 중 하나보다 깁니다. 이 더 긴 컨볼 루션 결과의 끝을 놓을 장소를 제공하지 않으면 FFT 빠른 컨볼 루션은 그 결과를 혼합하여 원하는 결과를 얻을 수 있습니다. 제로 패딩은 더 긴 결과를 혼합 할 수있는 다발 제로를 제공합니다. 그리고 0의 벡터로만 혼합 / 합산 된 것을 언 믹싱하는 것이 훨씬 쉽습니다.


12
마지막 단락은 원래 질문에 대한 핵심 답변이지만 더 명확하게 언급 할 수 있다고 생각합니다. 주파수 영역에서 프로세스를 구현하면 순환 컨볼 루션 / 상관 대신 선형 을 생성하도록 상관 관계 또는 컨벌루션의 맥락에서 제로 패딩을 수행 할 수 있습니다 . 그러나 겹침 저장 및 겹침 추가 알고리즘과 같이 측면에서 약간의 부기 작업을 수행하려는 경우에는 그렇게하지 않아도됩니다.
Jason R

4
@Jason R : 사실, 둘 다 순환 컨볼 루션입니다. 정상 (정지되지 않은) FFT는 모든 곱셈을 수행하고 결과의 일부를 감 쌉니다. 충분히 제로 패딩 된 경우 모든 곱셈과 덧셈의 값이 0이므로 아무도 원을 계산하고 감싸는 아무것도 신경 쓰지 않습니다.
hotpaw2

9
과연; 두 신호의 DFT의 곱셈은 항상 원형 컨벌루션을 구현합니다. 나는 다르게 말 했어야합니다 : 당신은 순환 적으로 순환하여 얻은 결과가 선형으로 얽히면 얻을 수있는 것과 동일하다는 것을 보장하기 위해 하나의 신호 끝에 0을 채 웁니다 (선형 컨볼 루션이 원하는 것으로 가정합니다. 보통).
Jason R

27

시간 영역 신호를 제로 패드로 결정하기 전에 고려해야 할 사항이 몇 가지 있습니다. 신호를 전혀 제로 채울 필요가 없습니다!

1) 주파수 영역에서 더 나은 해상도를 얻으려면 시간 영역 데이터 (제로 패딩이 아님)를 늘리십시오.

2) FFT 빈을 더 잘 정의하고 싶지만 더 이상 실제 해상도를 사지 않으려면 시간 도메인 신호 길이 (제로 패딩)를 넘어 FFT 포인트 수를 늘리십시오. 패드를 사용하여 2 개의 FFT 점수를 얻을 수도 있습니다.

3) FFT 포인트 (이전 포인트)를 조정할 때 주파수 포인트가 원하는 위치에 있는지 확인하십시오. 포인트의 간격은 . 여기서 는 샘플링 주파수이고 은 FFT 포인트의 수입니다.f s Nfs/NfsN

http://www.bitweenie.com/listings/fft-zero-padding/ 에서 이러한 요점을 보여주는 멋진 인물이 있습니다 .

마지막으로 언급 할 사항 : 시간 영역에서 신호를 제로 패딩하고 윈도 잉 기능을 사용하려면 제로 패드 전에 신호를 윈도 잉해야합니다. 제로 패딩 후 창 기능을 적용하면 창에서 달성해야 할 작업을 수행 할 수 없습니다. 보다 구체적으로, 신호를 0으로 부드럽게 전환하는 대신 신호에서 0으로 급격하게 전환합니다.


8

일반적으로 DFT 이전의 제로 패딩은 변환 된 도메인에서 보간 또는 더 자주 샘플링하는 것과 같습니다.

다음은 반대 작동 방식에 대한 간단한 시각화입니다. 대역 제한 신호를 더 높은 속도로 시간에 샘플링하면보다 '스쿼시'스펙트럼, 즉 양 끝에 0이 더 많은 스펙트럼이 나타납니다. 즉, DFT 후 주파수를 단순히 제로 패딩 한 다음 제로 패딩 된 결과를 IDFT하여 시간에 따라 더 많은 샘플을 얻을 수 있습니다.

제로 패딩이 제 시간에 발생하면 동일한 효과가 반대로 유지됩니다. 신호가 대역 제한되고 적어도 나이키 스트 속도로 샘플링되는 한 완벽한 신호 재구성이 가능하기 때문입니다.

'해상도'라는 용어는 정의 방법에 따라 다릅니다. 나를 위해, 그것은 시간이나 주파수에서 인접한 두 관측 지점이 얼마나 안정적으로 (통계적으로) 구별 될 수 있는지를 의미합니다. 이 경우 해상도는 실제로 스펙트럼 누출로 인한 DFT 크기에 따라 달라집니다. 즉, 창 크기가 작을수록 변환 된 신호가 더 흐려 지거나 번지 며 그 반대도 마찬가지입니다. 얼마나 자주 샘플링하거나 '정의'라고 부르는 것과 다릅니다. 예를 들어, 높은 속도 (고화질)로 샘플링 된 이미지가 매우 흐리지 만 여전히 낮은 속도의 샘플링보다 더 많은 정보를 얻을 수는 없습니다. 따라서 요약하면 제로 패딩은 이전보다 더 많은 정보를 얻지 못하므로 해상도를 전혀 향상시키지 않습니다.


6

시간 영역 샘플을 분리하는 데 사용되는 윈도우 기능의 스펙트럼에 관심이 있다면, 제로 패딩은 윈도우 기능의 주파수 분해능을 증가시킵니다.

x(t)w(t)w(t)X(f)W(f)

x(t)X(f), 피크 및 제로 크로싱 이외의 장소에 일부 샘플이 표시되어 결과 스펙트럼에서 동기화 기능의 모양이 나타납니다. 제로 패딩은 어떤 용도로 사용됩니까? 그것은 일반적으로 윈도우 신호의 이산 변환의 본질을 드러내는 데 교육용으로 사용됩니다. 실제로는 반송파를 타는 절연 엔벨로프의 스펙트럼 모양에 관심이있는 경우에 유용 할 수 있습니다.


4

푸리에 변환 전후에 수행되는 프로세스에 따라 다른 이유가있을 수 있습니다. 가장 일반적인 이유는 결과 변환에서 더 높은 주파수 해상도를 달성하는 것입니다. 다시 말해, 변환에 사용 된 샘플 수가 많을수록 결과 전력 스펙트럼의 이진 폭이 좁아집니다. binwidth = sample_frequency / transform_size (종종 창 크기라고 함)를 기억하십시오. 이를 통해 변환 크기를 늘리면 binwidth가 줄어 듭니다 (= 더 나은 주파수 해상도). 제로 패딩은 신호에 새로운 정보를 제공하지 않고 변환 크기를 늘리는 방법입니다.

그렇다면 제로 패딩없이 더 큰 변형을 취하는 것이 어떻습니까? 같은 효과를 얻지 못합니까? 좋은 질문. 많은 경우에 짧은 시간 푸리에 변환 (stft)을 사용하는 시간 도메인 데이터 스트림을 분석 할 수 있습니다. 여기에는 주파수 스펙트럼의 변화를 특성화하기 위해 필요한 시간 분해능에 따라 N 개의 샘플마다 변환하는 것이 포함됩니다. 여기에 문제가 있습니다. 창이 너무 크면 시간 해상도가 너무 작아지고 창이 너무 작아 주파수 해상도가 떨어집니다. 그런 다음 해결책은 작은 시간 도메인 창을 사용하여 좋은 시간 해상도를 제공 한 다음 제로 패딩하여 좋은 주파수 해상도를 제공하는 것입니다. 이것이 당신에게 유용하기를 바랍니다

업데이트
나는 이것을 잘 설명하지 않았다. 더 잘 설명 했어야 했어요 윈도우 변환을 참조하면 실제로 '실제'더 큰 주파수 분해능은 얻지 못하지만 시각화 목적으로 (눈으로 전력 스펙트럼을 읽음)보다 명확한 결과를 제공 할 수 있습니다. 임계 샘플링 속도를 사용하여 각 사이드 로브는 단일 빈을 차지하며, 그래프 기법에 따라 오해의 소지가 있습니다. 제로 패딩은 더 드러날 수있는 보간 주파수 스펙트럼을 제공합니다. 또한 주파수 추정에 간단한 피크 선택 방법을 사용하는 경우 제로 패딩의 스펙트럼 보간 효과는 메인 로브의 실제 피크에 가까운 스펙트럼 샘플을 제공합니다. 이 링크는 유용한 다이어그램을 제공합니다. http://www.dsprelated.com/dspbooks/sasp/Practical_Zero_Padding.html


9
이 답변은 정확하지 않습니다. 제로 패딩은 주파수 분해능을 전혀 향상시키지 않습니다. 더 작은 변환의 출력간에 보간됩니다. 제로 패딩은 더 작은 변환에서와 동일한 대역폭을 가진 더 많은 주파수 빈을 추가하는 것으로 생각할 수 있습니다. 따라서 필터 뱅크 관점에서 통과 대역이 겹칩니다.
Jason R

1
이해하는 데 도움이되는 경우 : 반대의 작업을 수행 할 수도 있습니다. 신호의 FFT를 취한 다음 결과를 0으로 채운 후 역 FFT. 원래 신호를 보간하는 효과가 있습니다. 물론 신호는 여전히 동일한 나이키 스트 대역폭을 가진 동일한 신호입니다. 보간은 원래 있던 것보다 더 높은 주파수 정보를 제공하지 않습니다.
endolith

1
@Jason R-당신 말이 맞아요, 내 대답은 오도 된 것입니다. 원래 게시물에서 위를 명확히하려고 시도했습니다. 제로 패딩은 주파수 분해능을 증가 시킨다고 말해서는 안됩니다.
Dan Barry

2

나는 이전의 좋은 반응에서 언급되지 않았으므로 제로 패딩에 대한 다음과 같은 중요한 이유를 추가 할 것입니다.

기수 -2 알고리즘은보다 효율적이므로 다음 2의 거듭 제곱 (또는 경우에 따라 기수 -4의 경우 거듭 제곱)으로 제로 패딩하거나 큰 주요 요소를 크게 피하면 실시간 성능을 향상시킬 수 있습니다. 또한 FFT를 분석에 사용하는 경우 FIR의 주파수 응답을 결정하는 것과 같이 DTFT 샘플을 계산하기 위해 제로 패딩을 수행하는 경우가 종종 있습니다. fft ([1 1 1])과 fft ([1 1 1 1], 512) 이는 freqz ([1111])와 동일합니다.

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