Bestimmen Sie die Frequenz von signal-Daten in MATLAB
Ich habe Daten aus einem sensor und ich muss die Frequenz. Es sieht aus wie fft()
scheint der Weg zu gehen, aber der MATLAB-docs nur zeigen, wie man ein Diagramm mit den Frequenzen, ich weiß nicht, was zu tun ist.
Hier ist, was meine Daten sieht wie folgt aus:
InformationsquelleAutor der Frage edc1591 | 2013-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Weg zu gehen ist in der Tat die Verwendung einer fft. Da die fft gibt Ihnen die Frequenz-Darstellung des Signals, die Sie wollen, zu suchen das maximum, und da die fft ist ein Komplexes signal, werden Sie wollen, um den absoluten Wert der ersten. Der index entspricht der normalisierten Frequenz mit maximaler Energie. Zuletzt, wenn das signal einen offset, wie ist der Fall mit der, die Sie zeigen, werden Sie wollen, um loszuwerden, offset bevor Sie mit der Einnahme der fft, so dass Sie nicht bekommen, ein max an der Herkunft repräsentiert der DC-Komponente.
Alles, was ich beschrieben setzen Sie in einer Zeile wäre:
wo indexMax ist der index, in dem die max fft-Wert gefunden werden kann.
Hinweis: um von indexMax, um die tatsächliche Frequenz von Interesse, müssen Sie wissen, die Länge L der fft (die gleiche wie die Länge des Signals) und die sampling-Frequenz Fs. Die signal-Frequenz wird dann sein:
Alternativ, schneller und funktioniert ziemlich gut, auch je nach dem signal, das Sie haben, nehmen Sie die Autokorrelation des Signals:
finden, und die erste maximale auftretende, nach dem Mittelpunkt der Autokorrelation. (Die Autokorrelation wird symmetrisch sein, mit seinem maximum in der Mitte.) Durch die Feststellung, dass die maximale, die Sie finden, der erste Ort, in dem das verschobene signal sieht mehr oder weniger wie sich selbst. I. e. finden Sie die Periode des Signals. Da das signal verschoben um ein Vielfaches seiner Zeit sehen immer wie sich selbst, müssen Sie sicherstellen, dass der maximale Sie finden in der Tat entspricht die Periode des Signals und nicht eins von deren vielfachen.
Weil der Lärm in das signal, das absolute maximum könnte sehr gut passieren, auf ein Vielfaches der Periode statt der Zeit selbst. So ist zu berücksichtigen, dass Lärm, würdest du das absolute Maximum der Autokorrelation (Autokorrelation(Länge(Autokorrelation)/2+1), und dann finden, wo der Autokorrelation größer ist, als, sagen wir, 95% des maximalen Wert für den ersten Zeitpunkt in der zweiten Hälfte des Signals. 95%, 99% oder irgendeine andere Zahl, würde davon abhängen, wie viel Lärm verdirbt Ihr signal.
UPDATE: ich merke, dass ich angenommen, dass du gemeint mit "Frequenz" des Signals die Tonhöhe oder harmonische Basis oder Frequenz mit der meisten Energie, aber Sie wollen, um es zu betrachten. Wenn die Frequenz, die Sie bedeutete die Frequenz-Darstellung des Signals, und dann zu einer ersten Annäherung, Sie wollen einfach nur, um eine Darstellung der abs der FFT um eine Idee zu bekommen, wo die Energie ist:
Wenn Sie möchten, zu verstehen, warum es ist ein abs, oder welche relevanten Informationen, die Sie verlieren, indem Sie repräsentieren nicht die phase der fft, möchten Sie vielleicht zu Lesen, ein bisschen mehr über die DFT-Transformation zu verstehen, genau das, was Sie bekommen.
InformationsquelleAutor der Antwort Lolo
Ich denke, es sollte
Dem ersten element abs(fft(x)) ist die Gleichstrom (DC) - oder bias -, oder bedeuten von signal oder X0. Wir rechnen ab dem zweiten element (X1).
Bitte lassen Sie mich wissen, wenn ich falsch bin. Danke.
InformationsquelleAutor der Antwort Bill Ancalagon the black