Ich habe ein verrauschtes Signal, das das Geräusch eines Motors mit konstanter Drehzahl ist, daher sollte das Geräusch "periodisch" sein. Ich weiß, dass es eine Möglichkeit gibt, die Autokorrelationsfunktion zu verwenden, um die Periode zu erhalten. Ich habe es getan, aber ich kann den Zeitraum nicht herausfinden. Jede Idee, wie das unter dem Signal und dem Ergebnis der Autokorrelation zu tun ist: das Signal
das Autokorrelationsergebnis:
matlab
discrete-signals
Motor
quelle
quelle
Antworten:
Hier ist ein Versuch, das zu tun, was Sie brauchen
scilab.
Das obere Diagramm zeigt einige Daten, die ich synthetisiert habe. Das zweite Diagramm zeigt die Autokorrelation der Rohdaten (vergrößert um den zentralen Peak der Autokorrelation). Die roten Kreise zeigen die mit dieser
find_peaks
Funktion gefundenen Peaks .Das endgültige Diagramm zeigt den Unterschied zwischen allen Spitzenpositionen. Dies ist eine Schätzung des Zeitraums. Da Sie nicht wirklich garantiert sind, dass der zugrunde liegende Zeitraum eine ganzzahlige Anzahl von Stichproben ist, sollten Sie wahrscheinlich den Mittelwert dieser Werte ermitteln.
In diesem Fall ist die „wahre“ Zeit
1/f0 = 11.191996
und unterdiffs = diff(peaks);
und dannmean(diffs(10:173))
Ausbeuten11.195122
.Code unten.
quelle
Es scheint, dass Sie eine Fensterfunktion in Ihrem Signal anwenden (Autokorrelationsdiagramm scheint mit Fenstern versehen zu sein)!
Um seine Arbeit zu erledigen, teilen Sie Ihr Signal in konstante gerahmte Daten auf, die sich überlappen oder nicht, und wenden Sie die Autokorrelationsfunktion an:
Am Ende finden Sie die Spitzenposition und herzlichen Glückwunsch, Sie haben die Periode gefunden!
Wie kann es in Matlab hier
quelle
Mein bevorzugter Weg, um die "Periode" Ihres Signals herauszufinden, ist das Betrachten des Spektrums. Es sieht so aus, als hätte Ihr Signal eine starke Sinuswelle mit etwas Rauschen. Wenn Sie die FFT nehmen und die Größe zeichnen, können Sie sehen, welche Frequenzen am stärksten sind (sie entsprechen wahrscheinlich der Drehzahl, mit der der Motor läuft). Die "Periode" Ihres Signals ist 1 geteilt durch die Signalfrequenz. Wenn Sie eine 10-Hz-Sinuswelle haben, beträgt ihre Periode 0,1 Sekunden.
quelle