Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

finddelay

Estimación de retardo entre señales

Sintaxis

D = finddelay(X,Y)
D = finddelay(...,maxlag)

Descripción

D = finddelay(X,Y), donde y son vectores de fila o columna, devuelve una estimación del retardo entre y, donde actúa como el vector de referencia.XYDXYX Si se retrasa con respecto a, entonces es positivo.YXD Si se avanza con respecto a, entonces es negativo.YXD Retrasos en y pueden ser introducidos por ceros prependientes.XY

y no necesitan ser copias retrasadas exactas entre sí, ya que devuelve una estimación del retardo mediante correlación cruzada.XYfinddelay(X,Y) Sin embargo, este retraso Estimado tiene un significado útil sólo si hay suficiente correlación entre las versiones retrasadas de y.XY Además, si son posibles varios retrasos, como en el caso de las señales periódicas, se devuelve el retardo con el valor absoluto más pequeño. En el caso de que sea posible un retraso positivo y negativo con el mismo valor absoluto, se devolverá el retardo positivo.

, donde hay una matriz de tamañoD = finddelay(X,Y)X MXporNX (MX > 1 y NX > 1) y es una matriz de tamañoY MYporNY (MY > 1 y NY > 1), devuelve un vector de fila de los retrasos estimados entre cada columna de y la columna correspondiente de.DXY Con este uso el número de columnas de debe ser igual al número de columnas de (es decir,XY NX = NY).

D = finddelay(...,maxlag), se utiliza como el tamaño máximo de la ventana de correlación utilizado para encontrar los retrasos estimados entre y.maxlagXY El uso de se detalla en la tabla a continuación.maxlag

De forma predeterminada, es igual amaxlag max(LX,LY) – 1 para dos entradas vectoriales (donde LX Y LY son las longitudes de y, respectivamente),XY max(MX,MY) – 1 para dos entradas matriciales y max(LX, MY) – 1 O max(MX, LY) – 1 para una entrada vectorial y una entrada matricial. Si se introduce como, se sustituye por el valor predeterminado.maxlag[] Si algún elemento es negativo, se sustituye por su valor absoluto.maxlag Si cualquier elemento de no tiene un valor entero, o es complejo, o, a continuación, devuelve un error.maxlagInfNaNfinddelay

El cálculo del vector de retrasos estimados, depende de, y como se muestra en la tabla siguiente.DXYmaxlag

maxlagXYse calcula por...D
Escalar de valor enteroVector o matriz de fila o columnaVector o matriz de fila o columnaCorrelacionar las columnas de y sobre un intervalo de retrasos::.XYmaxlagmaxlag
Vector de fila o columna con valores enterosVector de fila o columna de longitud LX ≥ 1Matriz de tamaño MYporNY (MY > 1, NY > 1)Correlación cruzada y columna de más de un intervalo de retrasos – (): (), para = 1:XjYmaxlagjmaxlagjjNY.
Vector de fila o columna con valores enterosMatriz de tamaño MXporNX (MX > 1, NX > 1)Vector de fila o columna de longitud LY ≥ 1Columna de correlación cruzada de y sobre un rango de retrasos – (): (), para = 1:jXYmaxlagjmaxlagjjNX.
Vector de fila o columna con valores enterosMatriz de tamaño MXporNX (MX > 1, NX > 1)Matriz de tamaño MY-porNY (MY > 1, NY = NX > 1)Correlacionando la columna de y la columna de más de un rango de retrasos – (): (), para = 1:jXjYmaxlagjmaxlagjjNY.

Tratar como canales múltiplesX

Si desea tratar un vector de fila de longitudX LX que comprende una muestra de LX canales diferentes, debe anexar una o más filas de ceros para que aparezca como una matriz.X A continuación, cada columna de se considerará un canal.X

Por ejemplo, se considera un solo canal que consta de cuatro muestras.X = [1 1 1 1] Para tratarlo como cuatro canales diferentes, cada canal que comprende una muestra, define una nueva matriz:Xm

Xm = [1 1 1 1;       0 0 0 0]; 

Cada columna corresponde a un único canal, cada uno de los cuales contiene las muestras y.Xm10

Ejemplos

contraer todo

Los siguientes programas se retrasan con respecto a dos muestras.YX

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

Aquí hay un caso de avanzada con respecto a por tres muestras.YX

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

A continuación se ilustra un caso en el que está alineado, pero es ruidoso.YX

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 se trata de una versión periódica de, se devuelve el menor retraso posible.YX

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

se especifica como un escalar (mismo tamaño máximo de ventana).maxlag

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 y del mismo tamaño. trabaja columna por columna.XYfinddelay

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 agregue una fila adicional de ceros como la 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

Crear dos señales multicanal, y, de tal forma que cada canal de tiene una copia idéntica retrasada de cada canal de.XYYX

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 retrasos 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

Disminuya el tamaño de la ventana de correlación a 3 para el primer canal y 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 disminuirlo a 3 para el segundo.

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

     3    -3

Algoritmos

La función utiliza la función para determinar la correlación cruzada entre cada par de señales en todos los retrasos posibles especificados por el usuario.finddelayxcorr A continuación, se calcula la correlación cruzada normalizada entre cada par de señales. El retardo Estimado se da por el negativo del retardo para el cual la correlación cruzada normalizada tiene el valor absoluto más grande.

Si más de un desfase lleva al valor absoluto más grande de la correlación cruzada, como en el caso de las señales periódicas, el retardo se elige como el negativo del más pequeño (en valor absoluto) de tales retrasos.

Los pares de señales no necesitan ser copias retrasadas exactas entre sí. Sin embargo, el retardo Estimado tiene un significado útil sólo si hay suficiente correlación entre al menos un par de las señales retrasadas.

Capacidades ampliadas

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

Consulte también

| | | |