章节
- SciPy 介绍
- SciPy 安装
- SciPy 基础功能
- SciPy 特殊函数
- SciPy k均值聚类
- SciPy 常量
- SciPy fftpack(傅里叶变换)
- SciPy 积分
- SciPy 插值
- SciPy 输入输出
- SciPy 线性代数
- SciPy 图像处理
- SciPy 优化
- SciPy 信号处理
- SciPy 统计
scipy.signal模块专门用于信号处理。
## 重新采样
scipy.signal.resample()
函数使用FFT将信号重采样成n个点。
示例
import numpy as np
t = np.linspace(0, 5, 100)
x = np.sin(t)
from scipy import signal
x_resampled = signal.resample(x, 25)
import matplotlib.pyplot as plt
plt.plot(t, x)
plt.plot(t[::4], x_resampled, 'ko')
# plt.savefig('./sig1-1.png') # 保存要显示的图片
plt.show()
输出
去除趋势
scipy.signal.detrend()
函数从信号中去除线性趋势。
示例
import numpy as np
t = np.linspace(0, 5, 100)
x = t + np.random.normal(size=100)
from scipy import signal
x_detrended = signal.detrend(x)
import matplotlib.pyplot as plt
plt.plot(t, x)
plt.plot(t, x_detrended)
# plt.savefig('./sig2-1.png') # 保存要显示的图片
plt.show()
输出
滤波
对于非线性滤波,scipy.signal模块中提供了中值滤波scipy.signal.medfilt()
, 维纳滤波scipy.signal.wiener()
。滤波的使用,可参考图像处理章节,不再赘述。
频谱分析
-
scipy.signal.spectrogram()
计算连续时间窗上的频谱图 -
scipy.signal.welch()
计算功率谱密度(PSD)