Tại sao biến đổi Fourier của một chu kỳ sóng hình sin đơn thành một thanh?


12

Tôi đã thử các mã biến đổi Fourier khác nhau trên các sóng hình sin đơn lẻ và tất cả chúng đều tạo ra phổ phân tán với cộng hưởng ở tần số tín hiệu khi về mặt lý thuyết chúng sẽ hiển thị một thanh.

Tần số lấy mẫu ít ảnh hưởng (10kHz tại đây), tuy nhiên số chu kỳ thực hiện:

Một chu kỳ:

nhập mô tả hình ảnh ở đây

100 chu kỳ:

nhập mô tả hình ảnh ở đây

100000 chu kỳ:

nhập mô tả hình ảnh ở đây

Có vẻ như biến đổi fourier chỉ hội tụ trong một số lượng vô hạn các chu kỳ, tại sao vậy? Không nên một cửa sổ thời gian của chính xác một chu kỳ mang lại kết quả giống như của N chu kỳ?

Ứng dụng: Điều này vừa gây tò mò và cũng vì tôi muốn nhận được mức độ đáp ứng bước của một hệ thống đặt hàng đầu tiên sẽ gây hứng thú cho sự cộng hưởng của một tổ hợp cơ khí. Do đó, tôi cần một biến đổi Fourier chính xác của phản hồi ... Điều mà tôi không còn tin tưởng nữa. Tôi có thể làm gì để cải thiện độ chính xác sau đó, dựa trên trường hợp "sóng hình sin"?

nhập mô tả hình ảnh ở đây

PS: Những ảnh chụp màn hình cụ thể này dựa trên mã ở đây .


6
Ngoài câu trả lời được chấp nhận, lưu ý rằng không có lý do nào để tin rằng biến đổi Fourier thời gian rời rạc (mà bạn đang tính toán sử dụng DFT) sẽ là một xung lực cho tín hiệu đầu vào là một khoảng thời gian của hình sin. Biến đổi Fourier thời gian liên tục của một hình sin là một xung, vâng, nhưng hình sin đó là vô hạn trong thời gian. Khi bạn giới hạn tín hiệu kịp thời, điều đó tương đương với nhân với chức năng cửa sổ hình chữ nhật. Kết quả miền tần số là sự kết hợp của xung và biến đổi Fourier của cửa sổ, về cơ bản là những gì bạn đang quan sát.
Jason R

Cảm ơn đã nhận xét. Vì vậy, làm thế nào để bạn giải thích rằng nếu tôi thay đổi số NFFT thành chiều dài của vectơ, kết quả là một thanh duy nhất?
Mystère

1
Câu hỏi hay. Điều này xảy ra do một giả định vốn có trong DFT. Tín hiệu có độ dài hữu hạn được đưa ra ở đầu vào của DFT được giả sử để mở rộng định kỳ theo cả hai hướng với thời lượng vô hạn. Do đó, khi bạn có số chu kỳ nguyên trong "khẩu độ" của DFT, bạn kết thúc với việc biến đổi một hình sin có thời lượng vô hạn: một xung đơn. Điều này tương ứng với trường hợp rò rỉ quang phổ chính xác bằng 0 và hiếm khi xảy ra trong thực tế.
Jason R

Câu trả lời:


30

Đây là một tạo tác cửa sổ.

Các mã được liên kết đưa ra một tín hiệu 10.000 mẫu với các số 0 sao cho độ dài là hai lũy thừa.

%% 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;
...

Lưu ý rằng trong đoạn mã trên, FFT được lấy với kích thước FFT NFFT, công suất tiếp theo lớn hơn 2 so với độ dài tín hiệu (trong trường hợp này là 16.384.) Từ tài liệu Mathworksfft() :

Y = fft(X,n)trả về DFT điểm n. fft(X)tương đương với fft(X, n)nơi nlà kích thước củaX trong chiều nonsingleton đầu tiên. Nếu chiều dài Xnhỏ hơn n, Xđược đệm bằng các số 0 theo chiều dài n. Nếu độ dài Xlớn hơn n, chuỗi Xbị cắt ngắn. Khi Xlà một ma trận, độ dài của các cột được điều chỉnh theo cùng một cách.

Điều này có nghĩa là bạn không thực sự lấy FFT của 'sóng hình sin thuần túy' - bạn đang thực hiện FFT của sóng hình sin với tín hiệu phẳng sau nó.

Điều này tương đương với việc lấy FFT của sóng hình sin nhân với hàm cửa sổ vuông. Phổ FFT sau đó là tích chập của phổ tần số sóng hình sin (một hàm xung) với phổ tần số sóng vuông (độ (f).)

Nếu bạn thay đổi L = 16,384để không có tín hiệu đệm bằng 0, bạn sẽ quan sát perfectFFT.

Các từ khóa tìm kiếm khác: "Rò rỉ quang phổ", "Chức năng cửa sổ", "Cửa sổ Hamming".


Chỉnh sửa: Tôi đã làm sạch một số tài liệu tôi đã viết về chủ đề này ở trường đại học, trong đó đi sâu vào chi tiết hơn. Tôi đã đăng nó trên blog của tôi .


Nó ở ngay trước mặt tôi suốt thời gian này. Làm tốt lắm thưa ông, tôi chỉ thay đổi số NFFT thành chiều dài của vectơ và điều đó đã làm điều đó.
Mystère

1
@ MisterMystère: Xem chỉnh sửa để liên kết đến các tài liệu liên quan tôi đã viết ở trường đại học. Một lời giải thích kỹ lưỡng hơn nhiều, bao gồm cả hình ảnh.
Li-aung Yip

(Mặc dù tôi đã quên nhập lại các công thức toán học - đã sửa ngay bây giờ.)
Li-aung Yip

Chỉ cần một lời nhắc nhở rằng có rất ít lợi thế để đệm vào nextpow2 bằng thuật toán FFT matlab, mà tôi tin là fftw (biến đổi phạm vi nhanh nhất ở phía tây)
Scott Seidman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.