Một chức năng cửa sổ FFT tốt để từ chối DC là gì?


9

Tôi đang sử dụng FFT để phân tích về cơ bản đường bao công suất của tín hiệu (xem ở đây để biết thông tin về dự án chứa) và, vì các số công suất luôn dương, để loại bỏ thành phần DC tôi muốn sử dụng cửa sổ chức năng là 50/50 dương và âm, so với hàm toàn dương thông thường.

Tôi đã sử dụng chức năng " đỉnh phẳng ", loại bỏ sự a0thiên vị và chuyển đổi nó từ cosin thành sin, nhưng tôi không chắc đó là tối ưu (hoặc thậm chí có ý nghĩa).

Bất cứ đề nghị nào?


9
chỉ trừ trung bình trước khi cửa sổ?
endolith

Câu trả lời:


1

Đạo hàm thứ nhất của hầu hết các hàm cửa sổ liên tục phổ biến (von Hann, v.v.) sẽ từ chối DC, tuy nhiên vẫn sẽ có đáp ứng tần số cường độ tương tự như hàm của cửa sổ gốc; vì vậy bạn vẫn có thể sử dụng tiêu chí "lòng tốt" ban đầu của mình để chọn cửa sổ, nếu nó không liên quan đến pha.


2
Mặc dù phản hồi này chủ yếu là chính xác, nhưng đó là một nhận xét nhiều hơn, vì vậy việc mở rộng về nó sẽ rất hữu ích.
Phonon

Tuy nhiên, nó giải quyết câu hỏi của tôi ở một mức độ.
Daniel R Hicks

1
Có một lý do để làm điều này thay vì chỉ trừ đi giá trị trung bình trước khi cửa sổ?
nibot

Nếu câu trả lời của JasonR là chính xác, thì ý tưởng từ chối DC này thông qua chức năng cửa sổ (và vẫn nhận được ước tính phổ tốt) sẽ không hoạt động.
nibot

@nibot: Một lý do có thể là có thể trừ tổng cộng trừ (không khả dụng trong một số đường ống phần cứng cố định hoặc độ trễ chẳng hạn.)
hotpaw2

7

Nếu bạn quan tâm đến việc phân tích quang phổ trên tín hiệu có thành phần DC lớn và bạn muốn triệt tiêu đỉnh DC đó, thì chức năng cửa sổ không phải là điều bạn muốn. Như một số câu trả lời khác đã lưu ý, bộ lọc đường cao tốc (hoặc, được xem khác nhau, bộ lọc notch với notch ở tần số 0) là một giải pháp thích hợp.

Để hiểu lý do tại sao, bạn cần suy nghĩ về việc áp dụng chức năng cửa sổ nào cho đáp ứng tần số của từng đầu ra DFT. DFT được định nghĩa là:

X[k]=n=0N1x[n]ej2πnkN

Một cách giải thích về cách thức hoạt động của DFT là một ngân hàng các bộ lọc ở tần số cách đều nhau giữa và . Lấy lại số tiền trên như sau:Nfs2fs2

X[k]=n=0N1xk[n]

Ở đâu:

xk[n]=x[n]ej2πnkN

Vì vậy, đầu ra DFT thứ được tạo bằng cách lấy tín hiệu đầu vào đầu tiên và nhân nó với một số mũ phức tạp ở tần số để tạo ra tín hiệu chuyển . Tín hiệu kết quả sau đó được tổng hợp qua cửa sổ mẫu để mang lại đầu ra DFT . Đây thực sự là một bộ lọc trung bình di động (đôi khi được gọi là bộ lọc boxcar), có đáp ứng xung có thể được mô tả là:kx[n]2πkNxk[n]NX[k]

