Está en la página 1de 16

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

(Universidad del Per, DECANA DE AMERICA)


FACULTAD DE INGENIERIA ELECTRONICA Y ELECTRICA
LABORATORIO DE PROCESAMIENTO DE SEALES

CORRELACIN DISCRETA UTILIZANDO MATLAB

En algunas circunstancias se requiere calcular el grado de similitud entre dos seales


continuas o discretas. Por ejemplo, en comunicaciones la seal a transmitir se codifica
con smbolos que posteriormente deben ser recuperados en el receptor al pasar por el
canal de comunicaciones. El receptor compara la seal recibida con los patrones de
smbolos que pueden ser enviados para su deteccin. Otro ejemplo esta relacionado con
la tecnologas de radar o sonar, cuando las seales enviadas son reflejadas por el
objeto de inters y reflejadas de nuevo hacia el transmisor. Comparando estas seales
con las originales se puede obtener informacin del objeto bajo observacin.

La herramienta matemtica para evaluar la similitud entre dos seales se denomina correlacin.

Se define como correlacin cruzada a la operacin entre dos secuencia x[n] e y[n] reales y lo
denotamos como rxy[k] a la secuencia:


rxy k x n y n k , k 0, 1, 2,.....
n

donde:

El parmetro k es el desplazamiento o retardo (lag) y representa el desplazamiento o retardo


temporal entre dos seales.
La secuencia y[n + k] se desplaza k muestras a la izquierda respecto de x[n] para k > 0 y k
muestras hacia la derecha para k < 0.
El orden de los subndices en rxy[k] indica que la secuencia x[n] queda fja e y[n] se desplaza.


ryx k x n y n k y n k x n r k
xy
n n

Es decir la secuencia ryx[k] se obtiene realizando una inversin temporal de rxy[k]

Otra definicin de utilidad es la autocorrelacin de una secuencia x[n], y se denota como rxx[k]
a la secuencia:

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 1

rxx k x n x n k , k 0, 1, 2,...
n

Si k = 0 la autocorrelacin es iguala a la energa de la secuencia x[n]


rxx 0 x n E
2
x
n

Se demuestra que existe relacin entre la correlacin y la convolucin discreta, es decir, si


volvemos a escribir la expresin de la correlacin entre dos secuencias:


rxy k x n y n k x n y k n x k * y k
n n

del cual observamos que la correlacin cruzada entre dos secuencia x[n] e y[n] se puede obtener
por medio de la convolucin de x[n] con el espejo de y[n].

x[n] y[-n] rxy[n]

En forma anloga para la autocorrelacin de la secuencia x[n].

x[n] x[-n] rxx[n]

En consecuencia, para calcular la correlacin entre dos secuencias podemos utilizar los mismos
procedimientos hechos para la convolucin.

Para evitar que el resultado de la correlacin dependa de las secuencias consideradas se definen
los coeficientes de correlacin y autocorrelacin normalizada de la siguiente forma:

rxy k
xy k .. Correlacin normalizada
rxx 0 ryy 0

rxx k
xx k . Autocorrelacin normalizada
rxx 0

Con estas definiciones los coeficientes estn acotados en el intervalo:

1 xx k 1
1 xy k 1

independiente de las secuencias consideradas.

EJEMPLO (1):

En este ejemplo de aplicacin de la correlacin cruzada de dos secuencias, se va a determinar el


retardo en el tiempo (en segundos) entre las dos secuencias x[n] e y[n] utilizando la propiedad

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 2
de clculo de la correlacin cruzada por medio de la convolucin discreta, tal como se muestra
el proceso desde la Fig.1 a la Fig.6. Para obtener el retardo k deseado, se va a generar una
secuencia x[n] = [n-2] + [n-3] + [n-4], donde el intervalo de tiempo entre muestra y muestra
es de 1 segundo para ser correlacionado con la secuencia y[n] = x[n-k] + w[n], donde w[n] es el
ruido aleatorio generado por el comando randn de Matlab, tambin con el mismo intervalo de
tiempo entre muestra y muestra. Finalmente se determinar la correlacin rxy[k] de estas dos
secuencias, mostrada en la Fig.6. Cul ser el retardo de y[n] respecto a x[n]?, Qu
conclusiones se podrn obtener?.

