2010-01-25 56 views
22

Đối với dự án hiện tại của tôi bằng C++/Qt, tôi cần một thư viện (ưu tiên LGPL), có thể tính toán phổ từ tín hiệu (về cơ bản là một mảng tăng gấp đôi). Tôi đã sử dụng Qwt cho phần GUI.Thư viện C++ phổ quát

Mọi đề xuất? Cảm ơn.

+0

LGPL vì bạn không muốn phát hành mã nguồn? Tôi biết thư viện FFTW có thể được sử dụng theo giấy phép thay thế so với phiên bản GPL. – petantik

+0

cố gắng tìm kiếm trên trang web sourceforge về "xử lý tín hiệu kỹ thuật số". AFAIK trên trang web đó là một số thư viện .. – cybevnm

+0

@gregseth, Bạn đã hoàn thành dự án này chưa? Tôi phải làm cùng một dự án và tính toán một quang phổ từ một mảng đôi. Tôi không biết bắt đầu như thế nào. Bạn có thể cho tôi một số gợi ý. Merci – Jack

Trả lời

16

Nó sẽ là khá dễ dàng để đặt lại với nhau ảnh phổ của riêng bạn. Các bước thực hiện:

  1. chức năng cửa sổ (khá tầm thường, ví dụ Hanning)
  2. FFT (FFTW sẽ một lựa chọn tốt nhưng nếu cấp phép là một vấn đề sau đó đi cho Kiss FFT hoặc tương tự)
  3. tính toán log tầm quan trọng của các thành phần miền tần số (tầm thường: log (sqrt (tái * tái + im * im))
+1

Vì log (sqrt (x)) = (1/2) log (x), bạn có thể làm cho nó chạy nhanh hơn mà không cần sqrt() – DarenW

+0

@DarenW - thực sự - vì chúng ta thường làm việc với dB rồi thay vì làm 20 * log10 (sqrt (x)) chúng ta chỉ có thể làm 10 * log10 (x). –

1

bạn có thể sử dụng fftw (fftw.org) để tính toán ảnh phổ, bạn vẫn sẽ cần phải vẽ đồ thị dữ liệu, nhưng đó không phải là một vấn đề

10

"How do I create a frequency vs time plot?" liệt kê một số thư viện, mỗi thư viện có thể tính toán một quang phổ từ một tín hiệu.

sao chép và dán từ câu trả lời của riêng tôi:

Một số mã nguồn để tạo spectrograms/waterfall plots từ dữ liệu âm thanh:

Image to Spectrogram đi theo hướng ngược lại từ các tiện ích trên.

1

Bạn có thể sử dụng mã FFT từ here. Nó sử dụng lập trình meta mẫu C++ cho hiệu quả. Nguồn đầy đủ được cung cấp bởi tác giả here.

Đó là suggested để bao gồm mã này vào Eigen để sử dụng mã templated (loại thân thiện).