Hier ist das Problem. Ich habe ein 2D-Array von Daten, die erste Spalte repräsentiert die Zeitdaten und die zweite Spalte repräsentiert die sinusförmigen Antwortdaten, basierend auf den Zeitdaten. Ich wende fft an und erhalte meine Frequenz (mit der ich angefangen habe) in einem bestimmten Bin, wie ich erwartet hatte, und ich finde die Amplitude und den Phasenwinkel von diesem Bin. Jetzt ist das Problem, dass ich das gleiche Setup habe, aber mit mehr Datenpunkten wende ich das fft erneut an und die Bin-Nummer ändert sich (was normal ist und wo ich es erwarte), die Amplitude ist die gleiche, aber der Phasenwinkel ist anders) zuerst ist das normal? Zweitens, wie soll ich vorgehen? Vielen Dank
PS: Keine der oben genannten Einstellungen gibt Daten mit einer Potenzlänge von 2 an, beispielsweise die erste mit 1620 Datenpunkten und die zweite mit 1745 Datenpunkten. Daher sollte die nächste Potenz von 2 für beide aus der Anfang?
Wenn Sie eine größere DFT als Ihren Datenvektor ausführen, werden Sie im Wesentlichen im Frequenzbereich interpolieren. Daher ist Ihr neuer Peak möglicherweise nicht der alte äquivalente Peak, den Sie zuerst erkannt haben, bevor Sie eine größere DFT genommen haben. Und da es nicht dasselbe ist, wählen Sie diesmal im Wesentlichen eine andere komplexe Exponentialbasis (Sinus plus Cosinus), was bedeutet, dass Sie wahrscheinlich einen anderen Phasenwert haben würden, ja.
Ja, wenn Sie eine Potenz von 2 FFT verwenden möchten, wählen Sie einfach die nächste Potenz von 2 Längen FFT, die größer als Ihre Datensatzlänge ist.
quelle
Antwort von @ user4619 anzeigen:
Verwenden von IPython, das Matlab ähnelt
Wenn Sie wirklich Primzahlen verwenden, ist das ziemlich wichtig (Faktor 50!). Wenn Sie Zahlen mit niedrigen Faktoren verwenden, ist dies nicht wichtig. Aber wenn man es nur mit Primzahlen macht, geht es nur schneller - es ändert überhaupt nichts an der Antwort.
quelle