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.