Sunday 22 October 2017

Filtro De Paso Bajo Promedio Exponencial


Un método simple y general para rellenar los datos faltantes, si usted tiene funcionamientos de datos completos, es utilizar la regresión linear. Digamos que usted tiene 1000 carreras de 5 en una fila con ninguna falta. Establecer el vector 1000 x 1 y la matriz de 1000 x 4 X: La regresión le dará 4 números a b c d que dan una mejor coincidencia para sus 1000 hileras de datos mdash diferentes datos, diferentes a b c d. A continuación, utilice estos a b c d para estimar (predecir, interpolar) falta wt0. (Para los pesos humanos, espero que abcd sea alrededor de 1/4.) (Hay zillones de libros y papeles sobre la regresión, en todos los niveles. Para la conexión con la interpolación, sin embargo, no sé de una buena introducción nadie) Codificando algo en el momento en que estoy tomando un montón de valores en el tiempo de una brújula de hardware. Esta brújula es muy precisa y se actualiza muy a menudo, con el resultado de que si se mueve ligeramente, termino con el valor extra que es salvajemente inconsistente con sus vecinos. Quiero suavizar esos valores. Después de haber hecho algo de lectura, parece que lo que quiero es un filtro de paso alto, un filtro de paso bajo o un promedio móvil. El promedio móvil que puedo conseguir con, sólo mantener un historial de los últimos 5 valores o lo que sea, y el uso de la media de los valores de abajo en mi código donde una vez sólo estaba usando el valor más reciente. Eso debería, creo, suavizar los jiggles muy bien, pero me parece que su probablemente bastante ineficiente, y este es probablemente uno de los problemas conocidos a los programadores adecuados a lo que theres una solución de Mate Clever realmente ordenada. Sin embargo, soy uno de esos horribles programadores autodidacta sin una pizca de educación formal en algo que ni siquiera esté vagamente relacionado con CompSci o Matemáticas. Leer un poco sugiere que esto puede ser un filtro de paso alto o bajo, pero no puedo encontrar nada que explique en términos comprensibles a un hack como yo cuál sería el efecto de estos algoritmos en una matriz de valores, y mucho menos cómo la matemática trabajos. La respuesta dada aquí. Por ejemplo, técnicamente responde a mi pregunta, pero sólo en términos comprensibles para aquellos que probablemente ya saben cómo resolver el problema. Sería una persona muy encantadora e inteligente que pudiera explicar el tipo de problema que es, y cómo funcionan las soluciones, en términos comprensibles para un graduado de Artes. Si su promedio móvil tiene que ser largo para lograr el suavizado requerido, y usted realmente no necesita ninguna forma particular de kernel, entonces youre mejor si utiliza una media móvil exponencialmente decadente: donde usted Elegir minúscula para ser una constante apropiada (por ejemplo, si usted elige minúsculo 1- 1 / N, tendrá la misma cantidad de promediar que una ventana de tamaño N, pero se distribuye de manera diferente sobre puntos más antiguos). De todos modos, ya que el siguiente valor de la media móvil sólo depende de la anterior y sus datos, usted no tiene que mantener una cola o nada. Y usted puede pensar en esto como hacer algo así como, Bueno, tengo un nuevo punto, pero no confío en él, así que voy a mantener 80 de mi antigua estimación de la medición, y sólo confiar en este nuevo punto de datos 20. Eso es Casi lo mismo que decir, Bueno, yo sólo confío en este nuevo punto 20, y mal uso 4 otros puntos que confío en la misma cantidad, excepto que en lugar de tomar explícitamente los otros 4 puntos, está asumiendo que el promedio que hizo la última vez Era razonable para que pueda utilizar su trabajo anterior. Respondió Sep 21 10 at 14:27 Oye, sé que esto es 5 años de retraso, pero gracias por una respuesta impresionante. I39m trabajando en un juego donde el sonido cambia en función de su velocidad, pero debido a correr el juego en una computadora lenta-asno, la velocidad fluctuaría salvajemente, que estaba bien para la dirección, pero súper molesto en términos de sonido. Esta fue una solución realmente simple y barata para algo que pensé que sería un problema muy complejo. Ndash Adam Mar 16 15 at 20:20 Si está intentando eliminar el valor extraño ocasional, un filtro de paso bajo es la mejor de las tres opciones que ha identificado. Los filtros de paso bajo permiten cambios de baja velocidad como los causados ​​por la rotación de una brújula con la mano, mientras que rechazan cambios de alta velocidad como los causados ​​por golpes en la carretera, por ejemplo. Un promedio móvil probablemente no será suficiente, ya que los efectos de un solo golpe en sus datos afectarán a varios valores subsiguientes, dependiendo del tamaño de su ventana de promedio móvil. Si los valores impares son fácilmente detectados, incluso puede ser mejor con un algoritmo de eliminación de glitch que los ignora completamente: Aquí hay un gráfico guick para ilustrar: El primer gráfico es la señal de entrada, con un fallo desagradable. El segundo gráfico muestra el efecto de un promedio móvil de 10 muestras. El gráfico final es una combinación del promedio de 10 muestras y el algoritmo de detección de fallos simple mostrado anteriormente. Cuando se detecta el fallo, se utiliza el promedio de 10 muestras en lugar del valor real. Respondió Sep 21 10 at 13:38 Muy bien explicado, y puntos de bonificación para el gráfico) ndash Henry Cooke Sep 22 10 at 0:50 Wow. Rara vez vio una respuesta tan agradable ndash Muis Jun 4 13 at 9:14 La media móvil es un filtro de paso bajo. Ndash nomen Oct 21 13 at 19:36 Pruebe con una media de ejecución / streaming en su lugar. Ndash kert Apr 25 14 at 22:09 Media móvil que puedo bajar con. Pero me parece que su probablemente bastante ineficiente. Theres realmente ninguna razón una media móvil debe ser ineficiente. Usted mantiene el número de puntos de datos que desea en algún búfer (como una cola circular). En cada nuevo punto de datos, se extrae el valor más antiguo y se resta de una suma, y ​​se empuja el más reciente y se agrega a la suma. Así que cada punto de datos nuevos realmente sólo implica un pop / push, una adición y una sustracción. Su promedio móvil es siempre esta suma cambiante dividida por el número de valores en su búfer. Se vuelve un poco más complicado si está recibiendo datos simultáneamente de múltiples hilos, pero ya que sus datos provienen de un dispositivo de hardware que me parece muy dudoso. Oh, y también: programadores autodidactos horribles se unen) El promedio móvil me parecía ineficiente porque tienes que almacenar un búfer de valores - mejor hacer sólo algunas Matemáticas Inteligentes con tu valor de entrada y valor de trabajo actual Creo que eso es como el promedio móvil exponencial trabajos. Una optimización que se ha observado para este tipo de media móvil implica el uso de un amplificador de cola de longitud fija, un puntero a donde se encuentra en esa cola, y simplemente envolver el puntero alrededor (con o un si). Voila No hay costosos empujones / pop. Poder para los aficionados, hermano ndash Enrique: Para un promedio móvil directo, usted necesita el búfer simplemente para que usted sepa qué valor se disparó cuando el siguiente valor se empuja. Dicho esto, la fila de longitud fija en fila, un puntero que está describiendo es exactamente lo que quise decir por cola circular. Eso es lo que decía que no era eficiente. ¿Qué pensaste que quería decir Y si tu respuesta es quotan matriz que cambia sus valores de nuevo en cada removalquot indexado (como std :: vector en C). Bueno, entonces, I39m tan herido que don39t incluso quiero hablar con usted más) ndash Dan Tao Sep 22 10 a las 1:58 Henry: No sé acerca de AS3, pero un programador de Java tiene colecciones como CircularQueue a su disposición (I39m No un desarrollador de Java, así que estoy seguro de que hay mejores ejemplos por ahí que es lo que encontré de una búsqueda rápida de Google), que implementa precisamente la funcionalidad que estamos hablando. I39m bastante seguro de la mayoría de los lenguajes de nivel medio y bajo con las bibliotecas estándar tienen algo similar (por ejemplo, en. NET hay 39 QueueltTgt). De todos modos, yo también fui filosofía. Todo está perdonado. Ndash Dan Tao Sep 22 10 at 12:44 Una media móvil exponencialmente decaying se puede calcular a mano con sólo la tendencia si se utilizan los valores adecuados. Consulte fourmilab. ch/hackdiet/e4/ para obtener una idea sobre cómo hacerlo rápidamente con un bolígrafo y papel si está buscando un promedio móvil suavizado exponencialmente con 10 suavizado. Pero dado que usted tiene una computadora, es probable que desee realizar un cambio binario en lugar de un cambio decimal) De esta manera, todo lo que necesita es una variable para su valor actual y otra para el promedio. El siguiente promedio se puede calcular a partir de eso. Responde Sep 21 10 at 14:39 theres una técnica llamada una puerta de rango que funciona bien con muestras espurias de baja ocurrencia. Suponiendo el uso de una de las técnicas de filtro mencionadas anteriormente (promedio móvil, exponencial), una vez que haya suficiente historia (una Constante de Tiempo) puede probar la nueva muestra de datos entrantes para determinar si es razonable antes de que se agregue a la computación. Se requiere cierto conocimiento de la tasa de cambio razonable máxima de la señal. La muestra bruta se compara con el valor suavizado más reciente, y si el valor absoluto de esa diferencia es mayor que el intervalo permitido, esa muestra es expulsada (o reemplazada por alguna heurística, por ejemplo, una predicción basada en el diferencial de pendiente o la tendencia Valor de predicción de doble suavizado exponencial) respondió Abr 30 at 6: 56It puede variar desde un promedio simple de n valores a un filtro de promedio exponencial a un filtro más sofisticado que funciona en las frecuencias. Versiones más sofisticadas de los filtros de paso bajo se pueden crear mediante la conversión de filtros electrónicos de paso bajo utilizados en el procesamiento de señales digitales (como Butterworth filtro, etc) He encontrado este sitio web para contener una gran cantidad de recursos en Digital Signal Processing, (The Scientist and Engineer039s Guide Al procesamiento de señal digital). El primer ejemplo es un filtro de media móvil, a continuación se muestra un filtro recursivo seguido de un ejemplo de cómo crear un filtro de paso bajo con una frecuencia de corte, dada una frecuencia de muestreo y una constante de filtro RC motivada por el comportamiento de paso bajo o circuito RC . Sólo recuerde: El promedio de dominio del tiempo se desordenará con la representación del dominio de la frecuencia, y el filtrado del dominio de la frecuencia ensuciará con la representación del dominio del tiempo. Por lo tanto, un filtro que trabaja en el dominio del tiempo resultará en la respuesta de frecuencia ya no utilizable ya que el 039signal039 039signal039 propio filtro ha sido convoluted con la señal real. Por otro lado, si eliminas el ruido de alta frecuencia en el dominio de la frecuencia, no esperes ver una señal suave en el dominio del tiempo. PS: Nunca hacer ambas cosas. Nunca haga corte de frecuencia seguido por promediar en el dominio del tiempo (o viceversa) a menos que. No hay otra opción (que por lo general hay) 11.3k Vistas middot Ver Upvotes middot No para reproducción Más respuestas más abajo. Preguntas relacionadas Como un principiante completo en la programación de bajo nivel, debo comenzar con C o C (Quiero ser capaz de codificar software tanto como robots de programa) MATLAB: ¿Hay alguna manera de lidiar con el impulso de un Butterworth low - (Que pasa referencia / valor por referencia / valor) En matlab utilizamos el comando butter para la implementación de filtros, ¿Qué se debe utilizar en código c para el diseño de filtros ¿Existe una mejor alternativa a C para la codificación de bajo nivel ¿Es posible pasar los parámetros de un código C en una DLL generada por Matlab ¿Dónde y cómo se traduce el código de software en voltajes altos y bajos que representan 1039s y 0039s ¿Por qué wasn039t Python039s iterable funciones como el mapa y el filtro diseñado como C039s LINQ o Java039s arroyos ¿Cómo puedo traducir código fuente de Delphi 7 a C / C / C en un sistema operativo Windows 7 En C proyectos, ¿Cómo puedo llegar a Chrome039 s bloque De código (inspeccionar el elemento) ¿Por qué este código C snippet Char str quotany stringquot str 3 039s039 producir fallo de segmentación ¿Por qué filtro de paso bajo se vuelven eficientes mediante la conexión en cascada con la mitad de la sección derivada m Cómo pasar parámetros dinámicamente en el filtro de atributos personalizados MVC c

No comments:

Post a Comment