Ich habe zwei Sätze von Daten aus Experimenten, und sie sehen sehr ähnlich aus, außer dass es einen horizontalen Versatz zwischen ihnen gibt, was meiner Meinung nach auf einige Fehler in der Instrumenteneinstellung zurückzuführen ist. Angenommen, sie haben die Form y1=f(x1)
und y2=f(x2)= f(x1+c)
, was ist der beste Weg, c
zu bestimmen, so dass ich den Offset berücksichtigen kann, um zwei Datensätze zu überlagern, um ein Datensatz zu werden?Wie findet man eine Verzögerung zwischen zwei Datensätzen in Matlab?
Edit: sie meine Datensätze sagen (Index 1 und 2) hat die Form:
x1 = 0:0.2:10;
y1 = sin(x1)
x2 = 0:0.3:10;
y2 = sin(x2+0.5)
Natürlich werden die realen Daten etwas Lärm, aber sagen, dass die beste Lösung Funktionen, die oben Formen haben . Wie finde ich den Offset c=0.5
? Ich habe mir die Kreuzkorrelation angesehen, bin mir aber nicht sicher, ob sie zwei Datensätze mit unterschiedlicher Anzahl von Daten (und unterschiedlichen Schrittgrößen) verarbeiten können. Was ist, wenn die Offset-Werte tatsächlich zwischen zwei Datenpunkten liegen? Kreuzkorrelation gibt nur den Index der Daten im Array zurück, nicht etwas dazwischen, wenn ich es richtig verstehe.
Ich würde 'xcorr' oder' conv' verwenden und den Index des Maximums finden. Lieber ein kleines Beispiel mit aktuellen Daten posten, um genauere Hilfe zu bekommen. –
Dieses Problem ist gelöst [HIER] (https://www.mathworks.com/help/signal/ref/xcorr.html?requestedDomain=www.mathworks. com). – jsanalytics
_... nicht sicher, ob sie zwei Datensätze mit unterschiedlicher Anzahl von Daten verarbeiten können ..._ => Korrelationsberechnung ist abhängig von einer bestimmten Abtastrate. Wenn Sie unterschiedliche Abtastraten haben, sollten Sie für diese Berechnung den höchsten auswählen. – jsanalytics