1

FFT を使用して、設計中の IC テスターの出力信号の歪みを調べています。1 つはサンプリングされた周波数を含み、もう 1 つは対応する FFT 値を含みます。heapq ライブラリの nlargest 関数を使用して 3 つの最大 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
4

2 に答える 2

2

これは、最高に対応する3つのタプルを与える方法です

from itertools import izip
print heapq.nlargest(3, izip(frq, 20*np.log10(abs(Y))), key=lambda x: x[1])

Yを最初に置くこともできます

print heapq.nlargest(3, izip(20*np.log10(abs(Y)), frq))
于 2013-06-03T17:51:31.220 に答える