Ich möchte zwei Signale oder Kurven vergleichen.
Leider haben sie unterschiedliche Abtastraten. Der erste wird mit 30 Hz abgetastet, der zweite mit 2000 Hz. Matlab hat die Funktion 'resample' und ich dachte, dies würde den Vergleich viel einfacher machen.
Meine Frage ist: Ist es klüger, die zweite Kurve herunter- oder die erste hochzusampeln?
Edit: Ich habe getan, was mir gesagt wurde. Im Bild links sind die Originalkurven dargestellt. Die Kurven auf der rechten Seite werden erneut abgetastet. Oben rechts wird ein Upsampling durchgeführt, unten rechts wird ein Downsampling durchgeführt.
Ich weiß, dass die Kurven unterschiedlich lang sind, wenn sie neu abgetastet werden. Das zweite Signal wird jedoch auf die Länge des ersten Signals beschnitten.
quelle
Antworten:
Zusamenfassend:
Wenn Sie also Daten mit unterschiedlichen Raten vergleichen und in einer Auswertungsphase festlegen möchten, wie der Vergleich durchgeführt werden soll (welche Funktionen werden mit welcher Metrik und mit welchen externen Faktoren verglichen, wie Präzision, Effizienz, Robustheit usw.), a Ein sehr grundlegender erster Ansatz wäre, beide Signale um einen ganzzahligen Faktor zu erhöhen, um ihre Abtastung in Einklang zu bringen . Hier ist das ganz in Ordnung, 6000 Hz könnten für beide funktionieren.
Die Gründe könnten für die DSP-Praxis sein:
Nachdem Sie einige Zeit damit verbracht haben, können Sie wieder von vorne anfangen und entscheiden, ob Sie ein Downsampling durchführen oder nicht, mit welcher Methode usw. Sie sowohl Sicherheit als auch Effizienz erreichen möchten .
Wenn Sie sich für den Vergleich von Daten in der Fourier-Domäne entscheiden, können Sie problemlos zwei Signale mit unterschiedlicher Länge und Abtastrate in dieselbe Anzahl von Fourier-Koeffizienten umwandeln, um einen Vergleich in der Frequenzdomäne zu erleichtern.
quelle
Wenn Sie eine Funktion wie plot (x, y) verwenden, können Sie sie am einfachsten im selben Diagramm anzeigen, indem Sie einfach keines von ihnen neu abtasten, sondern einfach jeden x-Vektor mit den richtigen Werten für jedes Signal füllen, sodass beide an den entsprechenden Stellen angezeigt werden Sie möchten auf dem Display.
Sie können das Diagramm auch so einrichten, dass zwei verschiedene x-Achsen (eine für jede Kurve) mit unterschiedlichen Beschriftungen und Legenden vorhanden sind.
Nun zum Resampling. Ich werde Fs für die Abtastfrequenz verwenden.
Ein abgetastetes Signal kann keine Frequenzkomponenten über Fs / 2 enthalten. Es ist bandbegrenzt.
Auch ein Signal, das nur Frequenzkomponenten bis zu einer Frequenz F enthält, kann mit einer Abtastrate von 2F genau dargestellt werden.
Beachten Sie, dass diese "genaue" Darstellung mathematisch und nicht visuell ist. Für eine gute visuelle Darstellung hilft es dem Gehirn wirklich, die Punkte zu verbinden, wenn 5-10 Abtastwerte pro Periode vorliegen (also keine nennenswerten Frequenzkomponenten über Fs / 10 oder so). Siehe diese Abbildung: Das gleiche Signal, die untere Kurve hat eine niedrigere Abtastrate, es gibt keinen Informationsverlust, da die Frequenz niedriger als Fs / 2 ist, aber es sieht immer noch nach Mist aus.
Es ist jedoch genau das gleiche Signal. Wenn Sie das untere mit einem Sinusfilter überabtasten (rekonstruieren), erhalten Sie das obere.
Die Dezimierung (Downsampling) faltet alle Frequenzkomponenten, die höher als die neuen Fs / 2 sind, in das Signal zurück. Deshalb setzen wir dem Dezimator in der Regel einen steilen Tiefpassfilter vor. Um zum Beispiel von Fs = 2000 Hz auf Fs = 30 Hz herunterzusampeln, würden wir zuerst einen Tiefpass hoher Ordnung mit einem Cutoff-Wert von etwas unter 15 Hz anwenden und erst dann dezimieren.
Dieser Filter führt jedoch zu Problemen mit dem Einschwingverhalten, weist bei bestimmten Frequenzen eine Phasenverzögerung auf und kann den visuellen Aspekt Ihres Signals verändern, was Sie nicht möchten, wenn Sie diese visuell vergleichen möchten. Es gilt die obige Regel, nicht zu viel downsampeln, Fs immer auf das 5- bis 10-fache der höchsten interessierenden Frequenz einstellen, wenn die Signalform eine Bedeutung haben soll. Aus diesem Grund muss ein 200-MHz-Oszilloskop eine Abtastrate von 1-2 Gsps aufweisen.
Wie oben erwähnt, ist es am klügsten, sich überhaupt nicht mit den Daten zu beschäftigen und sie einfach jeweils mit ihrer eigenen x-Achse in derselben Grafik darzustellen.
In einigen Fällen wäre eine Abtastratenumrechnung erforderlich. Zum Beispiel, um die Anzahl der Punkte zu verringern, den Speicherbedarf zu verringern, ihn zu beschleunigen ... oder um beide Signale dazu zu bringen, dieselben "x" -Koordinaten zu verwenden, um Berechnungen an ihnen durchzuführen.
In diesem Fall können Sie auch ein Zwischen-Fs verwenden, das Signal mit hohen Fs herunter- und das mit niedrigen Fs hochsampeln. Oder sampeln Sie einfach die mit hohen Fs herunter.
Beachten Sie die Nyquist-Kriterien, und wählen Sie keine zu niedrige Samplerate aus, da Sie sonst die Signalformtreue des hohen Fs-Signals verlieren. Sie erhalten Phasenverschiebungen aufgrund des Tiefpassfilters usw. Oder wenn Sie den Hochfrequenzinhalt kennen ist vernachlässigbar, können Sie eine informierte Wahl treffen. ich
Wenn Sie eine lineare Interpolation verwenden, um die "x" -Koordinaten anzugleichen, denken Sie daran, dass auch ein ziemlich hohes Fs erforderlich ist. Die Interpolation würde auf dem oberen Signal im obigen Diagramm funktionieren, nicht auf dem unteren. Gleiches gilt, wenn Sie sich für min, max und so interessieren.
Und ... beachten Sie, dass Überabtastung / Überabtastung zumindest visuell auch die Einschwingzeit beeinträchtigt. Wenn Sie zum Beispiel einen Schritt übersteuern, klingelt es aufgrund der Impulsantwort des Sinc-Filters häufig. Dies liegt daran, dass Sie ein bandbegrenztes Signal erhalten und ein netter Schritt mit quadratischen Ecken tatsächlich eine unendliche Bandbreite hat.
Ich nehme als Beispiel eine Rechteckwelle. Denken Sie an das ursprüngliche abgetastete Signal: 0 0 0 1 1 1 0 0 1 1 1 ... Ihr Gehirn sieht eine Rechteckwelle.
In Wirklichkeit sollten Sie sich jedes Sample als Punkt vorstellen, und zwischen den Punkten befindet sich nichts. Es ist der springende Punkt bei der Probenahme. Zwischen den Samples ist nichts. Also, wenn diese Rechteckwelle mit einer Sinc-Interpolation überabgetastet wurde ... sieht es lustig aus.
Dies ist einfach die visuelle Darstellung einer bandbegrenzten Rechteckwelle. Die Wackelchen existieren irgendwie ... oder vielleicht auch nicht. Es gibt keine Möglichkeit zu wissen, ob sie im ursprünglichen Signal vorhanden waren oder nicht. In diesem Fall hätte die Lösung darin bestanden, die ursprüngliche Rechteckwelle mit einer höheren Abtastrate zu erfassen, um eine bessere Auflösung am Rand zu erzielen. Idealerweise möchten Sie mehrere Abtastwerte am Rand haben, damit sie nicht mehr wie ein Schritt unendlicher Bandbreite aussehen. Wenn Sie dann ein solches Signal überabtasten, weist das Ergebnis keine visuellen Artefakte auf.
Wie auch immer. Wie Sie sehen können ... verwirren Sie einfach mit den x-Achsen. Es ist viel einfacher.
quelle
Beim Downsampling gehen Informationen verloren. Das Upsampling ist verlustfrei, wenn der Faktor eine Ganzzahl ist (vorausgesetzt, Sie erinnern sich auch an den Faktor), aber einige Informationen gehen verloren, wenn der Faktor keine Ganzzahl ist. Das Upsampling könnte theoretisch mehr Informationen als das Downsampling für sehr spezifische Resampling-Faktoren verlieren.
Welches sollten Sie verwenden? Es kommt auf das Maß an Sicherheit an, das Sie benötigen.
Wenn Sie keine mathematische Sicherheit benötigen und nur eine Heuristik wünschen, ist das Downsampling schneller und das Upsampling genauer .
Wenn Sie die Genauigkeit Ihrer Berechnung einschränken müssen: Es ist möglich, aber ich kann Ihnen dabei nicht helfen.
quelle
Es kommt darauf an, was Sie mit "vergleichen" und "weiser" meinen. Das Kluge, was in Matlab nicht schwer ist, ist, es in beide Richtungen zu tun und selbst zu entscheiden.
Wenn Sie Ihre Frage mit Ergebnissen aus beiden Ansätzen ändern würden, würde ich Ihre Frage positiv bewerten und mehr Leute würden sie interessant finden und höchstwahrscheinlich dabei helfen, "Vergleichen" herauszufinden.
quelle
Ich möchte auf ein Problem hinweisen, das beim Upsampling auftritt und bei dieser Operation von entscheidender Bedeutung sein kann. Wenn ein Signal mit erhöhter Abtastrate ist , und die Daten - Endpunkte sind weit von Null - Werten wird der Kanteneffekt erfolgt. In der Praxis sollte dieser unerwünschte Effekt beseitigt werden. Ich teile dieser Community einen kurzen Aufsatz mit Bildern und Code, den ich darüber geschrieben habe und der zum Verständnis beitragen könnte.
https://medium.com/@davidpinyol91/edge-effects-when-resampling-a-signal-on-matlab-how-to-solve-it-cc6458ab1306
quelle