2014-12-13 440 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