Was ist besser: Up- oder Downsampling?


13

Ich möchte zwei Signale oder Kurven vergleichen. eine mit 30 Hz abgetastete Kurve ein Kurvenmuster bei 2000 Hz

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. Vergleich


1
Ich habe Ihre Frage positiv bewertet. Was denkst du, ist klüger.

Wenn sehr hohe Präzision keine Rolle spielt (in diesem Fall glaube ich nicht), können Sie das Downsampling durchführen, insbesondere wenn dies den Prozess
erheblich

@ Stanley Pawlukiewicz, klar, ich verliere alle kleinen Peaks durch Downsampling. Upsampling könnte also der richtige Weg sein. Andererseits brauche ich die kleinen Gipfel nicht. Ich dachte sogar darüber nach, das zweite Signal zu glätten. In meinem Fall spielt es also keine Rolle, ob ich hoch oder runter probiere.
NelsonOrange

Noch Feedback und Antworten erwünscht?
Laurent Duval,

Antworten:


18

Zusamenfassend:

  • Upsampling : Verliert / sollte Information nicht verloren gehen (wenn dies mit Bedacht getan wird), dann sicherer ,
  • Abwärtsabtastens : kann verlieren Informationen (wenn unbedacht getan), noch mehr rechnerisch effizient .

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:

  • Mit Integer-Upsampling müssen Sie keine komplizierten Filtertechniken anwenden, und einfache lineare Interpolation ist einfach. Denken Sie jedoch daran, dass das Upsampling einige Informationen hinzufügt.
  • Wenn die Signale den gleichen Maßstab haben, können Sie Merkmale extrahieren und vergleichen: Rauschen, Variabilität, Steigungen, Ableitungen usw. Sie können die korrekte Skalierung / Versatzkorrektur anwenden (sie haben nicht die gleiche Amplitude), lineare oder nicht-lineare lineare Transformationen (Fourier usw.), um zu überprüfen, ob Ähnlichkeitsmerkmale in verschiedenen Domänen vorhanden sind
  • Zu diesem Zeitpunkt sollten Sie in der Lage sein , die für die Erstellung Ihres Algorithmus erforderlichen Features / Metriken zu qualifizieren und zu quantifizieren . Und Sie können abschätzen, was Sie aus beiden Daten verlieren können. Sie können beispielsweise Ihren Algorithmus erstellen und sehen, wie robust das Signal-Downsampling ist und wie weit Sie gehen können. Hier wird Ihr Algorithmus effizienter.

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.


14
Beim Downsampling gehen fast immer Informationen verloren, auch wenn dies nicht auf unkluge Weise erfolgt. Der Verlust von Informationen könnte jedoch tatsächlich eine weise Sache sein, also ...
links ungefähr

@leftaroundabout In welchen Edge-Fällen kann Downsampling keine Informationen verlieren?
Willem

2
@leftaroundabout Ich bin nicht einverstanden. Informationsverlust ist immer schlimmer, als ihn beizubehalten. Das einzig Kluge ist, zu wissen, welche Informationen für eine bessere Darstellung des Signals weggeworfen werden müssen, und nicht den Informationsverlust selbst.
AlexTP

5
@Willem: Als äußerst offensichtlicher Fall kann ein DC-Signal auf ein einziges Sample heruntergesampelt werden. Im Allgemeinen kann jedes Signal, das keine Komponenten oberhalb der (neuen) Nyquist-Grenze hat, sicher heruntergesampelt werden.
MSalters

1
Es kann argumentiert werden, dass von einem Gleichstromsignal keine Informationen zu einem 1-Sample-Signal verloren gehen, da Sie von 1 Sample zurück in ein Signal konvertieren können, das mit dem ursprünglichen Signal identisch ist. Es kann argumentiert werden, dass Informationen verloren gehen, wenn Sie einer Person das 1-Abtastsignal ohne weitere Informationen geben und fragen: "Stellt dies ein Gleichstromsignal dar?" Die Antwort lautet "Weiß nicht, nicht genügend Informationen mit einer Stichprobe".
Jose Antonio Reinstate Monica

7

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.

Bildbeschreibung hier eingeben

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.

Meine Frage ist: Ist es klüger, die zweite Kurve herunterzusampeln oder die erste Kurve hochzusampeln?

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.

Bildbeschreibung hier eingeben

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.


4

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.


+1, weil Sie es geschafft haben, einige wichtige Informationen in einer sehr präzisen Antwort zusammenzufassen.
dsp_user

3

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.


1

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.