Monday, 6 November 2017

Media Móvil De Matlab Sin Bucle


Estoy tratando de completar un proyecto de asignación Matlab con la siguiente pregunta: Escribir una función llamada movingaverage que toma un escalar llamado x como un argumento de entrada y devuelve un escalar. La función utiliza un búfer para contener entradas previas, y el búfer puede contener un máximo de 25 entradas. Específicamente, la función debe guardar las más recientes 25 entradas en un vector (el búfer). Cada vez que se llama a la función, copia el argumento de entrada en un elemento del búfer. Si ya hay 25 entradas almacenadas en el búfer, descarta el elemento más antiguo y guarda el actual en el búfer. Después de haber almacenado la entrada en el búfer, devuelve la media de todos los elementos del búfer. La solución que ofrezco es la siguiente: Según el nivelador automático, mi función funciona correctamente cuando los valores 1-50 pasan consecutivamente, pero falla cuando los valores de una onda senoidal ruidosa pasan consecutivamente (lo que me ha sido informado que podría deberse a algunos Tipo de un error de redondeo). Estaría agradecido si alguno de ustedes pudiera proporcionarme algunos consejos sobre los posibles pasos de error en mi código (adjunto anteriormente). Gracias de antemano Necesito calcular una media móvil sobre una serie de datos, dentro de un bucle for. Tengo que obtener el promedio móvil en N9 días. El array Im computing in es 4 series de 365 valores (M), los cuales son valores medios de otro conjunto de datos. Quiero trazar los valores medios de mis datos con el promedio móvil en una parcela. Busqué un poco sobre los promedios móviles y el comando conv y encontré algo que intenté implementar en mi código. Así que, básicamente, calculo mi media y lo trace con una media móvil (errónea). Escogí el valor de wts justo en el sitio de mathworks, por lo que es incorrecto. (Fuente: mathworks. nl/help/econ/moving-average-trend-estimation. html) Mi problema, sin embargo, es que no entiendo lo que este wts es. ¿Podría alguien explicar Si tiene algo que ver con los pesos de los valores: que no es válido en este caso. Todos los valores se ponderan igual. Y si estoy haciendo esto totalmente mal, podría obtener alguna ayuda con ella Mis más sinceras gracias. El uso de conv es una excelente manera de implementar un promedio móvil. En el código que está usando, wts es cuánto está pesando cada valor (como usted adivinó). La suma de ese vector siempre debe ser igual a uno. Si desea ponderar cada valor uniformemente y hacer un filtro N de tamaño N, entonces lo haría. Usar el argumento válido en conv resultará en tener menos valores en Ms que en M. Utilice lo mismo si no le importan los efectos de Relleno cero. Si tiene la caja de herramientas de procesamiento de señales, puede usar cconv si desea probar una media móvil circular. Algo así como usted debe leer la documentación conv y cconv para obtener más información si ya no lo ha hecho. Puede utilizar filtro para encontrar un promedio de ejecución sin utilizar un bucle for. Este ejemplo encuentra el promedio de ejecución de un vector de 16 elementos, usando un tamaño de ventana de 5. 2) suave como parte de la caja de herramientas de ajuste de curvas (que está disponible en la mayoría de los casos) yy suave (y) suaviza los datos en el vector de columna Y utilizando un filtro de media móvil. Los resultados se devuelven en el vector de columna yy. El lapso predeterminado para el promedio móvil es 5. Media móvil exponencial sin el bucle forydd ltanonymoussehotmailgt escribió en el mensaje lthe1oepfs61fred. mathworksgt. Gt gracias por esto. Parece muy cerca, pero todavía puede ser muy diferente de la EMA tradicional como se utiliza en las finanzas. Gt gt a partir de un número limitado de simulaciones parece ser bastante diferente de la EMA para unos 60 datapoints o así. Gt gt cualquier idea de por qué esto podría suceder gt gt nb - el EMA tradicional utiliza un SMA como un valor inicial porque la fórmula EMA llama a un valor EMA inicial. Cómo funciona la función de filtro alrededor de esto La respuesta es que el filtro no consigue alrededor de él. Para los primeros 30 puntos el filtro saldrá del borde delantero del vector de hoy. Los valores anteriores al borde se ponen a 0. Esto distorsionará al menos los primeros 30 puntos de su EMA. Usted puede ver el efecto de tener un precio de cierre constante. (1: daysBack) nota 1-alfa Filtro EMA (coeficiente, suma (coeficiente, suma (100, 100) ), TodaysClose) parcela (todaysClose) mantenga en la parcela (EMA, r) Usted podría almohadilla el borde delantero de la matriz mediante la replicación de los primeros valores fuera daysBack valores y luego quitarlo. Eso podría ayudar. Por lo tanto: todaysClose cumsum (randn (100,1)) daysBack 30 pad repmat (todaysClose (1), daysBack, 1) todaysClose padtodaysClose alfa 2 / (daysBack 1) calcular el factor de suavizado alfa coeficiente repmat (1-alpha, 1, daysBack) (1: daysBack) note Filtro EMA de 1-alpha (coeficiente, suma (coeficiente), todaysClose) EMA EMA (31: end) Ill darle un tiro :) Asunto: Promedio móvil exponencial sin el lazo De: Bwana happydude ltanonymoussehotmailgt escribió en el mensaje lthe3krmglm1fred. mathworksgt. Gt gracias mal darle un tiro :) Asunto: Promedio móvil exponencial sin For Loop De: david Bwana ltbwana. mukubwagmailgt escribió en el mensaje lti1fpb3noh1fred. mathworksgt. Gt happydude ltanonymoussehotmailgt escribió en el mensaje lthe3krmglm1fred. mathworksgt. Gt gt gracias mal darle un tiro :) gt gt todo construido en: mathworks / access / helpdesk / help / toolbox / finanzas / tsmovavg. html Alguien sabe por qué la función de filtro descrito anteriormente da una salida diferente a la de construido en movavg Función El 15 de marzo, 4:50 am, david ltdavidtr. Gmailgt escribió: gt Bwana ltbwana. muku. Gmailgt escribió en el mensaje lti1fpb3no. Fred. mathworksgt. Gt gt happydude ltanonymou. Hotmailgt escribió en el mensaje lthe3krmgl. Fred. mathworksgt. Gt gt gt gracias mal darle un tiro :) gt gt gt todo construido en: mathworks / access / helpdesk / help / toolbox / finanzas / tsmovav. Gt gt Alguien sabe por qué la función de filtro descrito anteriormente da una salida diferente a la de la función incorporada en movavg Mi conjetura es que su porque youve fastidiado. Pero usted no nos ha mostrado su código, así que ¿cómo podemos saber que Hola, el segundo parámetro de la función de filtro debería ser (1 / alfa-1) en lugar de suma (coeficiente) tal vez Si expande la fórmula recursiva de la EMA, Encontrar ese término. PD (1 / alfa-1) es el valor al que converge la suma del coeficiente. ¿Por qué usar un valor aproximado en lugar de la correcta? ¿O me falta algo? Matthew Whitaker ltmattlwhitakerREMOVEgmailgt escribió en el mensaje lthdv98tdcd1fred. mathworksgt. Gt probar este código: gt todaysClose cumsum (randn (100,1)) gt díasBack 30 gt alfa 2 / (daysBack 1) calcular el factor de suavizado alfa gt coeficiente repmat (1-alfa, 1, daysBack) 1-alpha gt Filtro EMA (coeficiente, suma (coeficiente), todaysClose) gt parcela (todaysClose) gt mantenga en gt parcela (EMA, r) gt gt Espero que esto ayuda gt Matt W gt gt gt gt gt happydude ltanonymoussehotmailgt escribió en el mensaje lthdv3c35um1fred. mathworksgt. Gt gt Hola, estoy tratando de encontrar el balanceo de 30 días EMA para una serie de tiempo sin usar un bucle for (tengo una gran cantidad de datos). Gt gt gt gt Como un ejemplo / prueba esto es algo como lo que quiero (a continuación), pero estoy encontrando que mi resultado final no está muy cerca de cómo debería verse. Cuando lo pongo juntos en Excel o con un bucle for sale correctamente, pero estoy en la oscuridad si estoy usando el filtro correctamente a continuación. Gt gt gt gt ¿Puede alguien ayudar a gt gt gt gt hoy cerrar cumsum (randn (100,1)) gt gt díasBack 30 gt gt alfa 2 / (daysBack 1) calcular el factor de suavizado alfa gt gt gt gt preparar un coeficiente para la función de filtro gt Gt coeficiente coeficiente / suma (coeficiente) gt gt gt gt Filtro EMA (coeficiente, 1, todaysClose) gt gt gt gt gt gt gt Éste era uno de los postes que busqué groups. google/group/comp. soft-sys. matlab/tree/browsefrm/thread/7b5c0b3146432dd9/58e9d04b885a576arnum11done/group/comp. soft-sys. matlab/browsefrm/thread/7b5c0b3146432dd9/48bdf7f81cd8f1973Ftvc3D126doca1c5b8de7a7c428a Gt gt gt gt esto es también donde obtuve el código de filtro anterior gt gt groups. google/group/comp. soft-sys. matlab/browsethread/thread/1d8d10d5b835550dtvc2qexponentialmovingaveragefilter happydude escribió en mensaje lthdv3c35um1fred. mathworksgt. Gt Hola, estoy tratando de encontrar el balanceo de 30 días EMA para una serie de tiempo sin usar un bucle for (tengo un montón de datos). Gt gt Como un ejemplo / prueba esto es algo como lo que quiero (a continuación), pero estoy encontrando que mi resultado final no está muy cerca de cómo debería verse. Cuando lo pongo juntos en Excel o con un bucle for sale correctamente, pero estoy en la oscuridad si estoy usando el filtro correctamente a continuación. Gt gt Alguien puede ayudar gt gt todaysCerrar cumsum (randn (100,1)) gt díasBack 30 gt alfa 2 / (daysBack 1) calcular el factor de suavizado alfa gt gt preparar un coeficiente para la función de filtro gt coeficiente repmat (alfa, 1, daysBack ) (1: daysBack) gt coeficiente coeficiente / suma (coeficiente) gt gt Filtro EMA (coeficiente, 1, todaysClose) gt gt gt PS Éste era uno de los postes que busqué groups. google/group/comp. soft-sys. matlab/tree/browsefrm/thread/7b5c0b3146432dd9/58e9d04b885a576arnum11done/group/comp. soft-sys. matlab/browsefrm/thread/7b5c0b3146432dd9/48bdf7f81cd8f1973Ftvc3D126doca1c5b8de7a7c428a Gt gt esto es también donde obtuve el código de filtro anterior gt groups. google/group/comp. soft-sys. matlab/browsethread/thread/1d8d10d5b835550dtvc2qexponentialmovingaveragefilter Tenga en cuenta que los coeficientes de los datos anteriores no son correctos. La fórmula es: Precio (t) alfaPrecio (t-1) alfa (1-alfa) Precio (t-2) alfa (1-alfa) 2. (1-N) (1, N) 1 ¿Qué es una lista de observación? Se puede pensar en Su lista de observación como hilos que tiene marcados. Puede agregar etiquetas, autores, hilos e incluso resultados de búsqueda a su lista de observación. De esta manera, puedes seguir fácilmente los temas que te interesan. Para ver tu lista de observación, haz clic en el vínculo Mi lector de noticias. Para agregar elementos a su lista de observación, haga clic en el vínculo quotadd para ver listquot en la parte inferior de cualquier página. Cómo añadir un elemento a mi lista de observación Búsqueda Para agregar criterios de búsqueda a su lista de observación, busque el término deseado en el cuadro de búsqueda. Haga clic en el enlace quotAñadir esta búsqueda a mi lista de observaciones en la página de resultados de búsqueda. También puede agregar una etiqueta a su lista de observación buscando la etiqueta con la directiva quottag: tagnamequot donde tagname es el nombre de la etiqueta que le gustaría ver. Autor Para agregar un autor a su lista de observación, vaya a la página de perfil de autores y haga clic en el botón quotAdicionar este autor a mi lista de ver lista de enlaces en la parte superior de la página. También puede agregar un autor a su lista de observación yendo a un hilo que el autor ha publicado y haciendo clic en el quotAdicionar este autor a mi lista de watchquot. Se le notificará cuando el autor haga una publicación. Tema Para agregar un hilo a su lista de observación, vaya a la página del hilo y haga clic en el enlace quotAñadir este hilo a mi lista de observaciones en la parte superior de la página. Acerca de los grupos de noticias, los lectores de noticias y MATLAB Central ¿Qué son los grupos de noticias? Los grupos de noticias son un foro mundial abierto a todos. Los grupos de noticias se usan para discutir una amplia gama de temas, hacer anuncios y intercambiar archivos. Las discusiones están enhebradas o agrupadas de una manera que le permite leer un mensaje publicado y todas sus respuestas en orden cronológico. Esto hace que sea fácil seguir el hilo de la conversación, y ver whatrsquos ya se ha dicho antes de publicar su propia respuesta o hacer una nueva publicación. El contenido del grupo de noticias es distribuido por servidores alojados por varias organizaciones en Internet. Los mensajes se intercambian y se gestionan mediante protocolos estándar abiertos. Ninguna entidad ldquoownsrdquo los newsgroups. Hay miles de grupos de noticias, cada uno de los cuales aborda un único tema o área de interés. El MATLAB Central Newsreader publica y muestra mensajes en el grupo de noticias comp. soft-sys. matlab. Cómo puedo leer o publicar en los grupos de noticias Puede utilizar el lector de noticias integrado en el sitio web de MATLAB Central para leer y publicar mensajes en este grupo de noticias. MATLAB Central está alojado en MathWorks. Los mensajes publicados a través del lector de noticias de MATLAB Central son vistos por todos los usuarios de los grupos de noticias, independientemente de cómo accedan a los grupos de noticias. Hay varias ventajas al usar MATLAB Central. Una cuenta Su cuenta de MATLAB Central está vinculada a su cuenta de MathWorks para un fácil acceso. Utilice la dirección de correo electrónico de su elección El lector de noticias MATLAB Central le permite definir una dirección de correo electrónico alternativa como su dirección de correo, evitando el desorden en su buzón principal y reduciendo el spam. Control de correo no deseado La mayoría del spam de grupos de noticias es filtrado por el lector de noticias central de MATLAB. Etiquetado Los mensajes pueden ser etiquetados con una etiqueta relevante por cualquier usuario que haya iniciado sesión. Las etiquetas se pueden utilizar como palabras clave para encontrar determinados archivos de interés, o como una forma de categorizar sus publicaciones marcadas. Puedes elegir permitir que otros vean tus etiquetas, y puedes ver o buscar otras etiquetas, así como las de la comunidad en general. El etiquetado proporciona una manera de ver tanto las grandes tendencias como las ideas más pequeñas y más oscuras y las aplicaciones. Listas de vigilancia La configuración de listas de vigilancia le permite recibir notificaciones de las actualizaciones realizadas en las publicaciones seleccionadas por autor, hilo o cualquier variable de búsqueda. Las notificaciones de su lista de observaciones se pueden enviar por correo electrónico (resumen diario o inmediato), se muestran en Mi lector de noticias o se envían a través de RSS. Otras formas de acceder a los grupos de noticias Utilice un lector de noticias a través de su escuela, empleador o proveedor de servicios de Internet Pague por el acceso de grupos de noticias de un proveedor comercial Utilice Grupos de Google Mathforum. org proporciona un lector de noticias con acceso al grupo de noticias sys. matlab comp. soft Ejecute su propio servidor. Para obtener instrucciones típicas, consulte: slyck / ng. phppage2 Seleccione su país

No comments:

Post a Comment