Con el siguiente cdigo mostrado, se puede comprobar la rxy[k] de x[n] e yn[n], donde
yn[n]=x[n-4]+w[n].

% CORRELACION UTILIZANDO LA CONVOLUCION


close all,
clear all,
clc,
% ------------------------------------
%Secuencia x[n]
% ------------------------------------
x=[0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
nx=0:length(x)-1; % Dada la seal x[n]
figure(1);
stem(nx,x,'b');grid;
xlabel('n (seg)');ylabel('x[n]');
title('SECUENCIA x[n]');
% ------------------------------------
% Secuencia x[n] retardada k segundos
% ------------------------------------
k=4; % k: retardo de k segundos
ny=nx; % ny; rango de variacion de y[n]
[y,ny]=sigshift(x,ny,k); % obtener y[n]=x[n-k]
figure(2);
stem(ny,y,'r');grid;
xlabel('n (seg)');ylabel('y[n]');
title('SECUENCIA y[n]=x[n-k], para k=5');
% ----------------------------------
% Generacion de ruido aleatorio w[n]
% ----------------------------------
nr=0.6; % Nivel de ruido
w=nr*randn(1,length(y)); % generar w[n]
nw=ny;
figure(3);
stem(nw,w,'color',[0.3,0.6,0.8]);grid;
xlabel('n (seg)');ylabel('w[n]');
title('RUIDO: w[n]');
% ----------------------------------
% Secuencia de x[n] mas ruido w[n]
% y[n] = x[n] + w[n]
% ----------------------------------
[yn,ny]=sigadd(y,ny,w,nw); % obtener yn[n]=x[n-k]+w[n]
figure(4);
stem(ny,yn,'color',[0.8,0.4,0.5]);grid;
xlabel('n (seg)');ylabel('yn[n]');
title('SECUENCIA y[n] MAS RUIDO,y[n]=x[n-k]+w[n]');
% -----------------------------------
% Imagen de x[n]
% -----------------------------------

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 3
[x,nx]=sigfold(x,nx); % obtener x[-n]
figure(5);
stem(nx,x,'r');grid;
xlabel('n (seg)');ylabel('x[-n]');
title('SECUENCIA x[-n]');
% ------------------------------------
% Correlacion cruzada de x[n] con y[n]
% ------------------------------------
[rxy,nrxy]=conv_m(y,ny,x,nx); % correlacion cruzada
figure(6);
stem(nrxy,rxy,'color',[0.8,0.2,0.1]);grid;
axis([-length(x)+k,length(x)+k, min(rxy),max(rxy)]);
xlabel('k (segundos)');
ylabel('rxy');
title('correlacion cruzada de x[n] e yn[n]');
%
SECUENCIA x[n]
1

0.9

0.8

0.7

0.6
x[n]

0.5

0.4

0.3

0.2

0.1

0
0 2 4 6 8 10 12 14 16 18 20
n (seg)

Fig. 1 Secuencia x[n] = [n-2] + [n-3] + [n-4]

SECUENCIA y[n]=x[n-k], para k=3


1

0.9

0.8

0.7

0.6
y[n]

0.5

0.4

0.3

0.2

0.1

0
2 4 6 8 10 12 14 16 18 20 22
n (seg)

Fig. 2 Secuencia y[n] = x[n-k], para k=3

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 4
RUIDO: w[n]
1.5

0.5
w[n]

-0.5

-1

-1.5
2 4 6 8 10 12 14 16 18 20 22
n (seg)

Fig. 3 Ruido w[n]

SECUENCIA y[n] MAS RUIDO,y[n]=x[n-k]+w[n]


1.5

0.5
yn[n]

-0.5

-1

-1.5
2 4 6 8 10 12 14 16 18 20 22
n (seg)

Fig. 4 Secuencia yn[n] = x[n-k] + w[n], para k=3

SECUENCIA x[-n]
1

0.9

0.8

0.7

0.6
x[-n]

0.5

0.4

0.3

0.2

0.1

0
-20 -18 -16 -14 -12 -10 -8 -6 -4 -2 0
n (seg)

Fig. 5 Secuencia espejo de x[n], x[-n].

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 5
correlacion cruzada de x[n] e yn[n]
4

3.5

2.5
rxy

1.5

0.5

0
-15 -10 -5 0 5 10 15 20
k (segundos)

Fig. 6 Correlacin cruzada de x[n] e yn[n].

En el siguiente grupo de ejemplos, se va a utilizar el comando xcorr de Matlab y sus variantes


para calcular la correlacin cruzada as como la autocorrelacin de secuencias discretas.

El comando xcorr estima la correlacin cruzada discreta de un proceso aleatorio. La


autocorrelacin es un caso especial.

xcorr debe estimar la correlacin discreta debido a que, en la prctica, solamente est
disponible un segmento finito de datos del proceso aleatorio de longitud infinita de datos.

c = xcorr(x,y) retorna la correlacin cruzada discreta a travs de un vector de longitud


2*N-1, donde x e y son vectores de longitud (N>1). Si x e y no son de la misma longitud, el
vector ms corto es rellenado con ceros para igualar al vector ms largo.

En Matlab la longitud mxima permitida para los vectores de entrada a xcorr es 220.

Por defecto, xcorr calcula correlaciones sin normalizacin.

N k 1
x n k y n , k 0
*
^
rxy k n 0
^

yx k k 0
*
r

El vector de salida c tiene elementos dados por c[k] = rxy[k-N], k =1,,2N-1.

En general la correlacin es una funcin que requiere ser normalizado para producir una
exactitud estimada.

c = xcorr(x) es la autocorrelacin discreta para el vector x. Si x es una matriz N x P, c es


una matriz con 2N-1 filas cuyas P2 columnas contienen la correlacion cruzada discreta para
todas las combinaciones de las columnas de x.

c = xcorr(x,y,'option') especifica una opcin de normalizacion para la correlacin


cruzada, donde 'option' es:

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 6
'biased': Estimacin sesgada de la funcin de correlacin cruzada.

1
rxy ,biased k rxy k
N

'unbiased': Estimacin no sesgada de la funcin de correlacin cruzada.

1
rxy ,unbiased k rxy k
Nk

'coeff': Secuencia normalizada tal que las autocorrelaciones en cero retardo son
idnticamente a 1.0.
'none', Correlacin cruzada sin escalado (por defecto).

c = xcorr(x,'option')especifica una de las normalizaciones anteriores de la


autocorrelacin.

c = xcorr(x,y,maxlags) retorna la correlacion cruzada discreta sobre el rango del


retardo [-maxlags:maxlags]. La salida c tiene longitud 2*maxlags+1.

c = xcorr(x,maxlags)retorna la autocorrelacin discreta sobre el rango de retardo [-


maxlags:maxlags]. La salida c tiene longitud 2*maxlags+1. Si x es una matriz N x P, c
es una matriz con 2*maxlags+1 filas cuyas P2 columnas contienen la autocorrelacin discreta
para todas las combinaciones de las columnas de x.

c = xcorr(x,y,maxlags,'option') especifica tanto el numero mximo de retardos y


una opcin de escalamiento para la correlacin cruzada.

c = xcorr(x,maxlags,'option') especifica tanto el nmero mximo de retardos y


una opcin de escalamiento para la autocorrelacin.

[c,lags] = xcorr(...) retorna un vector de los indices de retardo en el cual c fue


estimado, con el rango [-maxlags:maxlags]. Cuando maxlags no es especificado, el
rango de retardos es [-N+1:N-1].

En todos los casos, la correlacin cruzada o la autocorrelacin calculada por xcorr el cero-
simo retardo en la mitad de la secuencia, en elementos o filas maxlags+1 (elemento o fila N
si maxlags no es especificada).

EJEMPLO (2):

En este ejemplo de aplicacin de la correlacin cruzada de dos secuencias, se va a determinar el


retardo en el tiempo (en segundos) entre las dos secuencias x[n] e y[n], tal como se muestran
en la Fig.7 y Fig.8, respectivamente. Para obtener este retardo, se va a generar una secuencia
x[n] = [n] + [n-1] + [n-2], donde el intervalo de tiempo entre muestra y muestra es de 1
segundo para ser correlacionado con la secuencia y[n] = [n-4] + [n-5] + [n-6], tambin del
mismo intervalo de tiempo entre muestra y muestra. Luego se determinar la correlacin rxy[k]
de estas dos secuencias, mostrada en la Fig.9 para luego representarla con las otras secuencias
generadas. Cul ser el retardo de y[n] respecto a x[n]?, Qu conclusiones se podrn obtener?.

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 7
Con el siguiente cdigo mostrado, se puede comprobar la rxy[k] de x[n] e y[n], con el cual se
debe verificar que y[n] = x[n-4].

close all;clear all;clc;


% ------------------------------------------
% CORRELACION CRUZADA DISCRETA
% de dos secuencias x[n] e y[n]
% ------------------------------------------
% Definicion de x[n] e y[n] para 20 muestras
% ------------------------------------------
x=[1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
y=[0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0];
nn=0:length(y)-1; % Rango de la variable n
% ------------------------------------------
% CALCULO DE LA CORELACION ENTRE x[n] e y[n]
% ------------------------------------------
correlacxy=xcorr(x,y);
% ------------------------------------------
% PRESENTACION DE RESULTADOS
figure(1);
stem(nn,x,'r');grid;
xlabel('n (seg)'); ylabel('x[n] ');title('Secuencia x[n]');
figure(2);
stem(nn,y,'b');grid;
xlabel('n (seg)');ylabel('y[n] ');title('Secuencia y[n]');
figure(3);
stem(-length(x)+1:length(y)-...
1,correlacxy,'color',[0.6,0.2,0.7]);grid;
xlabel('k (seg)');ylabel('rxy[k]');title('Correlacin rxy[k]');

Secuencia x[n]
1

0.9

0.8

0.7

0.6
x[n]

0.5

0.4

0.3

0.2

0.1

0
0 2 4 6 8 10 12 14 16 18 20
n (seg)

Fig. 7 Secuencia x[n] = [n] + [n-1] + [n-2]

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 8
Secuencia y[n]
1

0.9

0.8

0.7

0.6
y[n]

0.5

0.4

0.3

0.2

0.1

0
0 2 4 6 8 10 12 14 16 18 20
n (seg)

Fig. 8 Secuencia y[n] = [n-4] + [n-5] + [n-6]

Correlacin rxy[k]
3
X= -4
Y= 3

2.5

1.5
rxy[k]

0.5

-0.5
-20 -15 -10 -5 0 5 10 15 20
k (seg)

Fig. 9 Correlacin discreta rxy[k].

EJEMPLO (3):

En este ejemplo se aplica la correlacin cruzada para determinar el retardo en el tiempo (en
segundos) entre las dos secuencias x[n] e yn[n], donde y[n] es una secuencia sin ruido yn[n] es
y[n] ms ruido, tal como se muestran en la Fig.10, Fig.11, Fig.12, y Fig.13. Para obtener este
retardo, se va a generar una secuencia x[n] = [n] + [n-1] + [n-2], donde el intervalo de
tiempo entre muestra y muestra es de 1 segundo para ser correlacionado con la secuencia yn[n]
= [n-4] + [n-5] + [n-6] + w[n], donde w[n] representa el ruido aleatorio generado por el
comando randn, tambin del mismo intervalo de tiempo entre muestra y muestra. Luego se
determinar la correlacin rxy[k] de estas dos secuencias, mostrada en la Fig.13 para luego
presentarla con las otras secuencias generadas. Cul ser el retardo de y[n] en presencia de
ruido respecto a x[n]?, Qu conclusiones se podrn obtener?

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 9
Con el siguiente cdigo mostrado, se puede comprobar la rxy[k] de x[n] e yn[n].

close all;clear all;clc;


% ------------------------------------------
% CORRELACION CRUZADA DISCRETA
% de dos secuencias x[n] e y[n]
% ------------------------------------------
% Definicion de x[n] e y[n] para 20 muestras
% ------------------------------------------
x=[1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
y=[0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0];
nn=0:length(y)-1; % Rango de la variable n
% ------------------------------------------
% Definicion de la secuencia y[n] + ruido
% ------------------------------------------
% w[n] secuencia de ruido Random
wn=0.4*randn(1,length(y));
% Secuencia de y[n] mas ruido
yn=y+wn;
% ------------------------------------------
% CALCULO DE LA CORELACION ENTRE x[n] e yn[n]=y[n]+w[n]
% ------------------------------------------
correlacxy=xcorr(x,yn);
% ------------------------------------------
% PRESENTACION DE RESULTADOS
figure(1);
stem(nn,x,'r');grid;
xlabel('n (seg)');ylabel('x[n]');
title('Secuencia x[n]');
figure(2);
stem(nn,y,'b');grid;
xlabel('n (seg)');ylabel('y[n]');
title('Secuencia y[n]');
figure(3);
stem(nn,yn,'color',[0.7,0.2,0.4]);grid;
xlabel('n (seg)');ylabel('y[n]+w[n]');
title('Secuencia y[n] mas ruido');
figure(4);
stem(-length(x)+1:length(y)-...
1,correlacxy,'color',[0.3,0.2,0.7]);grid;
xlabel('k (seg)');ylabel('rxy[k]');
title('Correlacin rxy[k]');

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 10
Secuencia x[n]
1

0.9

0.8

0.7

0.6
x[n]

0.5

0.4

0.3

0.2

0.1

0
0 2 4 6 8 10 12 14 16 18 20
n (seg)

Fig. 10 Secuencia x[n] = [n] + [n-1] + [n-2]


Secuencia y[n]
1

0.9

0.8

0.7

0.6
y[n]

0.5

0.4

0.3

0.2

0.1

0
0 2 4 6 8 10 12 14 16 18 20
n (seg)

Fig.11 Secuencia x[n] = [n-4] + [n-5] + [n-6]

Secuencia y[n] mas ruido


1.6

1.4

1.2

0.8
y[n]+w[n]

0.6

0.4

0.2

-0.2

-0.4
0 2 4 6 8 10 12 14 16 18 20
n (seg)

Fig. 12 Ruido discreto w[n] = 0.4randn[n]

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 11
Correlacin rxy[k]
4

3.5 X= -4
Y= 3.606

2.5

2
rxy[k]

1.5

0.5

-0.5
-20 -15 -10 -5 0 5 10 15 20
k (seg)

Fig.13 Correlacin discreta rxy[k].


EJEMPLO (4)

La siguiente aplicacin de la autocorrelacin de una seal es la de determinar las posibles


repeticiones de los patrones presentes en una seal. Para verificar esta afirmacin vamos a
generar una seal coseno de frecuencia igual a 100 Hz y amplitud uno y muestreada a 1 KHz.
Determinaremos la autocorrelacin de esta seal pero ahora normalizada a uno (uso del
comando xcorr(xn,'coeff')) y luego representarla en forma grafica. Cul es el periodo
medible a partir de los datos de la autocorrelacin?, Qu conclusiones se podr obtener?

El cdigo en Matlab que implementa el presente ejemplo es el siguiente:

close all;clear all;clc;


% -----------------------------------------
% DETECCION DE PATRONES A PARTIR DE UNA SECUENCIA PERIODICA
% -----------------------------------------
%Generacin de la seal
f=100; % Frecuencia de la seal de prueba en Hz
fm=1000; % Frecuencia de muestreo en KHz
Tm= 1/fm; % Periodo de muestreo
nn = 0:Tm:0.1;
% -------------------------------------------
xn = cos(2*pi*f*nn);
% -------------------------------------------
%Clculo de la autocorrelacin normalizada
rxx = xcorr(xn,'coeff');
% -------------------------------------------
%Representacin de las seales
figure(1);
plot(nn,xn,'b');grid; xlabel('n (seg)');ylabel('x[n]');
title('SEAL COSENO x[n]=cos(2.pi.f.n)');
figure(2);
plot(-max(nn):Tm:max(nn),rxx,'r');grid;xlabel('k
(seg)');ylabel('rxx[k]');
title('AUTOCORRELACION DE LA SEAL COSENO x[n]=cos(2.pi.f.n)');

De acuerdo a la grfica obtenida en la Fig. 15 al emplear este cdigo, podemos observar que la
autocorrelacin tiene una longitud de datos doble de la que esta compuesta la seal temporal
x[n]. Este hecho se debe a que los desplazamientos, a la hora de calcular la autocorrelacin,
pueden ser positivos o negativos. El ndice central se relaciona con el desplazamiento cero y se

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 12
corresponde, como era de esperar con el valor mximo de dicha autocorrelacin. Por otro lado,
se observa que siendo el periodo de x[n] 0.010 segundos, en la grafica de la Fig.15 que
corresponde a la autocorrelacin de x[n] se observa una serie de mximos y mnimos y que la
distancia entre mximos son equidistantes cuyo valor es de 0.010 segundos, demostrando de
esta manera la periodicidad de x[n].

SEAL COSENO x[n]=cos(2.pi.f.n)


1
X: 0.01
Y: 1
0.8

0.6

0.4

0.2
x[n]

-0.2

-0.4

-0.6

-0.8

-1
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
n (seg)

Fig.14 Secuencia coseno x[n].

AUTOCORRELACION DE LA SEAL COSENO x[n]=cos(2.pi.f.n)


1

0.8 X: 0.01
Y: 0.902

0.6

0.4

0.2
rxx[k]

-0.2

-0.4

-0.6

-0.8

-1
-0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1
k (seg)

Fig.15 Autocorrelacin discreta del coseno.

EJEMPLO (5)

Este ejemplo de aplicacin esta relacionada con la anterior, y es la de determinar el desfasaje


entre dos seales cosenoidales y/o senoidales. Se va a generar dos sinusoides de frecuencia 100
Hz., frecuencia de muestreo fm de 2 KHz, amplitud uno y desfasaje de 90o (/2 radianes).
Determinar la correlacin cruzada entre ellas. Cmo se podr determinar el desfasaje entre
estas dos seales?, Qu conclusiones se podr obtener?

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 13
Para comprender este ejemplo consideremos las sinusoides dadas por:

x[n] = cos(2fn + 1), y[n] = cos(2fn + 2)

donde definimos = 1 - 2 como el desfasaje entre las dos seales. Se puede calcular el
desfasaje comprobando cundo las dos seales vuelven a estar en fase. Por ejemplo para n = 0
se tiene:
x[0] = cos(1), y[0] = cos(2)

Ahora si desplazamos una de las seales N segundos, por ejemplo x[n], hasta que las dos estn
en fase nuevamente, se tiene que:

x[N] = cos(2fN + 1) = y[0] = cos(2).

De la igualdad anterior se obtiene que: 2fN + 1 = 2, de modo que el desfasaje vendr dado
por: = 1 - 2 = 2fN, siendo f la frecuencia de la seal, de donde se obtiene:

N = / 2f

donde N es el tiempo del defasaje equivalente a entre x[n] e y[n].

Podemos emplear la correlacin cruzada para determinar cundo las dos seales estarn en fase,
lo cual ocurrir en los mximos de dicha correlacin. Dado que en los clculos realizados se ha
considerado como punto inicial n = 0, se debe determinar los mximos a partir del punto central
de la correlacin cruzada que es el punto de la correlacin correspondiente a un desplazamiento
cero. El programa de Matlab que implementa este ejemplo es el siguiente:

close all;clear all;clc;


% -----------------------------------------
% DETECCION DE PATRONES A PARTIR DE UNA SECUENCIA PERIODICA
% -----------------------------------------
%Generacin de la seal
f=100; % Frecuencia de la seal de prueba en Hz
fm=2000; % Frecuencia de muestreo en KHz
Tm= 1/fm; % Periodo de muestreo
nn = 0:Tm:0.1;
% -------------------------------------------
xn = cos(2*pi*f*nn); % Seal x[n]
yn = cos(2*pi*f*nn+pi/2); % Seal y[n]
% -------------------------------------------
%Clculo de la autocorrelacin y correlacin normalizada
%
[rxx lag1] = xcorr(xn,'coeff'); % autocorrelacin
[rxy lag2] = xcorr(xn,yn,'coeff'); %correlacin cruzada
%
% -------------------------------------------
%Representacin de las seales
figure(1);
plot(nn,xn,'b');grid; xlabel('n (seg)');ylabel('x[n]');
title('SEAL COSENO x[n]=cos(2.pi.f.n)');
figure(2);
plot(nn,yn,'color',[0.5 0.3 0.6]);grid; xlabel('n
(seg)');ylabel('y[n]');
title('SEAL COSENO DEFASADO 90, y[n]=cos(2.pi.f.n+pi/2)');
figure(3);

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 14
plot(-max(nn):Tm:max(nn),rxx,'r');grid;xlabel('k
(seg)');ylabel('rxx[k]');
title('AUTOCORRELACION DE LA SEAL COSENO, x[n]=cos(2.pi.f.n)');
figure(4);
plot(-max(nn):Tm:max(nn),rxy,'color',[0.8 0.1 0.4]);grid;xlabel('k
(seg)');ylabel('rxy[k]');
title('CORRELACION DE x[n] e y[n]');

SEAL COSENO x[n]=cos(2.pi.f.n)


1

0.8

0.6

0.4

0.2
x[n]

-0.2

-0.4

-0.6

-0.8
X: 0.005
Y: -1
-1
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
n (seg)

Fig.16 Seal coseno x[n]

SEAL COSENO DEFASADO, y[n]=cos(2.pi.f.n+pi/2)


1

0.8

0.6

0.4

0.2
y[n]

-0.2

-0.4

-0.6

-0.8
X: 0.0025
Y: -1
-1
0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
n (seg)

Fig.17 Seal coseno y[n] defasado 90 respecto a x[n].

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 15
AUTOCORRELACION DE LA SEAL COSENO x[n]=cos(2.pi.f.n)
1

0.8 X: 0.01
Y: 0.901

0.6

0.4

0.2
rxx[k]

-0.2

-0.4

-0.6

-0.8

-1
-0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1
k (seg)

Fig.18 Autocorrelacin de x[n]=cos(2..f.n). Para = 0, se obtiene N=0.010 segundos.

CORRELACION DE x[n] e y[n]


1
X: 0.0025
0.8 Y: 0.9751

0.6

0.4

0.2
rxy[k]

-0.2

-0.4

-0.6

-0.8

-1
-0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1
k (seg)

Fig.19 Correlacin de la seal x[n] e y[n]. Para = 90, se obtiene N=0.0025 segundos.

REFERENCIA BIBLIOGRFICA:

Soria E.; Martnez, M.; Frances, J.V.; Camps, G.Tratamiento Digital de Seales, Problemas y
Ejercicios. Prentice Hall -- Pearson Educacion S.A., Madrid, 2003. ISBN: 84-205-3559-1
http://books.google.com.ec/books?id=jkhyWjmJBGUC&pg=PA73&lpg=PA73&dq=autocorrela
cion+normalizada+%2B+matlab&source=bl&ots=RlRrdW6bnp&sig=b0svy_EYvH3Ii9LWnM
9mrMTO0DU&hl=es&ei=iByLSqyuFIqwMOyh4cYP&sa=X&oi=book_result&ct=result&resn
um=4#v=onepage&q=&f=false

Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales


Setiembre 2014 16

También podría gustarte