Python 编写一维数组的卷积
之前在网上查阅关于数组卷积的代码时,发现有很多C++代码,但并没有多少关于python的代码,故在此将自己所编写的代码分享出来,希望能一起探讨研究。
实现思路如下:
1、先将短数组反转
2、第一阶段,此时只有短数据的(前)部分元素与长数据相乘求和
3、第二阶段,此时短数据的所有元素与长数据相乘求和
4、第三阶段,此时短数据的(后)部分数据与长数据相乘求和
具体应用公式网上有很多,计算过程并不复杂,但比较麻烦的是关于循环变量的边界值的设置,稍有不慎就有可能超出索引值。我的办法是先在草稿纸上写两个数组,元素可以少取几个,然后写出具体卷积的过程数据,尤其不同阶段的过渡的位置,细心找出规律,然后就可以编写具体代码了。
代码入下:
import matplotlib.pyplot as plt
import numpy as np
#阶跃信号
def up(x):
for i in range(len(x)):
if x[i] < 0:
y[i] = 0
else:
y[i] = 1
return y
x= np.arange(-10,10,0.1)
y = np.zeros(len(x))
y = up(x)
plt.plot(y)
plt.show()
#高斯滤波器
def gauss(x,s):
g=1/(((2*np.pi)**0.5)*