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.

fillgaps

Llenar huecos usando modelado autoregresivo

Descripción

ejemplo

y = fillgaps(x) reemplaza cualquier s presente en una señal con estimaciones extrapoladas de los ajustes autoregresivos hacia adelante y hacia atrás de las muestras restantes.NaNx Si es una matriz, la función trata cada columna como un canal independiente.x

ejemplo

y = fillgaps(x,maxlen) especifica el número máximo de muestras que se utilizarán en la estimación. Utilice este argumento cuando la señal no esté bien caracterizada a lo largo de su rango por un solo proceso autoregresivo.

ejemplo

y = fillgaps(x,maxlen,order) especifica el orden del modelo autoregresivo utilizado para reconstruir los huecos.

ejemplo

fillgaps(___) sin argumentos de salida traza las muestras originales y la señal reconstruida. Esta sintaxis acepta los argumentos de entrada de las sintaxis anteriores.

Ejemplos

contraer todo

Cargue una señal de voz muestreada en

<math display="block">
<mrow>
<msub>
<mrow>
<mi>F</mi>
</mrow>
<mrow>
<mi>s</mi>
</mrow>
</msub>
<mo>=</mo>
<mn>7</mn>
<mn>4</mn>
<mn>1</mn>
<mn>8</mn>
<mspace width="0.2777777777777778em"></mspace>
<mstyle mathvariant="normal">
<mrow>
<mi>H</mi>
<mi>z</mi>
</mrow>
</mstyle>
</mrow>
</math>
. El archivo contiene una grabación de una voz femenina que dice la palabra "MATLAB®." Reproduce el sonido.

load mtlb  % To hear, type soundsc(mtlb,Fs)

Simular una situación en la que un canal de transmisión ruidoso corrompe partes de la señal irremediablemente. Introducir huecos de longitud aleatoria aproximadamente cada 500 muestras. Restablezca el generador de números aleatorios para obtener resultados reproducibles.

rng default  gn = 3;  mt = mtlb;  gl = randi([300 600],gn,1);  for kj = 1:gn     mt(kj*1000+randi(100)+(1:gl(kj))) = NaN; end

Trazar las señales originales y dañadas. Desplazamiento de la señal dañada para facilitar la visualización. Reproduzca la señal con los huecos.

plot([mtlb mt+4]) legend('Original','Corrupted')

 % To hear, type soundsc(mt,Fs)

Reconstruya la señal utilizando un proceso autoregresivo. Utilícelo con la configuración predeterminada.fillgaps Trazar las señales originales y reconstruidas, de nuevo utilizando un desplazamiento. Reproduzca la señal reconstruida.

lb = fillgaps(mt);  plot([mtlb lb+4]) legend('Original','Reconstructed')

 % To hear, type soundsc(lb,Fs)

Cargue un archivo que contenga mediciones de profundidad de un molde utilizado para acuñar un centavo de los Estados Unidos. Los datos, tomados en el Instituto Nacional de Estándares y Tecnología, se muestrean en una red de 128 por 128.

load penny

Dibuje una gráfica de contorno con 25 líneas de contorno de color cobre.

nc = 25;  contour(P,nc) colormap copper axis ij square

Introducir cuatro brechas de 10 por 10 en los datos. Dibuje una gráfica de contorno de la señal dañada.

P(50:60,80:90) = NaN; P(100:110,20:30) = NaN; P(100:110,100:110) = NaN; P(20:30,110:120) = NaN;  contour(P,nc) colormap copper axis ij square

Se utiliza para reconstruir los datos, tratando cada columna como un canal independiente.fillgaps Especifique un modelo autoregresivo de 8o orden extrapolado a partir de 30 muestras en cada extremo. Dibuje una gráfica de contorno de la reconstrucción.

q = fillgaps(P,30,8);  contour(q,nc) colormap copper axis ij square

Generar una función que consiste en la suma de dos sinusoides y una curva lorentzian. La función se muestrea a 200 Hz durante 2 segundos. Trazar el resultado.

x = -1:0.005:1;  f = 1./(1+10*x.^2)+sin(2*pi*3*x)/10+cos(25*pi*x)/10;  plot(x,f)

Inserte huecos a intervalos (-0,8,-0.6), (-0,2,0.1) y (0,4,0,7).

