Я пытаюсь выполнить кратковременное преобразование Фурье для этого сигнала и пытаюсь выполнить его с помощью метода ShortTimeFFT(), поскольку в документации scipy указано, что метод signal.stft() является устаревшим. Однако везде, где я ищу информацию в Интернете, (и ИИ) говорит: просто используйте signal.stft(). Мне не удалось найти никаких указаний за пределами документации по использованию метода ShortTimeFFT.stft().
Стоит ли мне пытаться переключиться? или просто используйте signal.stft(), у меня было много проблем с пониманием функции ShortTimeFFT и заставить ее вести себя так, как я хочу (см. мои трудности здесь). Поэтому я рассматриваю возможность использования signal.stft().
Вы можете использовать stft()
или ShortTimeFFT()
, у последнего больше возможностей, а stft()
немного проще в использовании:
import numpy as np
from scipy.signal import stft
import matplotlib.pyplot as plt
fs = 1024
t = np.arange(0, 1.0, 1.0 / fs)
x = np.sin(2 * np.pi * 100 * t) + np.sin(2 * np.pi * 200 * t)
f, t, Zxx = stft(x, fs=fs, nperseg=256)
plt.pcolormesh(t, f, np.abs(Zxx), shading='gouraud')
plt.ylabel('Hz')
plt.xlabel('Sec')
plt.show()
Оба метода по сути представляют собой одно и то же преобразование.
Оба метода широко используются.
stft()
легко использовать для быстрых вычислений. Вы можете просто бесплатно переключиться на ShortTimeFFT()
в любое время, если захотите.
Если вы интенсивно применяете STFT к некоторым сложным сигналам для очень дорогостоящих задач, в чем я сомневаюсь, вам стоит рассмотреть возможность использования ShortTimeFFT()
.
Также см..
@TannerBurton Обновлено. Используйте ShortTimeFFT()
. На самом деле не имеет значения.
Каковы ваши рассуждения? Мне бы хотелось, чтобы простой ответ был правильным, но я также осознаю, что простой ответ не всегда самый лучший.