b[n]={1, x=0,1,,N10, otherwise

Có thể tìm thấy đáp ứng cường độ của bộ lọc boxcar bằng cách sử dụng biến đổi Fourier thời gian rời rạc (DTFT) của đáp ứng xung đó:

|H(f)|=|sin(Nπffs)sin(πffs)|

Đây là một hạt nhân Dirichlet và đôi khi được gọi là "chân thành định kỳ" vì nó trông hơi giống một hàm chân thành nhưng lặp lại theo định kỳ, điều mà một chân không làm được. Biểu thức này đưa ra đáp ứng cường độ của từng đầu ra DFT, trong đó được đo là tần số bù từ tần số trung tâm của thùng đầu ra tương ứng. Điều này minh họa hiệu ứng rò rỉ quang phổ ; mỗi đầu ra DFT có đáp ứng tần số bao phủ một số dải liên tục của tín hiệu đầu vào, không chỉ tần số trung tâm riêng biệt của từng đầu ra.f

Bây giờ hãy xem xét cách mọi thứ thay đổi nếu bạn áp dụng chức năng cửa sổ cho tín hiệu đầu vào trước khi thực hiện DFT:x[n]

X[k]=n=0N1w[n]x[n]ej2πnkN=n=0N1w[n]xk[n]

Với chức năng cửa sổ được đặt đúng chỗ, được chuyển xuống có hiệu quả đi qua bộ lọc FIR với đáp ứng xung được mô tả bởi chức năng cửa sổ. Vì vậy, đáp ứng cường độ trên mỗi đầu ra của DFT là:xk[n]

|H(f)|=|W(f)|

Trong đó DTFT của hàm cửa sổ . Bây giờ lưu ý rằng nếu bạn đã chọn một hàm cửa sổ có số 0 tại DC và sử dụng nó để phát hành trước trước DFT, thì bạn thực sự sẽ gây ra hiệu ứng không mong muốn của việc loại bỏ không chỉ DC trong phổ kết quả, mà cả tần số trung tâm của mỗi một trong các đầu ra DFT. Đây có lẽ không phải là những gì bạn muốn.w [ n ] x [ n ]W(f)w[n]x[n]

Vì vậy, nếu bạn thực sự chỉ muốn hủy thành phần DC của tín hiệu, loại bỏ nó thông qua một số loại tiền xử lý khác, không phải là cửa sổ miền thời gian, là cách nên làm. Bạn có thể sử dụng bộ lọc đường cao tốc tuyến tính với tần số cắt rất thấp hoặc trừ trung bình ước tính khỏi tín hiệu trước tiên. Lựa chọn giữa các phương pháp này nên dựa trên những ràng buộc khác mà hệ thống của bạn có.


3

Tôi không nghĩ sử dụng chức năng cửa sổ là một cách tốt để loại bỏ DC. Như endolith đã đề cập, một phương pháp phổ biến chỉ là trừ đi giá trị trung bình trước khi cửa sổ. Một lựa chọn khác là áp dụng bộ lọc thông cao cho tín hiệu của bạn trước khi phân tích, với tần số cắt khoảng 10 Hz.


Áp dụng bộ lọc thông cao không phải là một tùy chọn nếu tín hiệu không tồn tại ở dạng tương tự. Nhưng tôi tin rằng bạn (& endolith) là chính xác rằng việc trừ giá trị trung bình sẽ hoạt động, đặc biệt là nếu một cửa sổ cũng được sử dụng để kéo các điểm cuối về 0. (Và bộ lọc thông cao sẽ cần mức cắt thấp hơn, với điều kiện là tôi đang phân tích tín hiệu xuống có thể là 0,01 Hz.)
Daniel R Hicks

2
Tại sao bạn nghĩ rằng bạn cần một tín hiệu tương tự để áp dụng bộ lọc đường cao tốc? Chắc chắn có thể tạo ra một HPF kỹ thuật số.
Jason R

@JasonR - Tôi sẽ thừa nhận rằng tôi khá thờ ơ với những điều như vậy (các khóa học tín hiệu của tôi đã có 40 năm trước, khá nhiều trước FFT, et al), nhưng dường như với tôi rằng để tạo ra bộ lọc thông cao kỹ thuật số tôi Trước tiên phải tạo ra biến đổi Fourier của tín hiệu.
Daniel R Hicks

1
Đó hoàn toàn không phải là trường hợp; bạn có thể tạo bộ lọc đường cao cũng như đường thông thấp, dải thông, v.v. Trên thực tế, có những kỹ thuật lấy nguyên mẫu bộ lọc thông thấp và biến nó thành bộ lọc đường cao có phản ứng tương tự. Hầu hết các phần mềm cho thiết kế bộ lọc (ví dụ MATLAB) có thể được sử dụng để tạo tất cả các loại bộ lọc.
Jason R

1
Tôi không chắc chắn nơi bạn có ấn tượng rằng việc triển khai bộ lọc đường cao đòi hỏi sự khác biệt. Sự khác biệt là một hoạt động đường cao tốc, nhưng không phải là một triển khai phù hợp cho bộ lọc đường cao tốc (vì đáp ứng tần số của nó là một đường nối, làm cho nó khuếch đại tần số cao hơn, nơi thường có nhiễu). Các bài viết trên Wikipedia về bộ lọc HighPass sẽ là một khởi đầu tốt.
Jason R
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.