h = f;  h(x>-0.8 & x<-0.6) = NaN; h(x>-0.2 & x< 0.1) = NaN; h(x> 0.4 & x< 0.7) = NaN;

Rellene los huecos utilizando la configuración predeterminada de .fillgaps Trazar las funciones originales y reconstruidas.

y = fillgaps(h);  plot(x,f,'.',x,y)

Repita el cálculo, pero ahora especifique una longitud máxima de secuencia de predicción de 3 muestras y un orden de modelo de 1. Trazar las funciones originales y reconstruidas. En su forma más simple, realiza un ajuste lineal.fillgaps

y = fillgaps(h,3,1);  plot(x,f,'.',x,y)

Especifique una longitud máxima de secuencia de predicción de 80 muestras y un orden de modelo de 40. Trazar las funciones originales y reconstruidas.

y = fillgaps(h,80,40);  plot(x,f,'.',x,y)

Cambie el orden del modelo a 70. Trazar las funciones originales y reconstruidas.

y = fillgaps(h,80,70);  plot(x,f,'.',x,y)

La reconstrucción es imperfecta porque los pedidos de modelos muy altos a menudo tienen problemas con la precisión finita.

Genere una señal multicanal que consta de dos instancias de un chirrido muestreado a 1 kHz durante 1 segundo. La frecuencia del chirrido es cero en 0,3 segundos y aumenta linealmente para alcanzar un valor final de 40 Hz. Cada instancia tiene un valor de controlador de dominio diferente.

Fs = 1000; t = 0:1/Fs:1-1/Fs; r = chirp(t-0.3,0,0.7,40); f = 1.1; q = [r-f;r+f]';

Introducir huecos en la señal. Uno de los huecos cubre la región de baja frecuencia, y el otro cubre la región de alta frecuencia.

gap = (460:720); q(gap-300,1) = NaN; q(gap+200,2) = NaN;

Rellene los huecos utilizando los parámetros predeterminados. Trazar las señales reconstruidas.

y = fillgaps(q);  plot(t,y)

Rellene los huecos ajustando modelos autoregresivos de orden 14 a la señal. Limite los modelos para incorporar 15 muestras al final de cada hueco. Utilice la funcionalidad de trazar las reconstrucciones.fillgaps

fillgaps(q,15,14)

Aumente el número de muestras que se utilizarán en la estimación a 150. Aumente el orden del modelo a 140.

fillgaps(q,150,140)

Argumentos de entrada

contraer todo

Señal de entrada, especificada como vector o matriz. Si es una matriz, sus columnas se tratan como canales independientes. contiene s para representar las muestras que faltan.xxNaN

Ejemplo: es una señal de vector de fila de un solo canal que falta el 40% de sus muestras.cos(pi/4*(0:159))+reshape(ones(32,1)*[0 NaN 0 NaN 0],1,160)

Ejemplo: es una señal de dos canales con grandes huecos.cos(pi./[4;2]*(0:159))'+reshape(ones(64,1)*[0 NaN 0 NaN 0],160,2)

Tipos de datos: single | double
Soporte de números complejos:

Longitud máxima de las secuencias de predicción, especificada como un entero positivo. Si deja no especificados, entonces se ajusta iterativamente a los modelos autoregresivos utilizando todos los puntos anteriores para la estimación hacia adelante y todos los puntos futuros para la estimación hacia atrás.maxlenfillgaps

Tipos de datos: single | double

Orden del modelo autoregresivo, especificado como o un entero positivo.'aic' El orden se trunca cuando es infinito o cuando no hay suficientes muestras disponibles.order Si especifica como , o lo deja sin especificar, selecciona el orden que minimiza el criterio de información de Akaike.order'aic'fillgaps

Tipos de datos: single | double | char | string

Argumentos de salida

contraer todo

Señal reconstruida, devuelta como vector o matriz.

Referencias

[1] Kay, Steven M. Modern Spectral Estimation: Theory and Application. Englewood Cliffs, NJ: Prentice Hall, 1988.

[2] Orfanidis, Sophocles J. Optimum Signal Processing: An Introduction. 2nd Edition. New York: McGraw-Hill, 1996.

[3] Akaike, Hirotugu. “Fitting Autoregressive Models for Prediction.” Annals of the Institute of Statistical Mathematics. Vol. 21, 1969, pp. 243–247.

Consulte también

|

Introducido en R2016a