FFT가 스펙트럼을 수정하지 않고 역 FFT보다 시간 영역에서 윈도우를 사용하는 이유


16

DSP는 신호 부분의 FFT를 사용하여 수행되고, FFT에서 나온 샘플을 수정하고 (신호 + 노이즈의 스펙트럼을 나타 내기 때문에) 원하지 않는 신호를 제거하고 시간을 얻기 위해 역 FFT를 수행하는 것보다 필터링 된 신호의 도메인 표현 (노이즈가 제거되었습니다). 그러나 이것은 완료되지 않으며 대신 창 기능을 사용하여 시간 영역에서 모든 작업을 수행합니다. 왜?

주파수 영역에서 신호의 스펙트럼과 윈도우 함수의 주파수 응답을 비교하는 것보다 시간 영역에서 윈도우 함수를 곱하면 어떻게 작동합니까? 신호에 필터의 주파수 응답을 곱하여 주파수 영역에서 모든 작업을 수행했다면 필터링하는 것과 같습니다. 그러나 여기서는 window를 사용하는 대신 시간 도메인의 모든 작업을 수행합니다.

-> 내 혼란이 어디에서 오는지 보자. 저역 통과 필터와 같은 아날로그 필터의 경우 주파수 응답과 같은 펄스가 있습니다. 신호를 필터링 할 때 신호의 스펙트럼에 펄스 주파수와 같은 필터의 주파수 응답을 효과적으로 곱합니다. 이것은 컷오프 이상의 신호에서 모든 주파수를 0으로 줄입니다. 이것은 저역 통과 필터가 본질적으로 작동하는 방식입니다. 디지털 필터도 마찬가지입니까?


답변:


7

윈도 잉은 스펙트럼 누출을 줄입니다.

당신이 밖으로 시작 말해 . 기간은 분명히 2 π / ω 0 . (와이)=코사인(ω0)2π/ω0

그러나 아무도 기간이 있음을 이야기하지 않는 경우 당신은 맹목적으로 범위 선택 [ 0 , 1.8 π / ω 0 ] 당신이 때문에 모든 가짜 다른 주파수에서 주파수 성분을 관찰하며,이 잘린 파형의 FFT를 취할 주기를 위해 잘린 파형을 복사하여 붙여 넣어 생성 된 점프는 원래 신호에 실제로 존재하지 않습니다. 이는주기 간 전환을 부드럽게 캡처하지 않는 운이 잘리지 않는 아티팩트입니다. ω = ω 0에 스펙트럼 성분이 하나만있는 것이 이상적 입니다. 2π/ω[0,1.8π/ω0]ω=ω0

시간 영역에서 윈도 잉의 목적은 이러한 가상의 스펙트럼 성분을 모두 줄이는 것입니다.


12

DFT 계산은 입력 신호의 무한주기 확장에서 작동하기 때문에 윈도 잉이 사용됩니다. 많은 실제 신호가 전혀 주기적이지 않거나 실제주기와 다른 간격으로 샘플링되기 때문에 반복 간격 사이의 인공적인 '가장자리'에서 누설 이라고하는 잘못된 주파수 성분을 생성 할 수 있습니다 . 먼저 시간 도메인 신호에 양쪽 끝에 0이되는 윈도 잉 기능을 곱하면 무한주기 확장에서 반복 된 간격 사이에 부드러운 전환이 만들어 지므로 DFT를 사용할 때 이러한 인공 주파수 성분의 생성이 완화됩니다.

백서 에서는이 현상에 대해보다 심도있게 살펴볼뿐만 아니라 다양한 윈도우 기능의 영향에 대한 통찰력을 제공합니다.


11

두 가지 다른 작업을 혼란스럽게 생각합니다.

시간 영역에서의 윈도 잉은 @sam으로 설명되므로 반복하지 않습니다. 그러나 필터링을 수행하기위한 윈도우 화는 수행되지 않습니다. 신호의 FFT에 필터 주파수 응답을 곱하여 필터링하는 것은 많은 상황에서 전적으로 합리적이며 실제로 수행됩니다. 필터링에 대한 대안은 시간 영역 컨벌루션 (윈도우와는 다름)입니다. 이것은 모든 것이 저장되고 변환되기를 기다리지 않고 측정되므로 '실시간'으로 신호를 조작하는 것과 같은 고유 한 장점이 있습니다.

따라서 '디지털 필터와 동일한 기능을 수행하는 이유는 무엇입니까?'


또한 질문에 컨볼 루션과 윈도우가 섞여 있다는 인상을 받았습니다. 잘 지적했습니다!
에는 Deve

11

이 질문에 대한 몇 가지 좋은 답변이 있습니다. 그러나 한 가지 중요한 점이 완전히 명확하지 않다고 생각합니다. 문제의 한 부분은 신호의 FFT에 원하는 필터 응답을 곱하지 않는 이유입니다. 예를 들어, 신호를 저역 통과 필터링하려면 원하는 차단 주파수보다 높은 모든 주파수 성분을 간단히 제로화 할 수 있습니다. 이것은 실제로 FIR 필터를 설계하기위한 잘 알려진 주파수 샘플링 방법의 간단한 적용입니다. 문제는 FFT에 의해 계산 된 이산 주파수 성분을 제로화 할 수 있다는 것입니다. 우리는이 개별 주파수들 사이에서 일어나는 일을 통제 할 수 없습니다. 이러한 간단한 필터링 버전은 (FFT 길이에 관계없이) 저지 대역 감쇠가 불량한 것으로 나타났습니다. MATLAB 또는 옥타브에 액세스 할 수있는 경우

