4 votos

Cómo transformar mediante una fórmula matemática una señal en otra tal que mantenga el máximo de la primera señal en la misma posición

Digamos que tenemos los siguientes términos en una cadena (no hay fórmula para los siguientes términos) $$\begin{array}{c|c} \text{ms} & \text{value} \\\hline 1&1 \\\hline 2&2 \\\hline 3&3 \\\hline 4&4 \\\hline 5&5 \\\hline 6&6 \\\hline 7&9 \\\hline 8&10 \\\hline 9&12 \\\hline 10&13 \\\hline 11&7 \\\hline 12&6 \\\hline 13&5 \\\hline 14&11 \\\hline 15&13 \\\hline 16&15 \\\hline 17&17 \\\hline 18&20 \\\hline 19&20 \\\hline 20&20 \\\hline 21&18 \\\hline 22&17 \\\hline 23&16 \\\hline 24&15 \\\hline 25&13 \\\hline 26&11 \\\hline 27&10 \\\hline 28&9 \\\hline 29&8 \\\hline 30&7 \\\hline 31&5 \\\hline 32&3 \\\hline 33&1 \\\hline 34&0 \\\hline \end{array}$$ Para este cuadro tenemos lo siguiente señal de entrada :

enter image description here

De la tabla y de la imagen se puede observar que el máximo es alrededor de $18[\text{ms}]$ cuando el gráfico tiene el mayor valor es igual a $20$ .

Lo que quiero intentar es crear un "filtro" tal que la señal sea más suave y también que el máximo del "filtro" esté casi en la misma posición con el señal de entrada . El caso ideal es la curva roja de la siguiente imagen: enter image description here

Soy consciente de que el caso ideal es muy difícil de obtener, por lo que me gustaría obtener una fórmula que me ayude a transformar la señal de entrada en otra más suave y con el máximo casi en la misma posición.

Lo que he intentado ha sido sumar todo el tiempo la primera $8$ y luego dividir por 8, para luego sumar los elementos a partir de $2$ [ms] a $9$ [ms] y dividido por 8, $\ldots$ y así sucesivamente hasta comenzar con $27$ [ms] a $34$ [ms] y se divide por 8, entonces a partir de $28$ [ms] a $34$ [ms] y dividido por 8, $\ldots$ $33$ [ms] a $34$ [ms] y dividido por 8, $34$ [ms] y dividido por 8.

Así, obtengo la siguiente imagen que es más suave pero el máximo no está casi en la misma posición.

enter image description here

Edición posterior

Quiero decir que hay una fórmula, pero esta fórmula no es tan buena porque el máximo de la entrada no está en el mismo tiempo con el máximo para el filtro.

Así que,

$$\text{Filter}=\sum_{i=t-\text{buffer}}^{t}{\text{Input}_{t}},$$ donde $\text{buffer}$ puede ser cualquier valor.

4voto

mathreadler Puntos 3517

Un enfoque que puede probar es hacer un mínimos cuadrados lineales ponderados (Wikipedia) encaja.

Un peso no ponderado mínimos cuadrados lineales (MathWorld) se puede expresar $${\bf c_o} = \min_{\bf c}\|\bf \Phi c - d\|_2$$ Donde las funciones base a las que se ajusta se almacenan como vectores columna en $\bf \Phi$ . Ahora lo que se puede hacer es añadir una matriz de pesos diagonal $\bf W$ :

$${\bf c_o} = \min_{\bf c}\bf \|W(\Phi c -d)\|_2$$ Podemos hacer $\bf W$ tener el elemento diagonal correspondiente al punto de datos máximo realmente grande, digamos 100 o 1000 veces más grande que el resto de los elementos diagonales. Eso obligará a que el punto máximo permanezca en el mismo lugar, pero no asegurará que ningún otro punto se haga más grande, lo que puede ocurrir, por ejemplo, si se elige un conjunto de funciones inadecuado en $\bf \Phi$ para hacer el ajuste de. La facilidad para elegir un conjunto de funciones de base dependerá en gran medida del aspecto de los datos. Sin embargo, para los datos de tu gráfico, probablemente un polinomio de orden 2 o 4 estará bien.

Esto es lo que parece para una configuración de parámetros y grado de polinomio $4$ . No siempre es posible que los polinomios sean las mejores funciones candidatas para trabajar aquí. enter image description here

3voto

G Cab Puntos 51

Supongo que te gustaría un método que puedas aplicar a una amplia clase de señales de entrada con el mínimo ajuste de los parámetros.

Para ello, procedería de la siguiente manera:

  1. hacer un leve prefiltrado de la señal, suficiente para suavizar irregularidades, sin afectar demasiado a los máximos destacados (máximos), por ejemplo, una media móvil con 2 o 3 pasos;
  2. amplificar de forma no lineal la señal resultante para realzar el máximo (los máximos), por ejemplo, elevando a la potencia (2 - 4), exponenciando, ...;
  3. filtrar la señal resultante con un método de su elección en cuanto a la mejor suavización, por ejemplo, media móvil centrada, con un número de pasos que conserve suficientemente suave
  4. desamplificar

Por ejemplo, para el ejemplo que das un
m. avg. pre-f. de 2 st, un aumento a la potencia 4 y centrado m. avg.filtrado con 5 st, daría el siguiente resultado

Filter_4_5

Notas

  • El paso 1- "pre-filtrado" es opcional, en el sentido de que se aplica directamente sobre la señal de entrada un filtrado de paso bajo para eliminar el ruido de alta frecuencia, si se espera que la señal pueda venir con alguno (suave= eliminando sólo las frecuencias más altas no significativas).

  • He indicado la media móvil por su sencilla aplicación y porque es bastante eficaz. Sin embargo, se puede aplicar otro tipo de filtrado.

  • Para lo que necesitas conseguir, centrado La media móvil debe elegirse para limitar el desplazamiento de la señal resultante. Esto significa que se toma la media sobre una ventana con ca. $(n-1)/2$ puntos anteriores y posteriores al punto en cuestión, es decir $$\overline x _k = {1 \over n}\sum\limits_{\left\lfloor {(n - 1)/2} \right\rfloor \, \le \,j\, \le \,\left\lceil {(n - 1)/2} \right\rceil } {x_{k - j} } $$ . Entonces, al principio y al final, o bien se reduce la $n$ , o bien acolchar la señal con $0$ (o con una repetición de la señal si quieres que sea periódica, etc.).

  • A partir de la estructura de la fórmula anterior, se puede reconocer un convolución entre la señal y una "caja" (ventana rectangular) de anchura $n$ centrado en el origen.
    Eso para indicar que tiene más opciones para la ventana a utilizar más allá de la rectangular: cada una con sus características especiales y aplicaciones de destino. Se ofrece una lista resumida de ellas aquí .

  • La literatura a la que referirse es bastante amplia. Se puede empezar por esta wikipedia en el punto donde dice : "Para una serie de aplicaciones, es ventajoso evitar el desplazamiento inducido por el uso de datos "pasados". De ahí que un media móvil central puede calcularse, utilizando datos igualmente espaciados a ambos lados del punto de la serie donde se calcula la media" y siga los enlaces que allí se indican.
    En particular, el enlace a la Filtro Savitzky-Golay Una de las aplicaciones citadas es "...Localización de máximos y mínimos en curvas de datos experimentales. Esta fue la aplicación que motivó por primera vez a Savitzky...." .

  • La última consideración es que, para orientarse entre las herramientas de procesamiento matemático/de señales disponibles, mucho (yo diría que todo) depende de las consideraciones físicas que rigen la señal de entrada y la aplicación prevista de la salida.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X