PDS CorrelacionDiscreta

  • Published on
    30-Sep-2015

  • View
    5

  • Download
    0

Embed Size (px)

DESCRIPTION

procesamiento digital de seales

Transcript

  • 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,