2010-01-25 5 views
22

Для моего текущего проекта в C++/Qt мне нужна библиотека (LGPL предпочтительнее), которая может вычислять спектральную диаграмму из сигнала (в основном массив двойников). Я уже использую Qwt для части GUI.Spectrogram C++ library

Любые предложения? Спасибо.

+0

LGPL, потому что вы не хотите выпускать исходный код? Я знаю, что библиотеки FFTW могут использоваться по альтернативной лицензии, чем версия GPL. – petantik

+0

попытайтесь найти на сайте sourceforge что-то о «обработке цифрового сигнала». AFAIK на этом сайте были некоторые библиотеки .. – cybevnm

+0

@gregseth, завершили ли вы этот проект? Я должен сделать тот же проект и вычислить спектрограмму из массива двойников. Я не знаю, с чего начать. Не могли бы вы дать мне несколько намеков. Merci – Jack

ответ

16

Было бы довольно легко собрать свои собственные спектрограммы. Шаги:

  1. функция окна (довольно тривиальный, например Хеннинг)
  2. FFT (FFTW будет хорошим выбором, но если лицензирование является проблемы затем пойти на поцелуй FFT или подобных)
  3. вычислить величину журнала компонентов частотной области (тривиальный: журнал (SQRT (ре * ре + им * им))
+1

Поскольку log (sqrt (x)) = (1/2) log (x), вы можете заставить его работать быстрее без sqrt() – DarenW

+0

@DarenW - действительно - поскольку мы обычно работаем с dB, вместо того, чтобы делать 20 * log10 (sqrt (x)), мы можем просто сделать 10 * log10 (x). –

1

можно использовать FFTW (fftw.org) для вычисления спектрограммы, вы все равно должны были бы построить данные, но это не должно быть проблемой

10

"How do I create a frequency vs time plot?" перечисляет несколько библиотек, каждый из которых может вычислять спектрограмму из сигнала.

скопировали и вставили из своего собственного ответа:

Некоторые исходный код для создания spectrograms/waterfall plots из аудиоданных:

Image to Spectrogram идет в обратном направлении от вышеуказанных коммунальных услуг.

1

Код FFT можно использовать с here. Он использует метапрограммирование шаблонов C++ для повышения эффективности. Полный источник предоставлен автором here.

Это был suggested, чтобы включить этот код в Eigen для использования шаблонизированного (типа дружественного) кода.