ich die Komplexität einer Implementierung des Cooley-Tukey-Algorithmus bin Analyse, in Python geschrieben (der Code von here genommen wurde):Cooley-Tukey-Algorithmus Python außerhalb des Bereichs
def fft(x):
N = len(x)
print N, N//2
if N <= 1:
return x
even = fft(x[0::2])
odd = fft(x[1::2])
T = [exp(-2j*pi*k/N)*odd[k] for k in range(N//2)]
return [even[k] + T[k] for k in range(N//2)] + [even[k] - T[k] for k in range(N//2)]
Der Code funktioniert gut mit das Beispiel auf der Webseite; in der Tat, es scheint, mit einer Liste mit einer Länge < = 9. Aus irgendeinem Grund versucht, mit einer Liste der Länge> 10 zu arbeiten:
print(' '.join("%5.3f" % abs(f) for f in fft([0,1,2,3,4,5,6,7,8,9])))
gibt die folgende Fehlermeldung:
T = [exp(-2j*pi*k/N)*odd[k] for k in range(N//2)]
IndexError: list index out of range
Does Wer weiß, warum das scheitert?
Vielen Dank für die Antwort! Mein Lehrer sagte mir, dass es kein Problem gibt, eine solche Annahme zu machen, da das Hauptziel darin besteht, die Komplexität des Algorithmus zu analysieren. –