Làm thế nào tôi có thể tính toán phổ công suất khoảng cách log?


20

Tôi muốn tính toán phổ công suất trong đó các tần số được đặt cách nhau theo logarit.

Trong phương pháp của Welch có sự đánh đổi giữa độ phân giải tần số của phổ công suất kết quả và số trung bình (nghĩa là lỗi trong kết quả). Tôi muốn sự đánh đổi này là động, tức là thực hiện ít trung bình hơn cho các điểm tần số thấp để có độ phân giải tốt hơn ở tần số thấp.

Có một cách tiêu chuẩn để làm điều này?

Tôi cho rằng một cách ban đầu sẽ là làm pwelchvới độ phân giải rất cao (số trung bình thấp), và sau đó làm lại phổ kết quả bằng cách sử dụng phương pháp tạo khối logarit.


2
Tôi thường tính toán phổ thông thường và sau đó chỉ đơn giản là vẽ dữ liệu theo thang đo log. Tôi không chắc nó thậm chí có thể mà không sử dụng trực tiếp định nghĩa sửa đổi của DFT, nhưng tôi quan tâm xem liệu thực sự có cách nào không.
Phonon

Câu hỏi SO liên quan đến OP cho những ai quan tâm.
Lorem Ipsum

Một câu hỏi khác có liên quan trên SO: stackoverflow.com/questions/9849233/ từ
nibot

Câu trả lời:


9

Tôi tìm thấy một bài báo giải quyết câu hỏi này trực tiếp:

Một vài con số đầu tiên trong bài viết minh họa độc đáo vấn đề mà thuật toán này giải quyết và các tài liệu tham khảo chứa một thư mục hữu ích về các phương pháp khác (biến đổi Q-hằng, biến đổi Fourier được tôi luyện, một bài báo khảo sát, v.v.).

Cách tiếp cận của họ không phải là kết hợp lại đầu ra của ước lượng phổ công suất dựa trên FFT hiện tại, mà chỉ tính toán biến đổi Fourier rời rạc ở tần số quan tâm (khoảng cách logarit). Đối với mỗi tần số được ước tính, về cơ bản, chúng thực hiện thuật toán của Welch, nhưng với độ dài biến đổi (và do đó, số lượng trung bình) được chọn riêng cho từng tần số. Tính toán của mỗi thùng tần số sử dụng toàn bộ chuỗi thời gian, nhưng được phân đoạn khác nhau. Các kết quả có đặc tính mong muốn là độ phân giải (độ rộng thùng) là một hàm tần số mượt mà và kết quả có thể được hiệu chuẩn theo mật độ phổ công suất hoặc phổ công suất.

Triển khai Matlab tại đây: https://github.com/tobin/l Picks

nhập mô tả hình ảnh ở đây Tiết lộ: Các tác giả của bài viết này ở cùng một tổ chức với tôi.


1
Lợi ích của việc tính toán phổ theo cách này là gì? Động lực cho phương pháp này là gì?
Spacey

1
Nó có thể nhanh hơn so với tính toán phổ công suất bằng cách sử dụng FFT và sau đó bật lại trong một số trường hợp.
nibot

Tôi đã bắt đầu triển khai Python: github.com/rudolfbyker/l nhặt Nó vẫn cần thử nghiệm. Đóng góp được chào đón.
rudolfbyker

1

Trong trường hợp này, tôi sẽ sử dụng phương pháp bình phương tối thiểu để tính tần số của một số danh sách giá trị đã biết. Phương pháp phổ biến nhất là phương pháp boo. Nó hoạt động khá giống với FFT hoặc DFT, nhưng nó sẽ chỉ tính tần số theo tần số xác định và nó có thể xử lý dữ liệu bị thiếu, nếu đó là một vấn đề. Ý tưởng là như sau:

  1. w
  2. wtjXj

Px(ω)=12([jXjcosω(tjτ)]2jcos2ω(tjτ)+[jXjsinω(tjτ)]2jsin2ω(tjτ))

Lưu ý, điều này sẽ không mở rộng quy mô như FFT, vì vậy tôi sẽ chỉ làm điều này nếu số lượng tần số mong muốn thấp hơn nhiều so với FFT sẽ được yêu cầu để thu thập tất cả dữ liệu.

Mặt khác, người ta có thể thực hiện một phương pháp nội suy hoặc bất kỳ việc lấy mẫu lại FFT hoặc DFT nào khác.

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.