2014-12-13 437 views
1
i canot do it...please help me 

我想在scipy中执行正弦信号和矩形脉冲的卷积运算。我卷积窦信号和余弦信号,并绘制该图上的,但我想知道如何创建一个矩形脉冲序列,类似这样的MATLAB表达使用python将正弦信号与矩形脉冲进行卷积

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() 

回答

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