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 ser debido 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 antemanoUsar MATLAB, cómo puedo encontrar el promedio móvil de 3 días de una columna específica de una matriz y agregar la media móvil a esa matriz? Estoy tratando de calcular el promedio móvil de 3 días de abajo hacia arriba de la matriz. He proporcionado mi código: Dada la siguiente matriz a y máscara: He intentado implementar el comando conv pero estoy recibiendo un error. Aquí está el comando conv que he estado tratando de usar en la segunda columna de la matriz a: La salida que deseo se da en la siguiente matriz: Si usted tiene alguna sugerencia, lo agradecería mucho. Gracias Por la columna 2 de la matriz a, estoy calculando el promedio móvil de 3 días de la siguiente manera y colocando el resultado en la columna 4 de la matriz a (I renombrado matriz a como 39desiredOutput39 sólo por ilustración). El promedio de 3 días de 17, 14, 11 es 14 el promedio de 3 días de 14, 11, 8 es 11 el promedio de 3 días de 11, 8, 5 es 8 y el promedio de 3 días de 8, 5, 2 es 5. No hay valor en las 2 filas inferiores para la cuarta columna porque el cálculo para la media móvil de 3 días comienza en la parte inferior. La salida 39valid39 no se mostrará hasta al menos 17, 14 y 11. Esperamos que esto tiene sentido ndash Aaron Jun 12 13 at 1:28 1 Respuesta En general, sería de ayuda si se muestra el error. En este caso usted está haciendo dos cosas mal: Primero su convolución necesita ser dividido por tres (o la longitud de la media móvil) Segundo, observe el tamaño de c. Usted no puede apenas caber c en a. La forma típica de obtener un promedio móvil sería usar lo mismo: pero eso no se parece a lo que quieres. En su lugar se ven obligados a usar un par de líneas: Creado el Miércoles 08 de Octubre de 2008 20:04 Última actualización el Jueves, 14 de Marzo de 2013 01:29 Escrito por Batuhan Osmanoglu Hits: 40480 Moving Average En Matlab A menudo me encuentro en necesidad de Promediando los datos que tengo para reducir el ruido un poco. Escribí funciones de pareja para hacer exactamente lo que quiero, pero matlabs construido en función de filtro funciona bastante bien también. Aquí Ill escribir sobre 1D y 2D promedio de los datos. El filtro 1D se puede realizar usando la función de filtro. La función de filtro requiere al menos tres parámetros de entrada: el coeficiente de numerador para el filtro (b), el coeficiente de denominador para el filtro (a) y los datos (X), por supuesto. Un filtro de promedio en funcionamiento puede definirse simplemente por: Para datos 2D podemos utilizar la función Matlabs filter2. Para obtener más información sobre cómo funciona el filtro, puede escribir: Aquí hay una implementación rápida y sucia de un filtro de 16 por 16 de promedio móvil. Primero tenemos que definir el filtro. Puesto que todo lo que queremos es la contribución igual de todos los vecinos, podemos usar la función unos. Dividimos todo con 256 (1616) ya que no queremos cambiar el nivel general (amplitud) de la señal. Para aplicar el filtro simplemente podemos decir lo siguiente A continuación se presentan los resultados de la fase de un interferograma SAR. En este caso, Range está en el eje Y y Azimuth está asignado en el eje X. El filtro tenía 4 píxeles de ancho en Rango y 16 píxeles de ancho en Azimut. Ingresar Buscar
No comments:
Post a Comment