03-numpy玩转信号处理(卷积)

摘要:本文深入理解一维信号的卷积,先讨论连续域的卷积,然后再延伸到离散域。

00 振动力学问题

在振动力学,单自由度系统对非周期激励的响应篇章中,一般会提到杜哈梅尔积分(Duhamel 积分),其实就是激励与系统脉冲响应的卷积。这个物理事实是理解卷积的重要突破口。

03-numpy玩转信号处理(卷积)的图1

01 响应其实是每一时刻激励的响应的叠加

首先将非周期激励看作无数个冲击组成,每一时刻的激励就是每一个时刻的冲击。

03-numpy玩转信号处理(卷积)的图2

03-numpy玩转信号处理(卷积)的图3

03-numpy玩转信号处理(卷积)的图4用图示意就是:

03-numpy玩转信号处理(卷积)的图5

02 离散域的卷积

03-numpy玩转信号处理(卷积)的图6

03 卷积和移动平均(平滑)的关系

平滑:一个一维数组A,每个元素的大小都一样,将这个数组A和信号B(信号B也是一个一维数组,更长一点)进行卷积计算,就等于对这个信号B进行了平滑处理。

这个过程可以这样理解:一维数组A就是一个特殊系统的脉冲效应,即不衰减。信号B的每个数据点和数组A相乘,然后再叠加,就相当于:

03-numpy玩转信号处理(卷积)的图7这样其实就是信号B的相邻一段数据点(个数由数组A的个数决定)的平均,就是平滑处理;

04 理解卷积的关键词

第一:脉冲

第二:脉冲响应;

第二:响应叠加;

05 numpy中卷积用于移动平均(平滑)
import numpy as np
import matplotlib.pyplot as plt
fs=256
t=np.arange(0,2,1/fs)
f=5
s1=2*np.sin(2*np.pi*f*t)
s2=np.random.rand(512)
s3=s1+s2
window=np.ones(11)
window/=sum(window)
con_1=np.zeros(5).tolist()+np.convolve(s3,window,mode='valid').tolist()+np.zeros(5).tolist()
plt.plot(t,s3,color='k',linewidth=0.8)
plt.plot(t,con_1,color='b',linewidth=1.5)
plt.grid()
plt.show()

03-numpy玩转信号处理(卷积)的图8

登录后免费查看全文
立即登录
App下载
技术邻APP
工程师必备
  • 项目客服
  • 培训客服
  • 平台客服

TOP

3