2010-11-21 8 views
16

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

0

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/

4

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.

13

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.

+1

Wie würden Sie die Aufgabe mit Autokorrelation implementieren? Könnten Sie eine Skizze geben? –

+3

@ 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

+0

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? –

1

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:

On Periodicity Detection and Structural Periodic Similarity

+0

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

+0

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

1

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.

Verwandte Themen