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.

intfilt

Diseño de filtro FIR de interpolación

Sintaxis

b = intfilt(l,p,alpha)
b = intfilt(l,n,'Lagrange')

Descripción

b = intfilt(l,p,alpha) diseña un filtro FIR de fase lineal que realiza una interpolación de banda limitada ideal utilizando las muestras * distintos de cero más cercanas, cuando se utiliza en una secuencia intercalada con ceros consecutivos cada muestra.2pl-1l Supone una banda limitada original de alfa por la frecuencia Nyquist. El filtro devuelto es idéntico al utilizado por . es longitud 2* * .interpblp-1

alfa es inversamente proporcional al ancho de banda de transición del filtro y también afecta al ancho de banda de las regiones de no cuidado en la banda de parada. Especificar alfa le permite especificar cuánto del intervalo Nyquist ocupa la señal de entrada. Esto es beneficioso, particularmente para que las señales sean interpoladas, porque le permite aumentar el ancho de banda de transición sin afectar a la interpolación y da como resultado una mejor atenuación de la banda de parada para un determinado y .lp Si establece alfa en 1, se supone que la señal ocupa todo el intervalo Nyquist. Establecer alfa en menos de uno permite regiones de no cuidado en la banda de detención. Por ejemplo, si la entrada ocupa la mitad del intervalo Nyquist, puede establecer alfa en 0,5.

b = intfilt(l,n,'Lagrange') diseña un filtro FIR que realiza la interpolación polinómica de Lagrange de la orden en una secuencia intercalada con ceros consecutivos cada muestra. tiene longitud * para par, y longitud * para impar.nl-1lb(n+1)ln(n+1)l-1n Si ambos y son uniformes, el filtro diseñado no es fase lineal.nl

Ambos tipos de filtros son básicamente lowpass y tienen una ganancia de en la banda de paso.l

Ejemplos

contraer todo

Diseñe un filtro de interpolación digital para subir la muestra de una señal por siete, utilizando el método de bandas limitadas. Especifique un factor de "bandlimitedness" de 0,5 y use

<math display="block">
<mrow>
<mn>2</mn>
<mo>×</mo>
<mn>2</mn>
</mrow>
</math>
muestras en la interpolación.

upfac = 7; alpha = 0.5; h1 = intfilt(upfac,2,alpha);

El filtro funciona mejor cuando la señal original está limitada a veces la frecuencia Nyquist.alpha Cree una señal de ruido con bandas limitadas generando 200 números aleatorios gaussianos y filtrando la secuencia con un filtro FIR de paso bajo de orden 40. Restablezca el generador de números aleatorios para obtener resultados reproducibles.

lowp = fir1(40,alpha);  rng('default') x = filter(lowp,1,randn(200,1));

Aumente la frecuencia de muestreo de la señal insertando ceros entre cada par de muestras de .x

xr = upsample(x,upfac);

Utilice la función para producir una señal interpolada.filter

y = filter(h1,1,xr);

Compensar el retardo introducido por el filtro. Trazar las señales originales e interpoladas.

delay = mean(grpdelay(h1));  y(1:delay) = [];  stem(1:upfac:upfac*length(x),x) hold on plot(y)  xlim([400 700])

también realiza la interpolación polinómia de Lagrange.intfilt

  • La interpolación polinómia de primer orden es sólo interpolación lineal, que se realiza con un filtro triangular.

  • La interpolación de orden cero se realiza con un filtro de media móvil y se asemeja a la salida de una pantalla de muestreo y retención.

Interpolar la señal original y superponer el resultado.

h2 = intfilt(upfac,1,'Lagrange');  y2 = filter(h2,1,xr); y2(1:floor(mean(grpdelay(h2)))) = [];  plot(y2) hold off

Algoritmos

El método bandlimited se utiliza para diseñar un filtro FIR de interpolación.firls El método polinómio utiliza la fórmula de interpolación polinómial de Lagrange en muestras igualmente espaciadas para construir el filtro adecuado.

Capacidades ampliadas

Consulte también

| | | |

Introducido antes de R2006a