使用python将窦信号与矩形脉冲卷积

时间:2014-12-13 16:27:35

标签: python

i canot do it...please help me

我想在scipy中执行窦信号和矩形脉冲卷积的操作。我用sininus信号对正弦信号进行了卷积,并将其绘制在图表上,但我想知道如何用矩形脉冲创建数组,类似于这个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 numarray import*
    from numarray.fft import*
    from pylab import*
    x=r_[0:50]
    y1=sin(2*pi*x/49)
    #y2=cos(2*pi*x/49)
    y2=np.zeros((y1.shap))
    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()

1 个答案:

答案 0 :(得分:0)

scipy.signal.square怎么办?

from scipy import signal
import matplotlib.pyplot as plt

t = np.linspace(0, 1, 500, endpoint=False)
ts = signal.square(2 * np.pi * 5 * t)
plt.plot(t, ts)
plt.ylim(-2, 2)

enter image description here

您可以根据自己的喜好进行修改。例如,要使所有内容从0.6 null开始:

ts[t>0.6] = 0