Matlab: xcorr 1d Kreuzkorrelationsnormalisierungsproblem

Ich habe ein Referenzsignal (s1) mit einer Länge von 5 und ein anderes Signal (s2) mit einer Länge von 25 Abtastwerten (das eine verschobene Version desselben Signals mit 5 Abtastwerten s1 enthält).

ch möchte die normalisierte Kreuzkorrelation zwischen den beiden Signalen finden, um den Abtastabstand (Verzögerung / Verzögerung) zwischen den Signalen s1 und s2 zu berechne

I fülle s1 mit Nullen auf (so ist es die gleiche Länge wie s2, die für die Option xcorr 'coordin' erforderlich ist):

s1(numel(s2)) = 0;

und dann mache:

[R lags]=xcorr(s2,s1,'coeff');

[vm im]=max(R); %max. correlation and index
s1_lag=lags(im);

m die normalisierte Kreuzkorrelation für Verzögerungen von -24 bis 24 Abtastwerten zu finde

Da s2 eine verschobene Version von s1 enthält, würde ich erwarten, einen maximalen Korrelationswert von 1 zu erhalten, aber die maximale Korrelation beträgt 0,4776 bei einer Verzögerung von 19 Abtastwerten. Ich verstehe das nicht?

Wenn ich s1 = s2 lasse und xcorr wiederhole (jetzt sind s1 und s2 identisch), erhalte ich wie erwartet einen maximalen Korrelationswert von 1,0 bei 0 Abtastverzögerung.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage