Использование scipy.signal.stft() и scipy.signal.ShortTimeFFT.stft()

Я пытаюсь выполнить кратковременное преобразование Фурье для этого сигнала и пытаюсь выполнить его с помощью метода ShortTimeFFT(), поскольку в документации scipy указано, что метод signal.stft() является устаревшим. Однако везде, где я ищу информацию в Интернете, (и ИИ) говорит: просто используйте signal.stft(). Мне не удалось найти никаких указаний за пределами документации по использованию метода ShortTimeFFT.stft().

Стоит ли мне пытаться переключиться? или просто используйте signal.stft(), у меня было много проблем с пониманием функции ShortTimeFFT и заставить ее вести себя так, как я хочу (см. мои трудности здесь). Поэтому я рассматриваю возможность использования signal.stft().

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать 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().

  • Также см..

Каковы ваши рассуждения? Мне бы хотелось, чтобы простой ответ был правильным, но я также осознаю, что простой ответ не всегда самый лучший.

Tanner Burton 27.06.2024 19:52

@TannerBurton Обновлено. Используйте ShortTimeFFT(). На самом деле не имеет значения.

user24714692 27.06.2024 21:30

Другие вопросы по теме