Friday 20 October 2017

Bloque De Función Media Móvil


Im confundido con la forma de implementar promedio de bloque y media móvil con el código Matlab en una función de Simulink. Mi modelo de simulink toma la entrada como serie de tiempo del espacio de trabajo matlab y luego debe calcular el promedio de bloque y el promedio móvil de los datos sin procesar. Por. p. ej. Este es mi datos sin procesar: permite suponer que tengo 400000 puntos de datos. 1. 19.01 2. 19.10 3. 19.05. 400000. 19.26 Estoy usando un solucionador discreto de paso fijo para que el modelo obtenga datos cada ciclo. ¿Puede alguien ayudarme por favor con el bloque de función de matlab para utilizarlo para el promedio del bloque y la calculadora del promedio móvil? Gracias de antemano por sus sugerencias. 0 Comentarios Seleccione su PaísAmedias / Promedio móvil simple Promedios / Promedio móvil simple Le recomendamos que resuelva esta tarea de acuerdo con la descripción de la tarea, utilizando cualquier idioma que conozca. Calculando el promedio móvil simple de una serie de números. Crear una función / clase / instancia con estado que toma un punto y devuelve una rutina que toma un número como argumento y devuelve una media móvil simple de sus argumentos hasta ahora. Un promedio móvil simple es un método para calcular un promedio de una corriente de números haciendo sólo el promedio de los últimos 160 P 160 números de la corriente 160, donde 160 P 160 se conoce como el período. Se puede implementar llamando a una rutina de iniciación con 160 P 160 como su argumento, 160 I (P), 160 que debe devolver una rutina que cuando se llama con miembros individuales sucesivos de un flujo de números, calcula la media de (arriba A), los últimos 160 P 160 de ellos, permite llamar a este 160 SMA (). La palabra 160 estado 160 en la descripción de la tarea se refiere a la necesidad de 160 SMA () 160 para recordar cierta información entre las llamadas a ella: 160 El período 160 P 160 Un contenedor ordenado de al menos los últimos 160 P 160 números de cada uno de Sus llamadas individuales. El estado 160 también significa que las llamadas sucesivas a 160 I (), 160 el inicializador, 160 deben devolver rutinas separadas que no 160 comparten el estado guardado para que puedan ser utilizadas en dos flujos independientes de datos. El pseudo-código para una implementación de 160 SMA 160 es: Esta versión utiliza una cola persistente para contener los valores p más recientes. Cada función devuelta desde init-moving-average tiene su estado en un átomo que contiene un valor de cola. Esta implementación utiliza una lista circular para almacenar los números dentro de la ventana al principio de cada indicador de iteración se refiere a la celda de lista que contiene el valor que acaba de salir de la ventana y que se reemplazará con el valor simplemente añadido. Uso de un cierre En la actualidad, este sma no puede ser nogc porque asigna un cierre en el montón. Algún análisis de escape podría eliminar la asignación de montón. Uso de una edición de estructura Esta versión evita la asignación de montón del cierre manteniendo los datos en el marco de pila de la función principal. La misma salida: Para evitar que las aproximaciones de punto flotante sigan acumulándose y creciendo, el código podría realizar una suma periódica en toda la matriz de cola circular. Esta implementación produce dos objetos (de función) compartiendo estado. Es idiomático en E separar la entrada de la salida (leer de la escritura) en lugar de combinarlos en un objeto. La estructura es la misma que la implementación de la Desviación EstándarE. El programa de elixir a continuación genera una función anónima con un período incrustado p, que se utiliza como el período de la media móvil simple. La función run lee la entrada numérica y la pasa a la función anónima recién creada, y luego inspecciona el resultado a STDOUT. La salida se muestra a continuación, con el promedio, seguido por la entrada agrupada, formando la base de cada promedio móvil. Erlang tiene clausuras, pero variables inmutables. Una solución entonces es utilizar procesos y un mensaje simple que pasa la API basada. Los lenguajes de matriz tienen rutinas para calcular los avarages de deslizamiento para una secuencia dada de ítems. Es menos eficiente realizar bucle como en los siguientes comandos. Pide continuamente una entrada I. Que se añade al final de una lista L1. L1 se puede encontrar pulsando 2ND / 1, y la media se puede encontrar en List / OPS Pulse ON para terminar el programa. Función que devuelve una lista que contiene los datos promediados del argumento suministrado Programa que devuelve un valor simple en cada invocación: list es la lista que se promedia: p es el período: 5 devuelve la lista promedio: Ejemplo 2: Utilizando el programa movinav2 , 5) - Inicializando el cálculo del promedio móvil, y definir el período de 5 movinav2 (3, x): x - nuevos datos en la lista (valor 3), y el resultado se almacenará en la variable x, y se muestra movinav2 (4, : X - nuevos datos (valor 4), y el nuevo resultado se almacenará en la variable x, y se mostrará (43) / 2. Descripción de la función movinavg: variable r - es el resultado (la lista de promedios) que se devolverá variable i - es la variable de índice, y apunta al final de la sub-lista de la lista de promediar. Variable z - una variable auxiliar La función utiliza la variable i para determinar qué valores de la lista serán considerados en el siguiente cálculo promedio. En cada iteración, la variable i apunta al último valor de la lista que se utilizará en el cálculo promedio. Así que sólo tenemos que averiguar cuál será el primer valor en la lista. Por lo general, hay que tener en cuenta los elementos p, por lo que el primer elemento será el indexado por (i-p1). Sin embargo, en las primeras iteraciones, el cálculo será normalmente negativo, por lo que la siguiente ecuación evitará los índices negativos: max (i-p1,1) o, ordenando la ecuación, max (i-p, 0) 1. Pero el número de elementos en las primeras iteraciones también será menor, el valor correcto será (índice final - comenzar índice 1) o, ordenando la ecuación, (i - (max (ip, 0) 1), y luego , (I - max (ip, 0)). La variable z tiene el valor común (max (ip), 0) así que el beginindex será (z1) y los numberofelements serán (iz) mid (list, z1, iz) devolverá la lista de valor que será la suma promedio .) Los sumará (.) / (Iz) ri los medirá y almacenará el resultado en el lugar apropiado en la lista de resultados Usando un cierre y creando una función Soy nuevo en Simulink. Quiero hacer el promedio de los datos entrantes (que viene después de algunos intervalos) de un bloque. Por ejemplo, los datos enmarcados continuos de 42 muestras están fuera de un bloque. Junto con los datos enmarcados hay otra salida (etiqueta) que dice que estas tramas / muestras pertenecen a qué categoría. Las etiquetas son números de 1-6. La salida es aleatoria. Quiero promediar los mismos datos de categoría. Al igual que el primer cuadro es de cat1, entonces después de 4 cuadros marco cat1 viene de nuevo. Ahora, ¿cómo debería promediar este nuevo marco con el anterior? Quiero hacer esto para todas las categorías. Por favor, ayúdame en esto. Una solución rápida y sucia sería implementar un arraylist para cada categoría. Inicialice la lista con NaNs y guarde un contador para la última muestra de cada categoría. Utilizando la función media puede obtener el promedio de todas las mediciones. Si sólo desea que el promedio de la trama actual y la trama anterior, simplemente puede significar (cat1 (n1) cat1 (n11)) donde cat1 es el arraylist para marcos de la categoría 1 y n1 es el índice de la trama anterior en cat1 . Si desea un promedio móvil ponderado para una implementación en tiempo real, cree una variable media para cada categoría (llámela av1, av2, etc.) y compute av1 alphaav1 (1-alpha) cat1 (n11) (donde alfa es el peso asignado Al promedio anterior (alphalt1) y cat1 (n11) es la nueva medida) siempre que un marco cat1 entre. Respondió Mar 26 14 en 17:39

No comments:

Post a Comment