Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

medfilt1

Filtrado de mediana 1-D

Descripción

y = medfilt1(x) aplica un filtro mediano unidimensional de tercer orden al vector de entrada, .x La función considera que la señal es 0 más allá de los puntos finales. La salida, , tiene la misma longitud que .yx

ejemplo

y = medfilt1(x,n) aplica un filtro mediano unidimensional de th-order a .nx

y = medfilt1(x,n,blksz,dim) O y = medfilt1(x,n,[],dim) especifica la dimensión, , a lo largo de la cual opera el filtro. es necesario para la compatibilidad con versiones anteriores y se omite.dimblksz

ejemplo

y = medfilt1(___,nanflag,padding) especifica cómo se tratan los valores en cada segmento, utilizando los argumentos de entrada de las sintaxis anteriores.NaN Esta sintaxis también especifica , el tipo de filtrado realizado en los bordes de la señal.padding

y puede aparecer en cualquier lugar después de la llamada de función.nanflagpaddingx

Ejemplos

contraer todo

Generar una señal sinusoidal muestreada durante 1 segundo a 100 Hz. Agregue un sinusoides de mayor frecuencia para simular el ruido.

fs = 100; t = 0:1/fs:1; x = sin(2*pi*t*3)+0.25*sin(2*pi*t*40);

Utilice un filtro mediano de décimo orden para suavizar la señal. Trazar el resultado.

y = medfilt1(x,10);  plot(t,x,t,y) legend('Original','Filtered') legend('boxoff')

Generar una señal de dos canales que consiste en sinusoides de diferentes frecuencias. Coloque picos en lugares aleatorios. Utilice NaNs para agregar muestras que faltan al azar. Restablezca el generador de números aleatorios para obtener resultados reproducibles. Traza la señal.

rng('default')  n = 59; x = sin(pi./[15 10]'*(1:n)+pi/3)';  spk = randi(2*n,9,1); x(spk) = x(spk)*2; x(randi(2*n,6,1)) = NaN;  plot(x)

Filtre la señal con los ajustes predeterminados.medfilt1 Trazar la señal filtrada. De forma predeterminada, el filtro asigna NaN a la mediana de cualquier segmento con muestras que faltan.

y = medfilt1(x); plot(y)

Transponga la señal original. Filtre de nuevo, especificando que la función funciona a lo largo de las filas. Excluya las muestras que faltan al calcular las medianas. Si deja el segundo argumento vacío, utiliza el orden de filtro predeterminado de 3.medfilt1

y = medfilt1(x',[],[],2,'omitnan'); plot(y')

La función no puede asignar un valor al segmento que solo contiene NaN. Aumente la longitud del segmento para solucionar este problema. El cambio también elimina el atípico más a fondo.

y = medfilt1(x,4,'omitnan'); plot(y)

El relleno cero predeterminado hace que la función subesestiva los valores de señal en los bordes. Disminuya este efecto mediante el uso de ventanas decrecientes para calcular las medianas en los extremos.

y = medfilt1(x,4,'omitnan','truncate'); plot(y)

Argumentos de entrada

contraer todo

Señal de entrada, especificada como un vector de valor real, matriz o matriz N-D.

Tipos de datos: single | double

Orden del filtro mediano unidimensional, especificado como un escalar entero positivo.

  • Cuando es extraño, es la mediana de .ny(k)x(k-(n-1)/2:k+(n-1)/2)

  • Cuando está par, es la mediana de .ny(k)x(k-n/2:k+(n/2)-1) En este caso, ordena los números y toma el promedio de los dos elementos intermedios de la lista ordenada.medfilt1

Ejemplo: Si es 11, entonces es la mediana de .ny(k)x(k-5:k+5)

Ejemplo: Si es 12, entonces es la mediana de .ny(k)x(k-6:k+5)

Tipos de datos: double

Dimensión para filtrar a lo largo, especificada como un escalar entero positivo. De forma predeterminada, funciona a lo largo de la primera dimensión nonsingleton de .medfilt1x En particular, si es una matriz, la función filtra sus columnas para que .xy(:,i) = medfilt1(x(:,i),n)

Tipos de datos: double

condición, especificada como o .NaN'includenan''omitnan'

  • — Devuelve la señal filtrada para que la mediana de cualquier segmento que contenga s también sea .'includenan'NaNNaN

  • : devuelve la señal filtrada para que la mediana de cualquier segmento que contenga s sea la mediana de los valores no.'omitnan'NaNNaN Si todos los elementos de un segmento son s, el resultado es .NaNNaN

Filtrado de puntos de conexión, especificado como o .'zeropad''truncate'

  • — Considera que la señal es cero más allá de los puntos finales.'zeropad'

  • — Calcula las medianas de los segmentos más pequeños a medida que alcanzan los bordes de la señal.'truncate'

Argumentos de salida

contraer todo

Señal filtrada, devuelta como un vector de valor real, matriz o matriz N-D. es del mismo tamaño queyx

Tipos de datos: double

Sugerencias

Si tiene una licencia de software, puede utilizar la función para realizar el filtrado de mediana bidimensional.Image Processing Toolbox™medfilt2 (Image Processing Toolbox)

Referencias

[1] Pratt, William K. Digital Image Processing. 4th Ed. Hoboken, NJ: John Wiley & Sons, 2007.

Consulte también

| | | |

Introducido antes de R2006a