Trong một câu trả lời cho một câu hỏi trước đó , nó đã được tuyên bố rằng một người nên
zero-pad các tín hiệu đầu vào (thêm số 0 vào cuối để ít nhất một nửa sóng "trống")
Lý do cho điều này là gì?
Trong một câu trả lời cho một câu hỏi trước đó , nó đã được tuyên bố rằng một người nên
zero-pad các tín hiệu đầu vào (thêm số 0 vào cuối để ít nhất một nửa sóng "trống")
Lý do cho điều này là gì?
Câu trả lời:
Không đệm cho phép một người sử dụng FFT dài hơn, sẽ tạo ra một vectơ kết quả FFT dài hơn.
Kết quả FFT dài hơn có nhiều thùng tần số có khoảng cách gần nhau hơn về tần số. Nhưng về cơ bản, chúng sẽ cung cấp kết quả tương tự như phép nội suy Sinc chất lượng cao của FFT ngắn hơn không đệm của dữ liệu gốc.
Điều này có thể dẫn đến phổ trông mượt mà hơn khi được vẽ mà không cần nội suy thêm.
Mặc dù phép nội suy này sẽ không giúp giải quyết hoặc giải quyết và / hoặc giữa các tần số lân cận hoặc gần đó, nhưng nó có thể giúp dễ dàng giải quyết trực quan đỉnh của một tần số bị cô lập duy nhất không có bất kỳ tín hiệu lân cận hoặc nhiễu đáng kể nào trong phổ . Theo thống kê, mật độ cao hơn của các thùng kết quả FFT có thể sẽ khiến cho thùng có cường độ cực đại gần với tần số của hình sin tần số đầu vào bị cô lập ngẫu nhiên và không có phép nội suy tiếp theo (parabol, et.al.).
Nhưng, về cơ bản, không đệm trước DFT / FFT là một phương pháp tính toán hiệu quả để nội suy một số lượng lớn các điểm.
Không đệm cho tương quan chéo, tương quan tự động hoặc lọc tích chập được sử dụng để không trộn kết quả tích chập (do tích chập tuần hoàn). Kết quả đầy đủ của tích chập tuyến tính dài hơn một trong hai vectơ đầu vào. Nếu bạn không cung cấp một nơi để kết thúc kết quả tích chập dài hơn này, tích chập nhanh FFT sẽ chỉ trộn nó với và tăng kết quả mong muốn của bạn. Zero-padding cung cấp một số không vào đó để trộn kết quả dài hơn. Và việc trộn lẫn một thứ gì đó chỉ được trộn / tổng hợp với một vectơ số không dễ dàng hơn nhiều.
Có một vài điều cần xem xét trước khi bạn quyết định không đệm tín hiệu miền thời gian của bạn. Bạn có thể không cần phải đệm tín hiệu nào cả!
1) Kéo dài dữ liệu miền thời gian (không phải đệm bằng 0) để có độ phân giải tốt hơn trong miền tần số.
2) Tăng số lượng điểm FFT vượt quá độ dài tín hiệu trong miền thời gian của bạn (phần đệm bằng 0) nếu bạn muốn xem định nghĩa tốt hơn về các thùng FFT, mặc dù nó không mua cho bạn bất kỳ độ phân giải nào đúng hơn. Bạn cũng có thể đệm để có được sức mạnh bằng 2 số điểm FFT.
3) Khi thay đổi điểm FFT (ở điểm trước), hãy đảm bảo các điểm tần số của bạn kết thúc tại nơi bạn muốn. Khoảng cách của các điểm là , trong đó là tần số lấy mẫu và là số điểm FFT.
Có một số số liệu đẹp minh họa những điểm này tại http://www.bitweenie.com/listings/fft-zero-padding/
Một điều cuối cùng cần đề cập: Nếu bạn không đệm tín hiệu trong miền thời gian và bạn muốn sử dụng chức năng cửa sổ, hãy đảm bảo bạn cửa sổ tín hiệu trước khi bạn không đệm. Nếu bạn áp dụng chức năng cửa sổ sau khi đệm bằng 0, bạn sẽ không hoàn thành những gì cửa sổ cần phải hoàn thành. Cụ thể hơn, bạn vẫn sẽ có sự chuyển đổi mạnh mẽ từ tín hiệu về 0 thay vì chuyển đổi suôn sẻ sang không.
Nói chung, phần đệm không trước DFT tương đương với phép nội suy hoặc lấy mẫu thường xuyên hơn, trong miền được chuyển đổi.
Dưới đây là một hình dung nhanh về cách làm việc ngược lại. Nếu bạn lấy mẫu tín hiệu được giới hạn theo thời gian ở tốc độ cao hơn, bạn sẽ có phổ 'bị bẹp' nhiều hơn, tức là phổ có nhiều số không ở cả hai đầu. Nói cách khác, bạn có thể lấy được nhiều mẫu hơn theo thời gian chỉ bằng cách đệm không tần số sau DFT'ing, và sau đó IDFT'ing kết quả không đệm.
Hiệu ứng tương tự giữ ngược lại khi thời gian đệm không xảy ra. Đây là tất cả bởi vì việc tái tạo tín hiệu hoàn hảo là có thể miễn là tín hiệu được phân tách và lấy mẫu ít nhất là ở tốc độ Nyquist.
Thuật ngữ 'độ phân giải' phụ thuộc vào cách bạn xác định nó. Đối với tôi, điều đó có nghĩa là hai điểm quan sát liền kề về thời gian hoặc tần suất có thể được phân biệt đối xử (theo thống kê) tốt đến mức nào. Trong trường hợp này, độ phân giải thực sự phụ thuộc vào kích thước DFT do rò rỉ quang phổ. Đó là, kích thước cửa sổ nhỏ hơn, mờ hơn hoặc làm mờ tín hiệu được chuyển đổi và ngược lại. Nó khác với tần suất bạn lấy mẫu, hoặc những gì tôi gọi là 'định nghĩa'. Ví dụ: bạn có thể lấy một hình ảnh rất mờ được lấy mẫu ở tốc độ cao (độ phân giải cao), nhưng bạn vẫn không thể có được nhiều thông tin hơn so với lấy mẫu ở tốc độ thấp hơn. Vì vậy, tóm lại, phần đệm không hoàn toàn không cải thiện độ phân giải vì bạn không thu được thêm thông tin nào trước đó.
Nếu người ta có hứng thú với phổ của chức năng cửa sổ được sử dụng để cô lập mẫu miền thời gian, thì đệm không S W làm tăng độ phân giải tần số của chức năng cửa sổ.
Nếu tín hiệu thời gian là , trong đó là hàm cửa sổ, thì phổ tổng thể là , trong đó suy ra tích chập. w ( t ) X ( f ) * W ( f ) *
Nếu chức năng cửa sổ của bạn là một hình chữ nhật đơn giản (trích xuất một số bộ giá trị từ . Thì là hàm đồng bộ. Vì vậy, ví dụ, nếu Nfft giống với chiều rộng của hình chữ nhật của bạn và bạn đã có một hình sin ở chính xác một trong các tần số bin, sau đó các mẫu của chức năng đồng bộ hóa xuất hiện tập trung vào thùng đó xảy ra chính xác tại các điểm giao nhau 0 cực đại và bạn không thấy hình dạng của đồng bộ hóa trong Nếu tất cả bây giờ không có dữ liệu, dữ liệu của bạn sẽ đi vào FFTX ( f ), bạn sẽ thấy một số mẫu tại các vị trí không phải là giao điểm cực đại và cực đại, cho thấy hình dạng của chức năng đồng bộ hóa trong phổ kết quả. Vì vậy, những gì sử dụng là không đệm? Nó chắc chắn được sử dụng trong giáo dục trong việc tiết lộ bản chất của sự biến đổi rời rạc của các tín hiệu cửa sổ, đó là trường hợp thông thường. Trong một ý nghĩa thực tế, nó có thể hữu ích trong mọi trường hợp bạn quan tâm đến hình dạng phổ của một phong bì bị cô lập cưỡi trên sóng mang.
Có thể có những lý do khác nhau cho việc này tùy thuộc vào bất kỳ quy trình nào được thực hiện trước và sau khi biến đổi Fourier. Lý do phổ biến nhất là để đạt được độ phân giải tần số lớn hơn trong bất kỳ biến đổi kết quả nào. Điều đó có nghĩa là, số lượng mẫu được sử dụng trong biến đổi của bạn càng lớn, độ hẹp của băng thông trong phổ công suất thu được càng lớn. Ghi nhớ: bin thong = sample_frequency / Transform_size (thường được gọi là kích thước cửa sổ). Bạn có thể tưởng tượng từ điều này, rằng khi bạn tăng kích thước biến đổi, băng thông sẽ giảm (= độ phân giải tần số tốt hơn). Không đệm là một cách để tăng kích thước biến đổi mà không đưa ra thông tin mới cho tín hiệu.
Vậy tại sao không chỉ có một biến đổi lớn hơn mà không có đệm? Điều đó sẽ không đạt được hiệu quả tương tự? Câu hỏi hay. Trong nhiều trường hợp, bạn có thể muốn phân tích luồng dữ liệu miền thời gian mà bạn có thể đang sử dụng biến đổi Fourier thời gian ngắn (stft). Điều này liên quan đến việc lấy một biến đổi mỗi N mẫu theo độ phân giải thời gian bạn cần để mô tả các thay đổi trong phổ tần số. Đây là vấn đề. Cửa sổ quá lớn và bạn sẽ mất độ phân giải thời gian, cửa sổ quá nhỏ và bạn sẽ mất độ phân giải tần số. Giải pháp sau đó là lấy các cửa sổ miền thời gian nhỏ cung cấp cho bạn độ phân giải thời gian tốt và sau đó không đệm chúng để cung cấp cho bạn độ phân giải tần số tốt. Hy vọng điều này hữu ích cho bạn
Cập nhật
tôi đã không giải thích điều này tốt. Tôi nên làm rõ nó tốt hơn. Đề cập đến một biến đổi cửa sổ, thực sự bạn không nhận được độ phân giải tần số lớn hơn 'thực tế' nhưng với mục đích trực quan hóa (đọc phổ công suất bằng mắt), nó có thể cung cấp kết quả rõ ràng hơn. Sử dụng tỷ lệ lấy mẫu quan trọng, mỗi thùy bên chiếm một thùng duy nhất, tùy thuộc vào kỹ thuật vẽ đồ thị có thể gây hiểu nhầm. Không đệm cung cấp một phổ tần số nội suy có thể được tiết lộ nhiều hơn. Ngoài ra, nếu bạn đang sử dụng phương pháp chọn đỉnh đơn giản để ước tính tần số, hiệu ứng nội suy phổ của phần đệm bằng 0 sẽ cho bạn một mẫu phổ gần với đỉnh thực sự của thùy chính. Liên kết này cung cấp một số sơ đồ hữu ích: http://www.dsprelated.com/dspbooks/sasp/Practical_Zero_Padding.html
Tôi không thấy những điều này được đề cập trong các phản hồi tốt trước đó vì vậy tôi sẽ thêm các lý do quan trọng bổ sung sau đây cho phần đệm bằng không:
Các thuật toán Radix-2 hiệu quả hơn vì vậy không có phần đệm nào cho công suất tiếp theo là 2 (hoặc công suất 4 trong một số trường hợp cho radix-4), hoặc đáng kể hơn là tránh mọi yếu tố chính lớn có thể cải thiện hiệu suất thời gian thực. Ngoài ra, khi sử dụng FFT để phân tích, phần đệm bằng 0 thường được thực hiện để tính toán các mẫu của DTFT, chẳng hạn như xác định đáp ứng tần số của FIR: so sánh fft ([1 1 1 1]) với fft ([1 1 1 1], 512) giống hệt với freqz ([1 1 1 1]).