信号处理工具箱包括一些滤波函数、一套有限的滤波器设计工具。它还包含用于一维和二维数据的少量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()  

输出:

17-1.png

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

f: ndarray

样本频率数组。

t: ndarray

段时间数组。

Sxx: ndarray

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

标签: Scipy, Scipy学习, Scipy教程, Scipy下载, Scipy指南, Scipy基础教程, Scipy使用指南, Scipy库, Scipy入门, Scipy进阶, Scipy模块, Scipy安装教程