2012-03-03 2 views
3

부채꼴 신호와 부각의 직사각형 펄스의 컨볼 루션 작업을 수행하고 싶습니다. 나는 cosinus 신호 와 동 신호를 간직해 연산 및 그래프에 그 플롯, 하지만 난 직사각형 펄스와 배열, 그래서 내가 그들을 컨 볼브 수있는이 matlab에 표현직사각형 펄스로 부비동 신호의 컨볼 루션

y = rectpulse(x,nsamp) 

유사 무언가를 만드는 방법을 알고 싶습니다. 그래서 난 nu.zeros (50)를 만들려고 수동 0.0 위치 15-25에서 제로 변경 및 동 제 cosinus 신호

x=r_[0:50] (my array) 
y01=sin(2*pi*x/49) 
y02=cos(2*pi*x/49) 

을 생성 할 때 사용. ~ 0.9이므로 직사각형처럼 보이지만 회선 배열에 이 있고이 '사각형'배열이 이상합니다. 교차점이 없으면 0이 아닌 것으로 보입니다. 신호가 반환됩니다.

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

나는 이것이 가장 쉬운 방법이라고 생각하지만 사전에 사과합니다. 직사각형 펄스를 만드는 방법에 대한 참조를 찾을 수 없습니다.

+3

_sinus signal_은 재채기를하기 전에 느끼는 느낌입니다. – wim

+0

영어로이 함수를 * sine *이라고합니다. –

+1

http://en.wikipedia.org/wiki/Sinus is sine – abdu

답변

2

당신은 그 회선을 플로팅 한 다음 그것을 분석하여 그것이 예상했던 +1이 아닌 것을 확인했습니다! 그러나 당신이 가지고있는 걱정은 convolve 함수와 관련이 있다고 생각합니다. 매개 변수 mode="same"을 전달 했으므로 컨볼 루션 부분이 0이되고 "흥미로운"부분이 남게됩니다. 당신은 rect() 함수를 잘 만들었지 만, 나는 여러분에게 어딘가에 scipy에 대체 방법이 있어야한다고 동의한다. 나는 전체 회선이 그려 할 수 있도록, 내가 얻을 :

Convolution

이 코드에서 :

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

나는이 기능에 대한 documentation 주어진 기대하는 것입니다. 내가 놓친 다른 것이 있으면 알려줘!

+0

덕분에 많은 도움이되었습니다 :) – abdu

관련 문제