我试图用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 :(得分:2)
不要将rect
与t
编入索引。 t
是一个浮点值,从-T
到T
不等。它不是数组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关于不需要循环的评论。