Tại sao rò rỉ quang phổ phát sinh trong một FFT?


18

Tôi đã thử googling và wikipedia-ing nó, nhưng tôi chưa nhận được câu trả lời nào ngoài 'đó là vì tần số của tín hiệu đầu vào nằm giữa hai thùng'.

Tôi hiểu rằng đây là lý do, nhưng điều tôi không thể hiểu là tại sao rò rỉ dường như mở rộng ra một số thùng liền kề chứ không phải chỉ một thùng liền kề.

Để minh họa những gì tôi đang nói, đây là một số dữ liệu mô phỏng (mã ở cuối bài): Freq_10

Trên đây là phổ FFT (được vẽ trên thang đo log) của sóng hình sin có tần số 10. Tốc độ lấy mẫu là một và số lượng mẫu là 100. Biểu đồ đã được dịch chuyển FFT. Rõ ràng chỉ có một đỉnh ở bin 10, và phần còn lại là theo thứ tự lỗi số hoặc có.

Freq_10_1

Đây là phổ tần số ở tần số được tạo ra là 10.1. Rõ ràng là có "rò rỉ" vào nhiều thùng hơn là thùng ngay lập tức.

freq_10_5

Đây là âm mưu cho tần số 10,5.

Câu hỏi: Tại sao có sự rò rỉ này và tại sao nó lại mở rộng ra tất cả các thùng khác, thay vì thùng liền kề?


Mã, cho bất cứ ai quan tâm (mã Python)

import numpy as np
import matplotlib.pyplot as plt

xFreq = 10.5
xSize = 100.0
xPeriod = xSize/xFreq
x = np.linspace(1,xSize,xSize)

data = np.sin(2*np.pi*x/xPeriod)
fft = np.fft.fft(data)
fft = np.fft.fftshift(fft)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(abs(fft), "o")
ax.set_yscale('log')
plt.show()

Tôi đã thay đổi xFreqgiá trị từ 10.0sang 10.5, v.v.


Bất kỳ tín hiệu nào không khớp chính xác với độ dài cửa sổ của FFT đều tạo ra sự gián đoạn khi bạn quấn nó xung quanh. Sự không liên tục, như các xung hoặc chức năng bước, chứa một số tần số.
endolith

Câu trả lời:


12

Một FFT có độ dài hữu hạn và do đó tạo thành một cửa sổ hình chữ nhật mặc định trên luồng dữ liệu. Một cửa sổ trong miền thời gian dẫn đến tích chập trong miền tần số với sự biến đổi của cửa sổ. Lưu ý rằng biến đổi của cửa sổ hình chữ nhật là hàm Sinc (sin (x) / x), có chiều rộng vô hạn. Đó không chỉ là 2 thùng chiều rộng. Do đó, các gợn sóng của hàm Sinc sẽ hiển thị dưới dạng "rò rỉ" ở xa bất kỳ đỉnh phổ nào không hoàn toàn định kỳ theo chiều dài của FFT.

Hình dưới đây cho thấy một phần của đáp ứng tần số của hàm chân. Khi âm được tập trung vào một trong các thùng, tất cả các điểm khác được xếp thành các giá trị rỗng trong đáp ứng tần số. Nếu nó không tập trung vào một thùng thì nó giống như thay đổi toàn bộ đáp ứng tần số, điều này làm cho các thùng khác rơi vào các phần không có giá trị của tần số đáp ứng tần số.

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

Một cách khác để xem xét đó là FFT chỉ là một ngân hàng bộ lọc, trong đó mỗi tầng dải dừng bộ lọc có rất nhiều gợn sóng và chắc chắn không phải là vô hạn trong việc giảm hơn 1 bin so với tần số trung tâm. Một số cửa sổ (von Hann, v.v.) ngoài hình chữ nhật có dải dừng thấp hơn, đó là một lý do cho việc sử dụng phổ biến của chúng.


1
Lưu ý rằng cái gọi là "rò rỉ" phổ không xuất hiện trong FFT của các đầu vào định kỳ tập trung chính xác bởi vì hàm Sinc chính xác bằng 0 (giữa các thay đổi dấu) ở tất cả các tần số trung tâm bin khác (hoàn toàn trực giao với các hạt lọc đó và Các vectơ cơ sở FFT).
hotpaw2

