단일 사인파 사이클의 푸리에 변환이 단일 막대가 아닌 이유는 무엇입니까?


12

나는 단일 사인파에서 다른 푸리에 변환 코드를 시도했으며, 이론적으로 단일 막대를 표시해야 할 때 신호 주파수에서 공명과 함께 분산 스펙트럼을 생성합니다.

샘플링 주파수는 거의 영향을 미치지 않지만 (여기서는 10kHz) 사이클 수는 다음과 같습니다.

한 사이클 :

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

100주기 :

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

100000 회 :

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

푸리에 변환은 무한 사이클 수로 수렴하는 것처럼 보입니다. 왜 그럴까요? 정확히 한주기의 시간 창이 N주기의 결과와 동일한 결과를 가져 와서는 안됩니까?

응용 : 이것은 호기심이없고 1 차 시스템의 스텝 응답이 기계 어셈블리의 공명을 얼마나 자극하는지 알고 싶기 때문입니다. 따라서 응답의 정확한 푸리에 변환이 필요합니다. 더 이상 신뢰하지 않습니다. "사인파"사례를 기반으로 정확도를 높이려면 어떻게해야합니까?

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

PS :이 특정 스크린 샷은 여기 코드를 기반으로합니다 .


6
허용 된 답변 외에도 이산 시간 푸리에 변환 (DFT를 사용하여 계산)이 사인파의 한주 기 인 입력 신호에 대한 임펄스가 될 것이라고 믿을 이유가 없습니다. 정현파의 연속 시간 푸리에 변환은 충동이지만, 그 정현파는 지속 시간이 무한합니다. 신호의 시간을 제한하면 직사각형 창 함수를 곱하는 것과 같습니다. 주파수 영역 결과는 임펄스의 컨벌루션과 윈도우의 푸리에 변환이며, 이는 본질적으로 관찰하는 것입니다.
Jason R

발언 감사합니다. NFFT 숫자를 벡터 길이로 변경하면 결과가 단일 막대라고 설명하는 방법은 무엇입니까?
Mister Mystère

1
좋은 질문. 이는 DFT의 고유 가정으로 인해 발생합니다. DFT의 입력에서 주어진 유한 길이 신호는 무한 지속 시간으로 양방향으로 주기적으로 연장되는 것으로 가정된다. 따라서 DFT의 "조리개"내부에 정수의 사이클이있을 때 무한 지속 시간 정현파 형 (단일 임펄스)의 변환으로 끝납니다. 이것은 정확히 제로 스펙트럼 누출의 경우에 해당하며 실제로 거의 발생하지 않습니다.
Jason R

답변:


30

이것은 윈도 잉 결과물입니다.

링크 된 코드는 길이가 2의 거듭 제곱이되도록 10,000 개의 샘플 신호를 0으로 채 웁니다.

%% Author :- Embedded Laboratory

%%This Project shows how to apply FFT on a signal and its physical 
% significance.

fSampling = 10000;          %Sampling Frequency
tSampling = 1/fSampling;    %Sampling Time
L = 10000;                  %Length of Signal
t = (0:L-1)*tSampling;      %Time Vector
F = 100;                    %Frequency of Signal

%% Signal Without Noise
xsig = sin(2*pi*F*t);
...

%%Frequency Transform of above Signal
subplot(2,1,2)
NFFT = 2^nextpow2(L);
Xsig = fft(xsig,NFFT)/L;
...

위의 코드에서, FFT는 FFT 사이즈로 촬영되어 있습니다 NFFT. (이 경우, 384)의 신호 길이보다 더 큰 2의 다음의 힘으로부터 매스 웍스 fft()문서 :

Y = fft(X,n)n- 포인트 DFT를 반환합니다. fft(X)동등 fft(X, n)n의 크기가 X상기 제 nonsingleton 측정한다. 의 길이가되면 X미만이며 n, X길이로 0을 후행으로 채워집니다 n. 길이 X가보다 크면 n시퀀스 X가 잘립니다. 경우 X행렬이고, 컬럼의 길이를 동일하게 조정된다.

이것은 당신이 실제로 '정현 사인파'의 FFT를 취하는 것이 아니라는 것을 의미합니다.

이는 사인파의 FFT에 제곱 윈도우 기능을 곱한 것과 같습니다. FFT 스펙트럼은 사인파 주파수 스펙트럼 (임펄스 함수)과 구형파 주파수 스펙트럼 (sinc (f))의 컨볼 루션입니다.

L = 16,384신호의 제로 패딩이 없도록 변경 하면 perfectFFT 가 관찰됩니다 .

추가 검색 키워드 : "스펙트럼 누출", "창 기능", "해밍 창".


편집 : 대학 에서이 주제에 대해 쓴 일부 자료를 정리했습니다. 내 블로그에 게시했습니다 .


이 시간 내 얼굴 바로 앞에 있었다. 잘했습니다. 방금 NFFT 숫자를 벡터 길이로 변경했는데 그렇게했습니다.
Mister Mystère

1
@ MisterMystère : 내가 대학에서 쓴 관련 자료에 대한 링크는 편집을 참조하십시오. 사진을 포함한 훨씬 더 철저한 설명.
Li-aung Yip

(수학 식을 다시 입력하는 것을 잊었지만, 지금 수정되었습니다.)
Li-aung Yip

작은 장점은 내가 FFTW이라고 생각 matlab에 FFT의 algoriths을 사용 nextpow2에 패딩이 있음을 말씀 드리면 (빠른 푸리에 서쪽으로 변환)
스콧 Seidman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.