Correlatie tussen twee functies.

Moderators: dirkwb, Xilvo

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Reageer
Berichten: 2.589

Correlatie tussen twee functies.

Stel dat ik wil weten hoe zeer twee functie op mekaar gelijken dan kan ik ze correleren. om volgende site staat er een formule hiervoor:

http://www.bores.com.../time/2_ave.htm die is
\(r[n]=\sum x [k]*y[n+k] ´\)
ik vermoed dus in woorden dat als n = aan nul de correlatie het grootst zal zijn. echter als ik met matlab de correlatie uitreken met de ingebouwde functie dan bekom ik gelijkaardig figuren aan die men op de site geeft:

Afbeelding

maw in het begin een nulpunt en naarmate de waardes toenemen een maximum.

reken ik met de hand de forumle uit of met een zelf geschreven functie nameijk

Code: Selecteer alles


sum(y.*y)

dan bekom ik wel wat ik verwacht een maximum in de oorsprong.

Waar zit het verschil?

Groeten.

Gebruikersavatar
Berichten: 2.609

Re: Correlatie tussen twee functies.

Er is een verschil tussen autocorrelatie en kruiscorrelatie.

De tweede volgt de formule die jij geeft en bepaalt de correlatie tussen 2 signalen. De autocorrelatie is eigenlijk de kruiscorrelatie van een signaal met zichzelf. Bij de autocorrelatie heb je dus inderdaad een maximum voor n=0, wat overigens de energie van het signaal voorstelt. Voor de kruiscorrelatie hoeft het maximum niet op n=0 te liggen. (De eens aan de kruiscorrelatie tussen een sin en een cos functie met gelijke amplitude, frequentie en fase=0.)

Berichten: 2.589

Re: Correlatie tussen twee functies.

maar als de auto correlatie een speciaal geval is van de kruis correlatie waarom bekom ik dan voor volgende namelijk xcorr(y,y) geen maximum in de oorsprong?

Voor de kruiscorrelatie hoeft het maximum niet op n=0 te liggen.



waarom niet wat verschilt er dan in die formule en waarom heeft men dan dat mathematisch verschil?

Gebruikersavatar
Berichten: 2.609

Re: Correlatie tussen twee functies.

De MATLAB implementatie berekent de kruiscorrelatie ook voor negatieve lags. Het eerste punt in de teruggegeven vector is dus niet lag=0.

Als je volgende code gebruikt, dan zou je in de plot moeten zien dat het maximum wel degelijk bij lag=0 ligt.

Code: Selecteer alles


[c lags] = xcorr(y,y);

plot(lags,c)

De kruiscorrelatie kan je interpreteren als een schatting voor hoe sterk 2 signalen met elkaar overeenkomen op verschillende posities van elkaar. En sinus en cosinus zijn dezelfde functie maar verschillen 90° in fase. Op lag 0 zijn ze dus wel gecorreleerd, maar niet maximaal: er zijn immers punten waar ze niet hetzelfde teken hebben en dus een negatieve bijdrage leveren aan de som. Als je 1 van de 2 een beetje opschuift zodat ze in fase komen, dan hebben ze steeds hetzelfde teken en dan zal de correlatie maximaal zijn, maar dat is dan niet in lag=0.

Berichten: 2.589

Re: Correlatie tussen twee functies.

dat maakt veel duidelijk.

bedankt voor de hulp.

Reageer