我已经绘制了大约300,000个数据点的移动平均值,我需要找到信号中峰值的最大y值及其相应的x值,即其频率。我想它给我一些情节本身的坐标,但如果我能得到它至少打印出来我会满意的。请原谅我的编程技巧,因为他们不是最强的。这是我正在处理的代码部分以及它生成的绘图的链接。我没有足够的积分来发布图片。
def movingaverage(interval, window_size):
window= np.ones(int(window_size))/float(window_size)
return np.convolve(interval, window, 'same')
x = freq[0:300000]
y = fft
pylab.plot(x,y,"k.")
y_av = movingaverage(y, 30)
pylab.plot(x, y_av,"r")
pylab.xlim(0,10)
pylab.ylim(0,1500)
pylab.xlabel("Frequency")
pylab.ylabel("Moving Average Magnitude")
pylab.grid(True)
pylab.show()
答案 0 :(得分:7)
您应该可以执行以下操作:
max_y = max(y_av) # Find the maximum y value
max_x = x[y_av.index(max_y)] # Find the x value corresponding to the maximum y value
print max_x, max_y
修改强>
numpy数组没有索引方法,所以我们应该使用argmax,如评论中所指出的那样:
max_y = max(y_av) # Find the maximum y value
max_x = x[y_av.argmax()] # Find the x value corresponding to the maximum y value
print max_x, max_y
我认为this API应该可以让您在图片上绘制文字。你可以这样做:
pylab.text(max_x, max_y, str((max_x, max_y)))