x=2*rand(1024,1)-1;
X=fft(x);
Y=X.*[ones(200,1);zeros(625,1);ones(199,1)]; % lowpass filter
y=real(ifft(Y)); % real() just to remove numerical errors
Y=fft(y,4096);
plot(20*log10(abs(Y(1:2048)))),axis([0,2048,-30,50])

6

사각형이 아닌 창을 사용하지 않으면 주파수 영역 필터링을 수행하기 전에 FFT 결과가 기본 사각형 창의 변환 (주기적인 Sinc)과 이미 관련되어 있습니다. 예를 들어 두 개의 필터가 적용되며 그중 하나는 원하지 않을 수 있습니다.

FFT 및 주파수 도메인 필터링 이전에 시간 도메인에서 윈도우를 사용하면 직사각형 윈도우로 수행되는 필터링 (소위 "누설")을 대체하므로 원치 않는 필터 컨볼 루션이 추가로 발생하지 않습니다.

이를 수행하는 다른 방법은 연속 윈도우에서 오버랩 추가 또는 오버랩 저장 방법을 사용하는 것입니다. 여기서 하나의 직사각형 윈도우의 효과는 인접한 윈도우와 유사한 효과로 취소됩니다.


5

시간 도메인의 창 때문에

  • 우리는 창의 가장자리에서 0을 보장 할 수 있습니다
  • 윈도우 함수는 공간 영역에서 훌륭한 분석 표현을 가지고 있습니다.
  • 많은 창 함수에는 근사하기 어려운 이상한 모양의 스펙트럼이 있습니다.
  • 유한 한 수의 샘플 만 필요합니다 (신호 스트림이 입력 될 때 윈도우를 수행 할 수 있음)

예를 들어 wikipedia에서

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

윈도 잉 기능이 0으로 강제 종료되는 것은 스펙트럼 영역에서 매우 느리게 0으로가는 사이드 로브가 있음을 의미합니다. 이 제약 조건을 제거하면 가우시안 필터와 같이 공간 및 스펙트럼 영역 모두에서 컴팩트 한 기능을 가질 수 있습니다. 즉, 스펙트럼 도메인을 통해 필터링 할 수 있지만 전체 신호를 알아야합니다.

전체 신호가 이미 있다면 다른 대안은 웨이블릿 을 사용하는 것입니다


2

나는 같은 질문을했다.

컨벌루션은 시간 도메인 신호의 적분 / 누적 합에 창을 곱한 값입니다. 이것은 "윈도우 된"시간 도메인 신호와 혼동되어서는 안됩니다.

의 끝 기사 많은 도움 되었습니다.

기본적으로 실제 신호는 유한하며 실수로 실제 신호를 차단하면 주파수 영역에서 원하지 않는 주파수 / 유물이 많이 발생합니다.

이러한 아티팩트를 피 / 최소화하기 위해 샘플이 0이 아닌 스칼라 값으로 갑자기 끝나지 않고 샘플이 0으로 시작하고 끝나도록 부드러운 (예 : 종 모양) 창 기능을 사용할 수 있습니다.

부드럽게 차단

위의 윈도우 샘플은 아래 원시 샘플보다 주파수 영역에서 아티팩트가 적습니다.

갑작스런 컷오프


1

FFT와 관련된 두 가지 광범위한 범주가 있으며 1) FIR 필터를 효율적으로 구현하는 방법과 2) 스펙트럼 분석입니다.

FIR 필터링의 경우, 윈도우가 필터에 해당하지 않는 한, 윈도우에 대해 걱정하지 않고이를 사용하지 않습니다. 그러나 일반적이지 않습니다. 누출은 걱정되지 않습니다.

스펙트럼 분석은 윈도우를 사용하는 곳입니다. 여기에서 큰 산업 기계에 부착 된 센서를보고 창자 깊이, 베어링 고장 여부를 파악하려고합니다. 베어링은 고장 나면서 소리를 내지 만 소음은 일반적으로 기계가 만드는 다른 소리보다 훨씬 낮습니다. 누출과 평균화가 발생하는 지점입니다. 강한 톤이 주어지면 누출은 우리가 몇 개의 빈을 찾고있는 약한 신호를 sw 아냅니다. 강한 신호가있을 때 약한 신호에 대한 스펙트럼 분석의 감도를 향상시킵니다. 배경 소음이 경 사진 경우에도 비슷한 효과가 있습니다. 우리가 찾는 정보는 주파수 영역에 있습니다. 이것은 RADAR, SONAR 및 지구 물리학에서 동일한 문제입니다. 약한 신호를 보는 것이 목표입니다.


1

주파수 영역에 정확히 있지 않은 단일 주파수가 전체 스펙트럼에 걸쳐 확산되지 않도록하려면 시간 영역에서 윈도 잉이 필요합니다. 아마이 페이지가 도움이 될 수 있습니다 : http://www.sm5bsz.com/slfft/slfft.htm Linrad (20 살짜리 프로젝트)는 윈도우 FFT를 사용하고, 주파수 영역에서 필터를 적용합니다 (원치 않는 것을 0으로 만듭니다). 윈도우를 적용하십시오 – 주파수 빈의 weigtht 1에서 weight 0으로 갑자기 가지 마십시오. 그런 다음 뒤로 FFT를 적용하십시오. 이제 훨씬 적은 수의 지점에 적용됩니다. 우리가 알고있는 모든 주파수 빈을 포함 할 필요는 없습니다! resulr로서 우리는 훨씬 작은 크기의 시간 함수를 얻습니다. 이는 훨씬 낮은 샘플링 속도를 의미합니다. 이 절차는 단일 단계에서 필터링 및 데시 메이션을 수행합니다. 여러 채널을 동시에 필터링하려는 경우 매우 효율적입니다. linrad 홈페이지는 다음과 같습니다 :http://www.sm5bsz.com/linuxdsp/linrad.htm

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