具有矩形函数的反向输出

时间:2014-04-07 19:24:41

标签: python numpy matplotlib

我试图用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

1 个答案:

答案 0 :(得分:2)

不要将rectt编入索引。 t是一个浮点值,从-TT不等。它不是数组rect的索引。要快速解决问题,请尝试以下操作:

    for k, t in enumerate(scale):   
        if(t >= -T/2 and t <= T/2):     
            rect[k] = 1  
        if(print_values==True):
            print t, rect[k]

我说“快速修复”因为可以推荐更多更改。例如,请参阅@BasSwinckels关于不需要循环的评论。