свертка синусового сигнала с прямоугольным импульсом

Я хотел бы выполнить операцию свертки синусового сигнала и прямоугольного импульса в scipy. Я свернул синусоидальный сигнал с косинусным сигналом и изобразил это на графике, но я хотел бы знать, как создать массив с прямоугольным импульсом, что-то похожее на это выражение 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()

Заранее извиняюсь, мне кажется, это самое простое, но я не смог найти ссылку на то, как создать прямоугольный импульс.


person abdu    schedule 03.03.2012    source источник
comment
Синусовый сигнал – это ощущение, возникающее перед тем, как чихнуть.   -  person wim    schedule 03.03.2012
comment
По-английски мы называем эту функцию sine.   -  person Karl Knechtel    schedule 03.03.2012
comment
en.wikipedia.org/wiki/Sinus является синусоидальным   -  person abdu    schedule 04.03.2012
comment
Также в английском языке термин sinusoidal используется для описания общей формы синусоиды.   -  person Mark Ransom    schedule 05.03.2012
comment
На самом деле термин синусовый сигнал достаточно распространен. На самом деле я получаю в Google в два раза больше результатов для синусового сигнала, чем для синусоидального сигнала. Так что расслабьтесь всем!   -  person Nicu Stiurca    schedule 19.02.2014


Ответы (1)


Вы очень хорошо построили свертку, а затем проанализировали ее, чтобы увидеть, что это не то, что вы ожидаете, +1! Однако я думаю, что ваша озабоченность связана с функцией convolve. Поскольку вы передали ему параметр mode="same", он отсекает часть свертки, которая равна нулю, и оставляет вам «интересную» часть. Вы отлично сконструировали функцию rect(), хотя я согласен с вами, что где-то должен быть встроен альтернативный способ scipy. Когда я разрешаю построение всей свертки, я получаю:

Свертка

Из этого кода:

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

Именно этого я и ожидал, учитывая документацию для эта функция. Дайте мне знать, если есть что-то еще, что я пропустил!

person macduff    schedule 05.03.2012