SciPy: преобразовать функцию в частотную область - PullRequest
0 голосов
/ 11 марта 2019

Постановка задачи

Дано : серия времени, состоящая из значений времени / амплитуды

Желаемый выход : Aпреобразование данного сигнала в частотную область, которая состоит из значений времени / частоты

Дополнительная информация

Я хотел бы иметь идентичное отображение временных меток на входедо уровня частоты на выходе.

Для этого я использовал функцию signal.spectrogram из SciPy.Понятно, что есть соответствие между входом и выходом.

Вопрос : Каков предпочтительный способ преобразования этого выхода в значения времени / частоты?Рекомендуется ли брать максимальное значение?

Код

fs = 1.0
f, t, Sxx = signal.spectrogram(x, fs)
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.axis([t.min(), t.max(), f.min(), .02])
plt.show()

Input Spectrogram

1 Ответ

0 голосов
/ 11 марта 2019

Вопрос: Каков предпочтительный способ преобразования этого выхода в значения времени / частоты? Это хорошая практика, чтобы взять максимальное значение?

Обычно, если вы рассчитываете спектрограмму, вы хотите увидеть, какие частоты составляют ваш сигнал, в окне вокруг каждой временной точки. И именно поэтому вы получаете тепловую карту, которую вы показываете. Теперь это уже представление вашего сигнала в частотной области как функция времени. Если вы возьмете только максимальные значения, вы урежете соответствующую информацию, и то, что вы получите, будет отображением другого сигнала. Это не то, что вы хотите, потому что это не имеет смысла с точки зрения обработки сигналов. Вы бы представляли сигнал артефакта на основе только самых сильных частот в каждом временном окне.

Существуют и другие способы представления частотных характеристик в зависимости от времени, которые вы, возможно, захотите изучить, если спектрограмма не отображает искомую информацию. Например, попробуйте исследовать вейвлет-преобразования (см. Здесь пример непрерывного вейвлет-преобразования (cwt), примененного к временному ряду ) Вы можете легко получить его, используя пакет PyWavelets .

...