Procesamiento de señal digital: ¿Cómo filtra las funciones de paso?

Las funciones de paso se destacan cuando toma el diferencial de tiempo de la señal . Aquí hay un ejemplo simple de una sinusoide más un cambio de paso:


Cuando tomas la diferencia de tiempo, se ve así:

Puede ver que eliminar el cambio de paso se reduce a un problema de eliminación de valores atípicos. Picos en este caso. Aquí, simplemente reemplazaré el valor atípico con 0, pero un mejor enfoque es reemplazarlo con valores cercanos. Una vez que haya formulado la eliminación del cambio de paso como un problema de eliminación atípico, puede recurrir a técnicas como la sustitución del valor perdido o varias técnicas de interpolación para mejorar el resultado.

Una integración rápida y volvemos a la señal original. Casi:
Tenga en cuenta que reemplazar los valores atípicos con ceros provocó un cambio constante. Si esto no se solucionó con la interpolación de los valores faltantes, realizar el procedimiento solo en pequeños subconjuntos de la señal al menos habría localizado el error en un corto tramo.

Como puede suponer, hay muchos enfoques diferentes. Podría haber utilizado el diferencial de tiempo para estimar el tamaño del salto y recuperar la señal original no mediante la eliminación de valores atípicos, sino restando la función de cabecera de la señal original. Con ese enfoque, no está tratando su problema como un caso especial de eliminación de valores atípicos, sino como un caso especial de separación o descomposición de la señal en funciones básicas.

Aquí está el código matlab para las parcelas de ejemplo:

  x = [0: 0.1: 50]; y = sin (x) + 2 * (x> 25);  % de aspecto rápido en el costado
 figura; trama (y)
 z = diff (y);  % diferencial de tiempo
 figura; trama (z)
 z = z. * (abs (z) <0.2)% reemplace con cero si el diferencial está por encima de cierto umbral
 y = cumsum (z)% Integrar la función
 figura; trama (y) 

Aquí hay una gráfica de un ejemplo de lo que está describiendo, con una sinusoide como señal continua y una función de paso Heaviside en x = 0.4.

Es difícil deshacerse del paso sin distorsionar su función. No lo haría en el dominio de la frecuencia (análisis de Fourier) ya que la función de paso ocupa una amplia gama de componentes de frecuencia. El enfoque más simple que se me ocurre es probar las fluctuaciones mayores que algún valor y restar este valor del resto de la señal. Aquí se explica cómo hacerlo en Matlab:

  N = longitud (señal);
 para i = 1: N-1
     if (señal (i + 1) - señal (i)> 0.5)
         diff = señal (i + 1) - señal (i);
         señal (i + 1: N) = señal (i + 1: N) - diff;
     final
 final 

.

El resultado se ve un poco en mal estado. Podemos hacerlo mejor al requerir que la derivada de la señal sea continua también. Vea mi respuesta a ¿Cómo Matlab o los sistemas de álgebra computacional encuentran derivadas de funciones? ¿Es correcto que usen una transformación matricial? para conduce a encontrar derivados con diferencias finitas. Si establece la derivada en el “punto de paso” igual a los promedios de las derivadas vecinas, se acercará. Resta esta derivada multiplicada por el espaciado de puntos del resto de la señal, y tendrás una mejor reconstrucción.

Este método es muy ad hoc, pero no creo que las técnicas más avanzadas funcionen mejor en este caso. La función de paso no es un problema que haya molestado a las personas en el procesamiento de la señal lo suficiente como para que las rutinas estándar estén ampliamente disponibles.