Wie Erstellen Autokorrelation Funktion ohne buit-in Funktionen wie xcorr
Möchte ich automatisch zu korrelieren eine random-noise-Vektor mit eingebauten MATLAB-Funktionen.
Mein auto-Korrelations-Gleichung, die gegeben ist:
Rxx[L] = ∑ from n = 1 to N-1 [x(n)*x(n+L)]
L = [0:200]
Ich geschrieben habe, der code unten, aber die plot
Rxx
vs L
plot
ist nicht das, was ich erwarte.
Ich erwarte mein plot zu starten, bei einigen maximal bei L = 0
oder L = 1
da MATLAB beginnt der index bei 1. Dann exponentiell verringern und gesättigte Fettsäuren auf ein min von null.
clc
clear all
randn('seed',2496132);
n = randn(1,1024);
upperbound = numel(n)-1;
for L = 1:200
for j = 1 : upperbound
n1(j) = n(j)+L;
Rxx(j) = (n(j)*n1(j));
end
Rxx_sum(L) = sum(Rxx);
Rxx = 0;
end
plot([1:200], Rxx_sum)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie Fehler in innerer Schleife: Sie müssen
n1(j) = n(j+L);
stattn1(j) = n(j)+L;
. E. g. Sie müssen hinzufügenL
zu indizieren stattdessen Wert.Zweite Fehler ist folgender: wenn Sie verwenden möchten
upperbound = numel(n)-1
haben, als Sie sollten verwenden, L gleich 0 oder 1 nur. E. g. Sie äußere Schleife wirdStattdessen können Sie auch richtig upperbound-Wert:
Dort
maxL
ist der maximale Wert von L wird verwendet in next-Schleife.Noch ein Tipp: es ist möglich, die Erhöhung der Geschwindigkeit der Berechnung, wenn Sie ersetzen die innere Schleife mit Skalarprodukt, z.B.
Ich landete Festsetzung mein script mit Hilfe der oben genannten code.