matplotlib.pyplot.specgram
- matplotlib.pyplot.specgram(x, *, NFFT=None, Fs=None, Fc=None, detrend=None, window=None, noverlap=None, cmap=None, xextent=None, pad_to=None, sides=None, scale_by_freq=None, mode=None, scale=None, vmin=None, vmax=None, data=None, **kwargs)[источник]
-
Построить спектрограмму.
Вычисляет и строит спектрограмму данных в x. Данные разбиваются на сегменты длиной NFFT, после чего для каждого сегмента вычисляется спектр. К каждому сегменту применяется оконная функция window, а степень перекрытия сегментов задаётся параметром noverlap. Спектрограмма отображается в виде цветовой карты (с использованием imshow).
- Параметры:
-
- x1-D array or sequence
-
Массив или последовательность, содержащая данные.
- Fsfloat, default: 2
-
Частота дискретизации (отсчётов на единицу времени). Используется для вычисления частот Фурье freqs в циклах на единицу времени.
-
windowcallable or ndarray, default:
window_hanning -
Функция или вектор длины NFFT. Для создания векторов окна см.
window_hanning,window_none,numpy.blackman,numpy.hamming,numpy.bartlett,scipy.signal,scipy.signal.get_windowи т. д. Если передан аргумент-функция, она должна принимать сегмент данных и возвращать его оконную версию. - sides{'default', 'onesided', 'twosided'}, optional
-
Какие стороны спектра возвращать. Значение 'default' задаёт односторонний спектр для вещественных данных и двусторонний для комплексных. Значение 'onesided' принудительно задаёт односторонний спектр, а 'twosided' — двусторонний.
- pad_toint, optional
-
Количество точек, до которого дополняется сегмент данных при выполнении FFT. Может отличаться от NFFT, задающего количество используемых точек данных. Хотя это не повышает фактическое разрешение спектра (минимальное расстояние между различимыми пиками), на графике может отображаться больше точек, что позволяет рассмотреть больше деталей. Соответствует параметру n при вызове
fft. По умолчанию имеет значение None, при котором pad_to устанавливается равным NFFT - NFFTint, default: 256
-
Количество точек данных, используемых в каждом блоке для FFT. Наиболее эффективно использовать степень числа 2. Этот параметр НЕ следует использовать для дополнения нулями, иначе масштабирование результата будет неверным; для этого используйте pad_to.
- detrend{'none', 'mean', 'linear'} or callable, default: 'none'
-
Функция, применяемая к каждому сегменту перед вычислением FFT для удаления среднего значения или линейного тренда. В отличие от MATLAB, где параметр detrend является вектором, в Matplotlib он представляет собой функцию. Модуль
mlabопределяет функцииdetrend_none,detrend_meanиdetrend_linear, но можно использовать и пользовательскую функцию. Также можно передать строку, чтобы выбрать одну из функций: 'none' вызываетdetrend_none. 'mean' вызываетdetrend_mean. 'linear' вызываетdetrend_linear. - scale_by_freqbool, default: True
-
Следует ли масштабировать результирующие значения спектральной плотности по частоте масштабирования, чтобы получить плотность в единицах 1/Hz. Это позволяет интегрировать значения по возвращённым частотам. Для совместимости с MATLAB по умолчанию установлено значение True.
- mode{'default', 'psd', 'magnitude', 'angle', 'phase'}
-
Какой тип спектра использовать. По умолчанию используется 'psd' — спектральная плотность мощности. Значение 'magnitude' возвращает амплитудный спектр. Значение 'angle' возвращает фазовый спектр без развёртки. Значение 'phase' возвращает фазовый спектр с развёрткой.
- noverlapint, default: 128
-
Количество точек перекрытия между блоками.
- scale{'default', 'linear', 'dB'}
-
Масштабирование значений в spec. Значение 'linear' означает отсутствие масштабирования. 'dB' возвращает значения в децибельной шкале. Если mode равно 'psd', это мощность в дБ (10 * log10). В противном случае это амплитуда в дБ (20 * log10). Значение 'default' соответствует 'dB', если mode равно 'psd' или 'magnitude', и 'linear' в противном случае. Если mode равно 'angle' или 'phase', значение должно быть 'linear'.
- Fcint, default: 0
-
Центральная частота x, смещающая границы графика по оси x, чтобы отразить диапазон частот, использованный при получении сигнала, его фильтрации и последующем понижении частоты дискретизации до основной полосы.
-
cmap
Colormap, default:rcParams["image.cmap"](default:'viridis') - xextentNone or (xmin, xmax)
-
Границы изображения по оси x. По умолчанию xmin задаётся равным левой границе первого бина (столбца spectrum), а xmax — правой границе последнего бина. Обратите внимание, что при noverlap>0 ширина бинов меньше ширины сегментов.
- dataindexable object, optional
-
Если параметр задан, следующие параметры также принимают строку
s, которая интерпретируется какdata[s], еслиsявляется ключом вdata:x
- vmin, vmaxfloat, optional
-
vmin и vmax задают диапазон данных, охватываемый цветовой картой. По умолчанию цветовая карта охватывает весь диапазон значений данных.
- **kwargs
-
Дополнительные именованные аргументы передаются в
imshow, которая создаёт изображение спектрограммы. Именованный аргумент origin не поддерживается.
- Возвращает:
-
- spectrum2D array
-
Столбцы — периодограммы последовательных сегментов.
- freqs1-D array
-
Частоты, соответствующие строкам в spectrum.
- t1-D array
-
Времена, соответствующие серединам сегментов (то есть столбцам в spectrum).
-
im
AxesImage -
Изображение спектрограммы, созданное с помощью imshow.
См. также
psd-
Отличается значением перекрытия по умолчанию; возвращает среднее значение периодограмм сегментов; не возвращает времена; строит линейный график вместо цветовой карты.
magnitude_spectrum-
Один спектр, аналогичный спектру одного сегмента при mode равном 'magnitude'. Строит линию вместо цветовой карты.
angle_spectrum-
Один спектр, аналогичный спектру одного сегмента при mode равном 'angle'. Строит линию вместо цветовой карты.
phase_spectrum-
Один спектр, аналогичный спектру одного сегмента при mode равном 'phase'. Строит линию вместо цветовой карты.
Примечания
Примечание
Это обёртка pyplot для
axes.Axes.specgram.Параметры detrend и scale_by_freq применяются только при значении mode 'psd'.
Примеры использования matplotlib.pyplot.specgram
© 2012–2026 Matplotlib Development Team. All rights reserved.
Licensed under the Matplotlib License Agreement.
https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.specgram.html