Ich habe einen Datensatz (ein Array) und ich muss die Periodizität darin finden. Wie soll ich weitermachen? Bitte helfen Sie mir. Vielen Dank im Voraus. Einige Körper sagten, dass ich FFT benutzen kann, aber ich bin nicht sicher, wie es mir die Periodizität geben wird. Ihre Hilfe wird geschätzt. Danke noch einmal.Wie finde ich die Periodizität in Daten?
Antwort
Sie könnten FFT verwenden, da es Ihren Datensatz von einem Wertebereich in einen Frequenzraum konvertiert. Diese
bedeutet, dass Sie am Ende wird eine Reihe von Frequenzen, die die anfängliche Eingabe produzieren zusammen, die Sie analysieren möchten. Dann können Sie leicht erkennen, welche die wichtigsten contribuitions sind, die von bestimmten Frequenzen erzeugt werden und so werden Sie verstehen, wie viele Periodizitäten gibt es und welche sind die einflussreichsten ..
werfen Sie einen Blick hier: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/dft/
Periodizität ist kein gut definierter Begriff. Zum Beispiel kann solche Daten:
1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11, 1, 10, 1, 10, 1, 11
Sie kann als eine mit nicht genauer, aber starker Periodizität von 2 und als exakte Periodizität von 6 behandeln.
Für genaue Periodizität können Sie einfach versuchen, gegebene Daten als Teilkette von Daten zweimal wiederholt zu finden.
Für eine nicht exakte Periodizität von realen, rauschbehafteten Signalen können Zeitdomänen- und Frequenzbereichsmethoden verwendet werden.
Zeitbereich eins ist Selbstkorrelation. Es ist wie eine Teilstringsuche oben: Suche nach einem Verschiebungswert, bei dem die Daten maximale Selbstähnlichkeit haben.
Für einfache Signale können Schwellenübergänge ausreichen.
Frequecy Domäne Verfahren umfassen eine Verwendung von FFT/FHT: Suche nach einem Maximum in fequency specter die 1/T der Periodizität ergibt.
Eine andere Methode verwendet Cepstrum.
Für diese Aufgabe ist es am besten, die Autokorrelation zu verwenden.
Die FFT ist das falsche Werkzeug zum Auffinden der Periodizität.
Betrachten Sie zum Beispiel einen Fall, bei dem Ihre Wellenform durch Addition von zwei einfachen Sinuswellen entsteht, eine mit einer Dauer von 2 Sekunden (0,5 Hz) und die andere mit 3 Sekunden (0,333 Hz). Diese Wellenform hat eine Periodizität von 6 Sekunden (d. H. 2 · 3), aber das Fourier-Spektrum zeigt nur zwei Spitzen bei 0,5 Hz und 0,333 Hz.
fand ich ein Papier, das einer FFT-basierten Periodogramm mit Autokorrelation kombiniert genauere Informationen über die Periodizität eines Signals zu liefern. Ich denke, dass diese Methode wert sein könnte, in der Suche:
Der Link scheint tot, aber ich habe etwas ähnliches gefunden, mit SVD, um die Periodizität der Daten zu finden: http://pre.aps.org/abstract/PRE/v59/i4/p4013_1 – Magsol
Ich habe gerade den Link überprüft, und es scheint die PDF-Datei für mich zu öffnen. Es kann andere Links geben, die Sie ausprobieren können, wenn Sie in Google Scholar nach dem Titel des Links suchen. – bnsmith
Dieses neue Papier hat ein hohes Maß an Aufmerksamkeit nicht hat, Spectral Clustering
Amariei, C., Tomita, M. , & Murray, DB (2014). Quantifying periodicity in omics data.Grenzen in der Zell- und Entwicklungsbiologie.
Implementiert in einem R-Paket verfügbar unter oscillat.iab.keio.ac.jp. Ich bin nicht mit den Autoren verbunden, aber setzen Sie den Code auf GitHub here für einen einfacheren Zugriff (Hauptskript here).
Verwendet eine DFT und gruppiert Reihen in Hauptspektralkräfte, nett in meiner Erfahrung zu verwenden. Offensichtlich für Genomik ist es entworfen, um robust zu sein (notiert in dem Code ist es computationally heavy), so kann von der Anwendung abhängen.
- 1. Wie finde ich folgende Daten
- 2. Wie finde ich die Daten zwischen zwei angegebenen Daten?
- 3. Wie finde ich die Schriftbreite?
- 4. Wie finde ich die Dokumentation in Core.Std?
- 5. Wie finde ich den Unterschied zwischen zwei Daten in Tagen?
- 6. Wie finde ich Daten in der Meteor-Sammlung?
- 7. Wie finde ich Daten in Sequelizejs nach Fremdschlüssel?
- 8. Wie finde ich den Stundenunterschied zwischen zwei Daten in PHP?
- 9. Periodizität von Variablen in einem Array in R
- 10. Wie finde ich die Hauptfunktion meines Programms (...)?
- 11. Wo finde ich die Quelle von dbpedia Daten
- 12. Wie finde ich die Zeilenindexnummer in der Datenrahmenspalte?
- 13. Wie finde ich die JPA-Version?
- 14. Zugriffsverletzung - wie finde ich die Ursache?
- 15. Wie finde ich die Standardschriftarten auf Android?
- 16. Wie finde ich die optimale Verarbeitungsreihenfolge?
- 17. Wie finde ich die Erweiterung einer Datei?
- 18. Wie finde ich die .data() (jQuery) Entsprechung in JavaScript?
- 19. Wie finde ich die Sondenfolge der Schlüssel?
- 20. Wie finde ich die Java Update Version?
- 21. Wie finde ich die nächste Primzahl?
- 22. Wie finde ich die opauth config security_salt?
- 23. Wie finde ich die globale Funktion?
- 24. Wie finde ich die Standard-JMX-Portnummer?
- 25. Wie finde ich die Koordinaten einer Adresse?
- 26. Java regex Wie finde ich die Elternübereinstimmung?
- 27. Wie finde ich die aktuelle Standortadresse?
- 28. SQL - Wie finde ich die höchste Zahl in einer Spalte?
- 29. Wie finde ich die Länge eines Sets?
- 30. Wie finde ich die Quelle von JS_Parse_Error?
Wie würden Sie die Aufgabe mit Autokorrelation implementieren? Könnten Sie eine Skizze geben? –
@ MusséRedi: Die Idee ist sehr einfach: nehmen Sie einfach die Autokorrelation und finden Sie den Peak (das ist nicht bei 0). Die einzige Frage ist also, wie man die Autokorrelation durchführt und die Spitze des Ergebnisses findet. Wie Sie dies tun, hängt davon ab, welche Werkzeuge Sie verwenden. Obwohl Sie alles von Grund auf neu erstellen können, würden die meisten Leute ein Datenanalysepaket verwenden. Das heißt, meine Skizze wäre hier nicht hilfreich, also würde ich vorschlagen, einen Ansatz zu wählen, den Sie mögen, es versuchen, und wenn etwas nicht funktioniert, stellen Sie eine Frage mit einigen Besonderheiten. – tom10
Ich versuchte die Methode der ersten Antwort auf http://stackoverflow.com/questions/643699/how-cani-i-use-numpy-correlate-to-do-autocorrelation, um meine Daten zu autokorrelieren. Dies ergibt eine absteigende Folge von Zahlen. Und der Spitzenwert gibt keine Information über die Periodizität. Beim Testen mit einer Sinusfunktion bekomme ich eine absteigende Schwingung. Wie sollte ich die Periodizität finden? –