2014-04-07 2 views
0

Matplotlib을 사용하여 간단한 직사각형 펄스 함수를 플롯하려고합니다. 플롯 그림에서 y의 값은 반전됩니다. 콘솔에서 값이 정확합니다.직사각형 함수로 반전 된 출력

무엇이 문제입니까?

import numpy as np 
import scipy as sp 
import matplotlib.pyplot as plt 

class DSP(object): 
    def __init__(self) : 
     plt.clf()  
     scale, rect = self.my_own_rect(fs=10, T=np.pi, print_values=True) 
     plt.plot(scale, rect) 
     plt.show() 

    def my_own_rect(self, fs, T, print_values): 
     rect = np.zeros(fs)   
     scale = np.linspace(-T, T, fs, endpoint=False) 
     for t in scale: 
      if(t >= -T/2 and t <= T/2):  
       rect[t] = 1 
      if(print_values==True): 
       print t, rect[t] 

     return scale, rect 

이 콘솔 출력된다 : 여기서

코드이다
t - RECT [t]
-3.14159265359 - 0.0
-2.51327412287 - 0.0
-1.88495559215 - 0.0
-1.25663706144 - 1.0
-0.628318530718 - 1.0
0.0 - 1.0
0.628318530718-1.0
1.25663706144-1.0
1.88495559215-1.0
2.51327412287-0.0

+0

스케일의 값은 부동 소수점입니다. 't'를 사용하여 항목 하나를 선택하고 이것을 사용하여'rect' 색인을 만듭니다. 인덱싱의 경우 정수 또는 부울 벡터 만 사용해야합니다. 그리고 당신은 루프가 필요 없습니다 : rect [-T/2

답변

2

하지 인덱스를 trect를 수행합니다. t-T에서 T까지 변하는 부동 소수점 값입니다. 배열 rect에 대한 인덱스가 아닙니다. 빠른 수정을 위해 다음을 시도해보십시오.

"빠른 수정"은 권장 할 수있는 변경 사항이 많기 때문에 "빠른 수정"이라고 말합니다. 예를 들어 @BasSwinckels에 의한 루프가 필요 없다는 코멘트를보십시오.

+0

고맙습니다, 반복 k는 트릭을했습니다! –