scipy
  1. scipy-spectrogram

SciPy Spectrogram

The spectrogram is a visual representation of the spectrum of frequencies in a signal as it varies with time. In SciPy, the spectrogram function from the scipy.signal module can be used to generate spectrograms. This guide covers the syntax, example, output, explanation, use cases, important points, and a summary of using the SciPy spectrogram function.

Syntax

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import spectrogram

frequencies, times, spectrogram_values = spectrogram(x, fs=1.0, window='hann', nperseg=256, noverlap=None, nfft=None, detrend='constant', scaling='density', mode='psd')
  • x: Input signal.
  • fs: Sampling frequency of x.
  • window: Desired window to use. Defaults to 'hann'.
  • nperseg: Length of each segment. Defaults to 256.
  • noverlap: Number of points to overlap between segments. If None, no overlap is used. Defaults to None.
  • nfft: Number of points to use in each block for the FFT. Defaults to None.
  • detrend: Specifies how to detrend each segment. Defaults to 'constant'.
  • scaling: Specifies the scaling of the spectrogram. Defaults to 'density'.
  • mode: Specifies the return type of the function. Defaults to 'psd' (Power Spectral Density).

Example

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import spectrogram

# Generate a simple signal (sine wave)
fs = 1000  # Sampling frequency
t = np.arange(0, 5, 1/fs)  # Time vector
x = np.sin(2 * np.pi * 50 * t) + 0.5 * np.random.normal(size=len(t))

# Compute the spectrogram
frequencies, times, Sxx = spectrogram(x, fs=fs, window='hann', nperseg=256, noverlap=None, nfft=None, detrend='constant', scaling='density', mode='psd')

# Plot the spectrogram
plt.pcolormesh(times, frequencies, 10 * np.log10(Sxx), shading='auto')
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.title('Spectrogram of the Signal')
plt.colorbar(label='Power/Frequency [dB/Hz]')
plt.show()

Output

The output of the example would be a spectrogram plot showing the distribution of frequencies over time in the given signal.

Explanation

  • The spectrogram function computes the spectrogram of a signal using the specified parameters.
  • The resulting frequencies, times, and Sxx represent the frequency bins, time bins, and the power spectral density, respectively.
  • The example generates a simple signal, computes its spectrogram, and plots the result using Matplotlib.

Use

  • Spectrograms are useful for analyzing the frequency content of signals over time.
  • They are commonly used in signal processing, audio analysis, and various scientific applications.

Important Points

  • Adjust the parameters such as window, nperseg, and noverlap based on the characteristics of your signal.
  • Spectrograms provide insights into the time-varying frequency components of a signal.

Summary

The SciPy spectrogram function is a powerful tool for analyzing the frequency content of signals over time. By providing various parameters, you can tailor the spectrogram computation to suit your specific needs. Spectrograms offer valuable insights into the time-varying characteristics of signals and find applications in diverse fields such as audio processing and signal analysis.

Published on: