Main Content

finddelay

Estimar retardos entre señales

Descripción

ejemplo

d = finddelay(x,y) devuelve una estimación del retardo d entre las señales de entrada x e y. Los retardos en x e y pueden introducirse anteponiendo ceros.

ejemplo

d = finddelay(x,y,maxlag) utiliza maxlag para encontrar los retardos estimados entre x e y.

Ejemplos

contraer todo

A continuación, se muestra que Y se retarda con respecto a X por dos muestras.

X = [1 2 3];
Y = [0 0 1 2 3];
D = finddelay(X,Y)
D = 2

Aquí tiene un caso de Y adelantado con respecto a X por tres muestras.

X = [0 0 0 1 2 3 0 0]';
Y = [1 2 3 0]';
D = finddelay(X,Y)
D = -3

A continuación, se presenta un caso en el que Y está alineado con X pero tiene ruido.

X = [0 0 1 2 3 0];
Y = [0.02 0.12 1.08 2.21 2.95 -0.09];
D = finddelay(X,Y)
D = 0

Si Y es una versión periódica de X, se devuelve el menor retardo posible.

X = [0 1 2 3];
Y = [1 2 3 0 0 0 0 1 2 3 0 0];
D = finddelay(X,Y)
D = -1

maxlag se especifica como un escalar (mismos tamaños de ventana máximos).

X = [0 1 2];
Y = [0 1 0 0;
     1 2 0 0;
     2 0 1 0;
     0 0 2 1];
maxlag = 3;
D = finddelay(X,Y,maxlag)
D = 1×4

     0    -1     1     1

Especifique X e Y del mismo tamaño. finddelay opera columna por columna.

X = [0 1 0 0;
     1 2 0 0;
     2 0 1 0;
     1 0 2 1;
     0 0 0 2];
Y = [0 0 1 0;
     1 1 2 0;
     2 2 0 1;
     1 0 0 2;
     0 0 0 0];
D = finddelay(X,Y)
D = 1×4

     0     1    -2    -1

Repita el cálculo, pero ahora añada una fila extra de ceros como segunda fila de Y.

Y = [0 0 1 0;
     0 0 0 0;
     1 1 2 0;
     2 2 0 1;
     1 0 0 2;
     0 0 0 0];
D = finddelay(X,Y)
D = 1×4

     1     2    -1     0

Cree dos señales multicanal, X e Y, de forma que cada canal de Y tenga una copia idéntica con retardo de cada canal de X.

X = [1 3 2 0 0 0 0 0;
     0 0 0 0 0 1 3 2]';

Y = [0 0 0 1 3 2;
     1 3 2 0 0 0]';

Calcule los retardos columna por columna. Establezca un tamaño máximo de ventana de correlación de 8 para cada canal.

maxlag = [8 8];
D = finddelay(X,Y,maxlag)
D = 1×2

     3    -5

Reduzca el tamaño de la ventana de correlación a 3 para el primer canal y a 5 para el segundo.

maxlag = [3 5];
D = finddelay(X,Y,maxlag)
D = 1×2

     3    -5

Aumente el tamaño de la ventana de correlación a 5 para el primer canal y redúzcalo a 3 para el segundo.

maxlag = [5 3];
D = finddelay(X,Y,maxlag)
D = 1×2

     3    -3

Argumentos de entrada

contraer todo

Entrada de referencia, especificada como vector o matriz.

Señal de entrada, especificada como vector o matriz.

Tamaño máximo de la ventana de correlación, especificado como escalar o vector entero. Si algún elemento de maxlag es negativo, se sustituye por su valor absoluto. Si algún elemento de maxlag no tiene un valor entero o es complejo, Inf, o NaN, finddelay devuelve un error.

Argumentos de salida

contraer todo

Retardo entre las señales de entrada, devuelto como escalar o vector entero. Si y se retarda con respecto a x, d es positivo. Si y se adelanta con respecto a x, d es negativo. Si son posibles varios retardos, como en el caso de las señales periódicas, se devuelve el retardo con el menor valor absoluto. En el caso de que sean posibles tanto un retardo positivo como uno negativo con el mismo valor absoluto, se devuelve el retardo positivo.

Si x es una matriz de tamaño MX por NX (MX > 1 y NX > 1) e y es una matriz de tamaño MY por NY (MY > 1 y NY > 1), finddelay devuelve un vector fila d de retardos estimados entre cada columna de x y la columna correspondiente de y. Con este uso, x e y deben tener el mismo número de columnas (NX = NY).

Sugerencias

  • x e y no tienen por qué ser copias exactas con retardo entre sí, ya que finddelay(x,y) devuelve una estimación del retardo por medio de la correlación cruzada. Sin embargo, este retardo estimado solo tiene un significado útil si existe una correlación suficiente entre las versiones retardadas de x e y.

  • El cálculo del vector de retardos estimados, d, depende de x, y y maxlag como se muestra en la tabla.

    maxlagXYD
    Escalar de valor enteroVector fila o vector columna o matrizVector fila o vector columna o matrizCorrelación cruzada de las columnas de X e Y en un intervalo de desfases de –maxlag a maxlag.
    Vector fila o vector columna de valor enteroVector fila o vector columna de longitud LX ≥ 1Matriz de tamaño MY por NY (MY > 1, NY > 1)Correlación cruzada de X y la columna j de Y en un intervalo de desfases de –maxlag(j) a maxlag(j), para j = 1, …, NY.
    Vector fila o vector columna de valor enteroMatriz de tamaño MX por NX (MX > 1, NX > 1)Vector fila o vector columna de longitud LY ≥ 1Correlación cruzada de la columna j de X e Y en un intervalo de desfases de –maxlag(j) a maxlag(j), para j = 1, …, NX.
    Vector fila o vector columna de valor enteroMatriz de tamaño MX por NX (MX > 1, NX > 1)Matriz de tamaño MY- por NY (MY > 1, NY = NX > 1)Correlación cruzada de la columna j de X y la columna j de Y en un intervalo de desfases de –maxlag(j) a maxlag(j), para j = 1, …, NY.

  • Si quiere tratar un vector fila x de longitud LX como si incluyera una muestra de LX canales diferentes, tiene que añadir una o más filas de ceros a x para que aparezca como una matriz. Entonces cada columna de x se considerará un canal.

    Por ejemplo, x = [1 1 1 1] se considera un único canal que consta de cuatro muestras. Para tratarlo como cuatro canales diferentes, cada uno de los cuales incluya una muestra, defina una matriz nueva xm:

    Cada columna de xm corresponde a un solo canal, cada uno de los cuales contiene las muestras 1 y 0.

    xm = [1 1 1 1;
          0 0 0 0];
    

Algoritmos

La función finddelay utiliza la función xcorr para determinar la correlación cruzada entre cada par de señales en todos los retardos posibles especificados por el usuario. A continuación, se calcula la correlación cruzada normalizada entre cada par de señales. El retardo estimado viene dado por el negativo del retardo para el que la correlación cruzada normalizada tiene el mayor valor absoluto.

Si más de un retardo conduce al mayor valor absoluto de la correlación cruzada, como en el caso de las señales periódicas, el retardo se elige como el negativo del menor (en valor absoluto) de dichos retardos.

Los pares de señales no tienen por qué ser copias exactas con retardo unas de otras. Sin embargo, este retardo estimado solo tiene un significado útil si existe una correlación suficiente entre al menos un par de señales retardadas.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Consulte también

| | | |