Tôi hy vọng bạn không quan tâm đến việc chỉnh sửa. Hãy thoải mái ném nó nếu bạn không thích nó.
Jim Clay

@Jim Clay: Cảm ơn bạn đã thêm biểu đồ. Tôi không thể tìm ra cách gửi một cái từ iPhone của mình.
hotpaw2

1
Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn. Cảm ơn bạn đã KHÔNG giải thích rò rỉ bằng cách nói, "FFT giả định rằng chuỗi đầu vào của nó là định kỳ." Đáng buồn thay, khái niệm ngớ ngẩn về 'tính tuần hoàn giả định', thật đáng buồn, được lặp lại quá thường xuyên trong tài liệu của DSP. [-Rick-]

Đôi khi, giả định về tính tuần hoàn đầu vào là hữu ích, khi thực hiện lấy mẫu đồng bộ xoay trục của chiều dài khung FFT (hoặc tạo các ví dụ tổng hợp trong lớp học), chẳng hạn. Nhưng với âm thanh (v.v.), các khung dữ liệu phân đoạn và cửa sổ không liên quan đến bất kỳ độ dài định kỳ nào là phổ biến hơn, làm cho giả định thường sai khi làm việc trong các khu vực đó.
hotpaw2

0

hotpaw2Câu trả lời là tốt nhưng tôi muốn giải thích một chút về user5133nhận xét của:

Cảm ơn bạn đã KHÔNG giải thích rò rỉ bằng cách nói, "FFT giả định rằng chuỗi đầu vào của nó là định kỳ." Đáng buồn thay, khái niệm ngớ ngẩn về 'tính tuần hoàn giả định', đáng buồn thay, lặp đi lặp lại quá thường xuyên trong tài liệu của DSP

và đồng thời trả lời câu hỏi quá. Lưu ý rằng tôi lưu ý một chuyên gia trong lĩnh vực này --- hãy bình luận, sửa hoặc xác nhận.

Biến đổi Fourier thời gian rời rạc (DTFT) được xác định qua (và không chỉ !) BởiZ{1,2,,N}

X(ω)=n=x[n]eiωn.

Trong thực tế, các tín hiệu đo là hữu hạn ; biểu thị độ dài của . Tín hiệu hữu hạn có thể được mở rộng bằng periodility trên . Biến đổi Fourier rời rạc (DFT) được xác định bởi tương ứng với các tần số rời rạc của DTFT trừ khi trong không có trong . Nói cách khác, nó tương ứng với DTFT của trong đó là hàm hình chữ nhật bằng 1 khiNNZ

Xk =def n=0N1xne2πikn/N,kZ
X(2πk/N)n{1,2,,N}x[n]w[n]wn{1,,N} và 0 ở mọi nơi khác.

Nhưng biến đổi Fourier của sản phẩm là tích chập của biến đổi Fourier:

F{fg}=F{f}F{g}

sao cho DFT của tín hiệu gốc là tích chập của DTFT của phiên bản "định kỳ" của nó với biến đổi Fourier của một cửa sổ hình chữ nhật ... đó là một vì (trong khung liên tục và tập trung vào 0 đến đơn giản hóa...):sinc

w(f)ejωtdt=ττejωtdt=2τsinc(ωτ)

Phép chập với một tạo ra các thùy bên được quan sát (trừ một số trường hợp cụ thể).sinc


có vẻ như @ user5133 không còn tồn tại nữa. nhưng lòng biết ơn của Rick bị đặt không đúng chỗ: "Cảm ơn bạn vì KHÔNG giải thích rò rỉ bằng cách nói, 'FFT giả định rằng chuỗi đầu vào của nó là định kỳ.' Đáng buồn thay, khái niệm ngớ ngẩn về 'tính định kỳ giả định', thật đáng buồn, được lặp lại quá thường xuyên trong tài liệu của DSP. " Anh ấy nhầm. DFT chắc chắn định kỳ mở rộng dữ liệu có độ dài hữu hạn được truyền cho nó. DFT không cho rằng dữ liệu được truyền cho nó là một giai đoạn của chuỗi tuần hoàn.
robert bristow-johnson
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.