16
Flavio Carrillo Gomero Laboratorio de Procesamiento de Señales Setiembre 2014 1 UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS (Universidad del Perú, DECANA DE AMERICA) FACULTAD DE INGENIERIA ELECTRONICA Y ELECTRICA LABORATORIO DE PROCESAMIENTO DE SEÑALES En algunas circunstancias se requiere calcular el grado de similitud entre dos señales continuas o discretas. Por ejemplo, en comunicaciones la señal a transmitir se codifica con símbolos que posteriormente deben ser recuperados en el receptor al pasar por el canal de comunicaciones. El receptor compara la señal recibida con los patrones de símbolos que pueden ser enviados para su detección. Otro ejemplo esta relacionado con la tecnologías de radar o sonar, cuando las señales enviadas son reflejadas por el objeto de interés y reflejadas de nuevo hacia el transmisor. Comparando estas señales con las originales se puede obtener información del objeto bajo observación. La herramienta matemática para evaluar la similitud entre dos señales se denomina correlación. Se define como correlación cruzada a la operación entre dos secuencia x[n] e y[n] reales y lo denotamos como r xy [k] a la secuencia: , 0, 1, 2, ..... xy n x k k k r nyn donde: El parámetro k es el desplazamiento o retardo (lag) y representa el desplazamiento o retardo temporal entre dos señales. 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 subíndices en r xy [k] indica que la secuencia x[n] queda fíja e y[n] se desplaza. n yx xy n xnyn k yn kxn r k r k Es decir la secuencia r yx [k] se obtiene realizando una inversión temporal de r xy [k] Otra definición de utilidad es la autocorrelación de una secuencia x[n], y se denota como r xx [k] a la secuencia: CORRELACIÓN DISCRETA UTILIZANDO MATLAB

PDS CorrelacionDiscreta

Embed Size (px)

DESCRIPTION

procesamiento digital de señales

Citation preview

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 1

    UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

    (Universidad del Per, DECANA DE AMERICA)

    FACULTAD DE INGENIERIA ELECTRONICA Y ELECTRICA

    LABORATORIO DE PROCESAMIENTO DE SEALES

    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:

    , 0, 1, 2,.....xyn

    xk k kr n y 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.

    n

    yx xy

    n

    x n y n k y n k x nr k r k

    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:

    CORRELACIN DISCRETA UTILIZANDO MATLAB

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 2

    , 0, 1, 2,...xxn

    x n x nr k kk

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

    20 xn

    xx x nr E

    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:

    *xyn n

    r k x k y kx n y n k x n y k 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].

    En forma anloga para la autocorrelacin de la secuencia x[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:

    0 0xy

    xx y

    y

    y

    x

    r k

    r rk .. Correlacin normalizada

    0

    xx

    x

    xx

    x

    r k

    rk . Autocorrelacin normalizada

    Con estas definiciones los coeficientes estn acotados en el intervalo:

    1 1

    1 1

    xx

    xy

    k

    k

    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

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

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

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 3

    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 4

    [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]');

    %

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

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

    0 2 4 6 8 10 12 14 16 18 200

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    n (seg)

    x[n

    ]

    SECUENCIA x[n]

    2 4 6 8 10 12 14 16 18 20 220

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    n (seg)

    y[n

    ]

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

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 5

    Fig. 3 Ruido w[n]

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

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

    2 4 6 8 10 12 14 16 18 20 22-1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    n (seg)

    w[n

    ]

    RUIDO: w[n]

    2 4 6 8 10 12 14 16 18 20 22-1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    n (seg)

    yn[n

    ]

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

    -20 -18 -16 -14 -12 -10 -8 -6 -4 -2 00

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    n (seg)

    x[-

    n]

    SECUENCIA x[-n]

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 6

    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.

    1*

    ^

    0

    ^*

    , 0

    0

    N k

    nxy

    yx

    x n k y n k

    r k

    r k k

    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:

    -15 -10 -5 0 5 10 15 200

    0.5

    1

    1.5

    2

    2.5

    3

    3.5

    4

    k (segundos)

    rxy

    correlacion cruzada de x[n] e yn[n]

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 7

    'biased': Estimacin sesgada de la funcin de correlacin cruzada.

    ,1

    xy biased xyr k r kN

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

    ,1

    xy unbiased xyr k r kN k

    '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 8

    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]');

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

    0 2 4 6 8 10 12 14 16 18 200

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    n (seg)

    x[n

    ]

    Secuencia x[n]

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 9

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

    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?

    0 2 4 6 8 10 12 14 16 18 200

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    n (seg)

    y[n

    ]

    Secuencia y[n]

    -20 -15 -10 -5 0 5 10 15 20-0.5

    0

    0.5

    1

    1.5

    2

    2.5

    3

    X= -4

    Y= 3

    k (seg)

    rxy[k

    ]

    Correlacin rxy[k]

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 10

    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 11

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

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

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

    0 2 4 6 8 10 12 14 16 18 200

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    n (seg)

    x[n

    ]

    Secuencia x[n]

    0 2 4 6 8 10 12 14 16 18 200

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    n (seg)

    y[n

    ]

    Secuencia y[n]

    0 2 4 6 8 10 12 14 16 18 20-0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    1.4

    1.6

    n (seg)

    y[n

    ]+w

    [n]

    Secuencia y[n] mas ruido

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 12

    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

    -20 -15 -10 -5 0 5 10 15 20-0.5

    0

    0.5

    1

    1.5

    2

    2.5

    3

    3.5

    4

    X= -4

    Y= 3.606

    k (seg)

    rxy[k

    ]

    Correlacin rxy[k]

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 13

    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].

    Fig.14 Secuencia coseno x[n].

    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?

    0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    X: 0.01

    Y: 1

    n (seg)

    x[n

    ]

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

    -0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    X: 0.01

    Y: 0.902

    k (seg)

    rxx[k

    ]

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

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 14

    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 15

    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]');

    Fig.16 Seal coseno x[n]

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

    0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    X: 0.005

    Y: -1

    n (seg)

    x[n

    ]

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

    0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    X: 0.0025

    Y: -1

    n (seg)

    y[n

    ]

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

  • Flavio Carrillo Gomero Laboratorio de Procesamiento de Seales Setiembre 2014 16

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

    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

    -0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    X: 0.01

    Y: 0.901

    k (seg)

    rxx[k

    ]

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

    -0.1 -0.08 -0.06 -0.04 -0.02 0 0.02 0.04 0.06 0.08 0.1-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    X: 0.0025

    Y: 0.9751

    k (seg)

    rxy[k

    ]

    CORRELACION DE x[n] e y[n]