用矩形脉冲对正弦信号进行卷积

时间:2012-03-03 07:13:02

标签: python scipy signals convolution

我想执行窦信号卷积的操作 scipy中的矩形脉冲。我用cosinus信号卷积了正弦信号 并在图表上绘制 但我想知道如何创建矩形脉冲阵列, 与此matlab表达式类似的东西

y = rectpulse(x,nsamp)

所以我可以卷入他们。我用它来创造我的 窦和余弦信号

x=r_[0:50] (my array)
y01=sin(2*pi*x/49)
y02=cos(2*pi*x/49)

所以我尝试创建一个nu.zeros(50),并手动更改零 位置15-25从0.0。到0.9所以它看起来像矩形但卷积 在窦阵列上,这个'矩形'阵列很奇怪, 当没有交叉但是我得到窦时它应该是零 信号作为回报,这是代码:

from scipy import *
from pylab import *

x = r_[0:50]
y1 = sin(2*pi*x/49)
#y2 = cos(2*pi*x/49)
y2 = np.zeros(50)
for i in range(15,25):
    y2[i] = 0.9
#print len(y1),len(y2)
y3 = convolve(y2,y1,mode="same")
subplot(2,2,1)
plot(x,y1)
hold(True)
plot(x,y2)
hold(True)
subplot(2,2,2)
print len(x),len(y3)
plot(x,y3)
hold(True)
show()

我提前道歉,我觉得这是最简单的事情,但我可以 没有找到关于如何创建矩形脉冲的任何参考。

1 个答案:

答案 0 :(得分:2)

你已经很好地绘制了卷积,然后分析它,看它不是你所期望的,+ 1!但是,我认为您所关注的问题与convolve功能有关。由于你传递了参数mode="same",它会将卷积的等于零的部分切掉,并留下“有趣”的部分。你已经构建了rect()函数就好了,虽然我同意你应该有一个替代方法来scipy某处。当我允许绘制整个卷积时,我得到:

Convolution

从这段代码:

from scipy import *
from pylab import *

x = r_[0:50]
y1 = sin(2*pi*x/49)
#y2 = cos(2*pi*x/49)
y2 = np.zeros((y1.shape))
for i in range(15,25):
    y2[i] = 0.9
#print len(y1),len(y2)
#y3 = convolve(y2,y1,mode="same")
y3 = convolve(y2,y1)
subplot(2,2,1)
plot(x,y1)
hold(True)
plot(x,y2)
hold(True)
subplot(2,2,2)
print len(x),len(y3)
xx = r_[0:len(y3)]
print len(xx),len(y3)
plot(xx,y3)
hold(True)
show()

对于此函数,{I}我期望给出documentation。如果我错过了其他的东西,请告诉我!