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

Я хотел бы выполнить операцию свертки синусового сигнала и прямоугольного импульса в 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 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:

ts[t>0.6] = 0 
Смежные вопросы