gpt4 book ai didi

python - 使用 heapq 函数 'nlargest' 在 python 中查找 FFT 的峰值及其对应的频率

转载 作者:太空宇宙 更新时间:2023-11-04 09:09:34 26 4
gpt4 key购买 nike

我正在使用 FFT 查看我正在设计的 IC 测试仪的输出信号上的失真。我有两个数组,一个包含采样频率,另一个包含相应的 FFT 值。我已经能够使用 heapq 库中的 nlargest 函数打印三个最高的 FFT 值,但我还想打印 x 轴数组中的相应频率值。我的部分代码如下。频率值存储在数组“frq”中,FFT 值存储在数组“Y”中

Y = sci.fft(y)/n # fft computing and normalization
Y = Y[range(n/2)]
Y = abs(Y)
print heapq.nlargest(3, 20*np.log10(abs(Y)))
print heapq.nlargest(3, frq, key=lambda i: Y[i])

我从最后一行代码收到以下错误:

print heapq.nlargest(2, frq, key=lambda i: Y[i])
IndexError: index 500 is out of bounds for axis 0 with size 50

最佳答案

执行此操作的 numpythonic 方法将完全跳过 heapq 并像这样进行一些思考:

idx = np.argsort(Y)[::-1][:3]
y_top_3 = 20*np.log10(Y[idx])
f_top_3 = frq[idx]

如果你想获得可迭代对象的可迭代对象,你可以这样做:

top_3 = np.vstack(f_top_3, y_top_3).T

关于python - 使用 heapq 函数 'nlargest' 在 python 中查找 FFT 的峰值及其对应的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com