个性化阅读
专注于IT技术分析

SciPy spectrogram:计算频谱图

信号处理工具箱由很少的滤波功能和一组有限的滤波器设计工具组成。它还包含一些针对一维和二维数据的B样条插值算法。

scipy.signal.spectrogram使用连续的傅立叶变换来计算频谱图。频谱图可以用作反映非信号信号的频率内容随时间变化的一种方式。

from scipy import signal	
import matplotlib.pyplot as plt
import numpy as np
#Generate a test signal, a 2 Vrms sine wave whose frequency linearly changes with time from 1kHz to 2kHz, corrupted by 0.001 V**2/Hz of white noise sampled at 10 kHz.
fs = 10e3 # Sampling Frequency
N = 1e5
amp = 2 * np.sqrt(2)
noise_power = 0.001 * fs / 2
time = np.arange(N) / fs
freq = np.linspace(1e3, 2e3, N)	
x = amp * np.sin(2*np.pi*freq*time)
x += np.random.normal(scale=np.sqrt(noise_power), size=time.shape)
# Compute and plot the spectrogram.
f, t, Sxx = signal.spectrogram(x, fs)
plt.pcolormesh(t, f, Sxx)
plt.ylabel('Frequency [Hz]')
plt.xlabel('Time [sec]')
plt.show()

输出

SciPy spectrogram:计算频谱图

scipy.signal.spectogram()返回以下数组:

f:ndarray

采样频率数组。

t:ndarray

细分时间数组。

Sxx:ndarry

x的频谱图。默认情况下, Sxx的最后一个轴对应于段时间


赞(0)
未经允许不得转载:srcmini » SciPy spectrogram:计算频谱图

评论 抢沙发

评论前必须登录!