La PizarraMatemática.

Matemáticas para ingeniería

Filtros digitales y ecuaciones en diferencias

Un filtro digital recibe números y produce otros. Una ecuación en diferencias indica cómo calcular el siguiente dato usando entradas y memoria. Vamos a hacer las primeras filas a mano, conservar lo que hay que recordar y después relacionar esa tabla con polos, estabilidad y frecuencia. Así una transferencia deja de ser una fracción sin conexión con el cálculo.

1. Primero despejamos la salida y declaramos qué memoria existe

Una ecuación en diferencias relaciona valores en índices enteros. No tiene que proceder de aproximar una derivada. Para calcular hacia adelante despejamos y[n] en función de datos de entrada y salidas anteriores. Si su coeficiente no es uno, dividimos toda la ecuación por él, siempre que no sea cero.

También hacen falta entradas previas y memoria inicial que la regla consulte. La misma entrada con otra memoria puede dar otra trayectoria. La transferencia de estado cero describe el efecto de la entrada cuando esa memoria está en reposo; no sustituye las condiciones iniciales de una ejecución distinta.

Dividir todos los términos antes de comenzar

2y[n]−0,8y[n−1]=x[n]+0,5x[n−1]; y[−1]=2, x[−1]=0, x[0]=1.

  1. Normalizar

    Dividiendo entre dos: y[n]=0,4y[n−1]+0,5x[n]+0,25x[n−1].
  2. Índice cero

    y[0]=0,4·2+0,5·1+0,25·0=1,3.
  3. Comparar

    Desde reposo, y[−1]=0, la misma entrada daría y[0]=0,5.

    El 0,8 adicional procede de la memoria, no de otro peso de entrada.

Resultado

La primera salida vale 1,3 con la memoria dada.

Lo comprobamos

No se conserva 0,8 como coeficiente de la actualización después de dividir el resto entre dos.

La salida libre puede alternar aunque la entrada sea cero

y[n]=−y[n−1]/2, con y[−1]=3.

  1. Primer valor

    y[0]=−3/2.
  2. Continuar

    y[1]=3/4 y y[2]=−3/8.
  3. Regla

    y[n]=3(−1/2)ⁿ⁺¹.

    El módulo decae y el signo alterna. Es válida para índice entero; no usamos una potencia de base negativa definida para todo tiempo real.

Resultado

La entrada cero no obliga a salida cero si ya había memoria.

Lo comprobamos

Cada valor se obtiene multiplicando el anterior por −1/2.

2. Cada fila utiliza la salida de las filas anteriores

En una actualización recursiva, y[0] se calcula una vez y pasa a ser dato de y[1]. Después se conserva y[1] para y[2]. Poner otra vez cero en la memoria de cada fila cambia el sistema que estamos ejecutando.

Cada fila conserva la salida que necesitará la siguiente
La salida pasa a ser memoriay[n]=y[n−1]/2+x[n]y[−1]=0; x=[2;0;2;0]nx[n]y[n−1]y[n]020210212212,5302,51,25Al cambiar de bloque, se guarda y.Reiniciar memoria cambia el resultado.
La tabla usa entrada dos, cero, dos, cero y memoria inicial cero. Las salidas son dos, uno, dos y medio, uno y cuarto. La columna de salida anterior contiene cero, dos, uno y dos y medio. Se conserva esa memoria al procesar el siguiente bloque de datos.

Con más de un retraso guardamos más de una salida, respetando sus posiciones. Una tabla separa índice, entrada, memoria y resultado. Es útil antes de programar y también para detectar un signo erróneo en una transferencia.

Procesar un bloque conservando su estado

y[n]=y[n−1]/2+x[n], y[−1]=0; entrada [2;0;2;0] desde cero.

  1. Dos primeras filas

    y[0]=0+2=2; y[1]=2/2+0=1.
  2. Dos siguientes

    y[2]=1/2+2=2,5; y[3]=2,5/2+0=1,25.
  3. Memoria

    Al final queda y[3]=1,25 para la próxima muestra.

    No se sustituye por el dato inicial cero.

Resultado

La salida es [2;1;2,5;1,25].

Lo comprobamos

La entrada cero de n=1 no borra el efecto de la entrada anterior.

Una ecuación de segundo orden conserva dos salidas

y[n]=y[n−1]/2+y[n−2]/4+x[n], y[−1]=y[−2]=0; x=δ.

  1. Arranque

    y[0]=1 y y[1]=1/2.
  2. Dos memorias

    y[2]=(1/2)(1/2)+(1/4)·1=1/2, no 1/4.
  3. Más filas

    y[3]=(1/2)(1/2)+(1/4)(1/2)=3/8; y[4]=3/16+1/8=5/16.
Resultado

El impulso comienza [1;1/2;1/2;3/8;5/16].

Lo comprobamos

Las raíces modales son (1±√5)/4; las dos tienen módulo menor que uno, en acuerdo con el decaimiento.

3. FIR e IIR se comprueban mirando cuánto dura la respuesta al impulso

Un FIR tiene h con un número finito de posiciones no nulas. Un IIR tiene una cola que no termina exactamente. Un programa recursivo puede representar un FIR si hay cancelaciones y la memoria es compatible; por eso se revisa la respuesta efectiva y no solo la presencia de una y anterior.

Duración infinita no significa inestabilidad. Para un filtro de convolución, la suma absoluta Σ|h[n]| debe ser finita para tener estabilidad BIBO. Los pesos pueden alternar y seguir siendo absolutamente sumables.

Un promedio de tres se olvida del impulso tras tres posiciones

y[n]=(x[n]+x[n−1]+x[n−2])/3.

  1. Impulso

    Con x=δ, las salidas en cero, uno y dos son 1/3.

  2. Después

    Desde n=3, los tres argumentos de x ya evitan el cero: la salida es cero.

  3. Clasificar

    h=[1/3;1/3;1/3] y cero fuera.

    Es FIR, causal y BIBO, con suma absoluta uno.

Resultado

Una ventana finita produce una respuesta de duración finita.

Lo comprobamos

Se declara entrada cero fuera del impulso para todas las posiciones consultadas.

Una cola alternante infinita puede ser estable

y[n]=−y[n−1]/2+x[n]/2 desde reposo.

  1. Impulso

    h[n]=(1/2)(−1/2)ⁿ para n≥0: comienza 1/2, −1/4, 1/8,…
  2. Suma absoluta

    Σ|h[n]|=(1/2)/(1−1/2)=1.

    La cola es IIR y BIBO estable.

  3. Suma con signo

    Σh[n]=(1/2)/(1+1/2)=1/3.

    Esta es su ganancia de continua, distinta de la suma absoluta.

Resultado

La estabilidad usa valores absolutos; la ganancia de continua conserva signos.

Lo comprobamos

No se deduce que mantenga constantes solo porque la suma absoluta sea uno.

4. La transferencia traduce retrasos y conserva los signos del despeje

Para estado cero, un retraso de k muestras introduce z⁻ᵏ.

Si y[n]+Σaₖy[n−k]=Σbⱼx[n−j], entonces H(z)=(Σbⱼz⁻ʲ)/(1+Σaₖz⁻ᵏ), en un marco compatible de transformadas y convergencia.

Primero se normaliza el coeficiente de y[n].

Una transformada unilateral con memoria inicial no nula contiene términos adicionales. H por sí sola no describe la respuesta libre. Una comprobación práctica es expandir H en potencias de z⁻¹ y compararlas con las primeras muestras del impulso.

De la regla a una fracción y otra vez a sus muestras

y[n]=0,4y[n−1]+0,5x[n]+0,25x[n−1], desde reposo.

  1. Transformar

    Y=0,4z⁻¹Y+(0,5+0,25z⁻¹)X.
    Así H=(0,5+0,25z⁻¹)/(1−0,4z⁻¹).
  2. Fracción en z

    H=(0,5z+0,25)/(z−0,4).

    El polo es 0,4 y el cero −0,5; para la respuesta causal, ROC |z|>0,4.

  3. Impulso

    h[0]=0,5; h[1]=0,4·0,5+0,25=0,45; h[2]=0,4·0,45=0,18.

    La expansión de la fracción da los mismos coeficientes.

Resultado

La transferencia corresponde a la regla normalizada.

Lo comprobamos

La ganancia H(1)=0,75/0,6=1,25 coincide con la suma del impulso.

La condición inicial agrega un término que H no guarda

La misma regla, con y[−1]=2, x[−1]=0 y entrada cero para n≥0.

  1. Iterar

    y[0]=0,8, y[1]=0,32, y[2]=0,128.
  2. Forma libre

    y[n]=2(0,4)ⁿ⁺¹ para n≥0.
    En unilateral, Y=0,4(z⁻¹Y+2), al ser X=0.
  3. Separar

    Y=0,8/(1−0,4z⁻¹).

    Convolucionar una entrada cero con h daría cero; hay que añadir esta respuesta libre.

Resultado

La fracción de estado cero y la trayectoria completa responden preguntas diferentes.

Lo comprobamos

La memoria decae aquí porque |0,4|<1, pero existe durante el transitorio.

5. Una expresión racional necesita causalidad o una región de convergencia

Los polos efectivos son singularidades después de reducir cancelaciones. Para una respuesta racional causal, la ROC está fuera del polo de mayor módulo; BIBO exige que todos esos polos estén estrictamente dentro del círculo unidad. Sin causalidad, la misma fracción puede describir otra secuencia.

Un modo aⁿ decae si |a|<1 y crece si |a|>1.

Un a negativo alterna. Polos repetidos pueden introducir factores polinómicos en n; dentro del círculo, ese crecimiento polinómico no vence al decaimiento geométrico.

Polo negativo, decaimiento con alternancia

H(z)=1/(1+0,5z⁻¹), causal.

  1. Localizar

    Multiplicando por z: H=z/(z+0,5); polo −0,5.
  2. Secuencia

    h[n]=(−0,5)ⁿ para n≥0, y cero antes.
  3. Estabilidad

    La suma absoluta es 1/(1−0,5)=2.

    Los signos alternan, pero las magnitudes decaen.

Resultado

El polo está dentro del círculo unidad.

Lo comprobamos

ROC |z|>0,5 contiene |z|=1, donde se puede evaluar su respuesta frecuencial.

La misma fracción con dos secuencias y dos diagnósticos

H(z)=z/(z−2).

  1. Derecha

    Con ROC |z|>2, h[n]=2ⁿ para n≥0.

    Es causal y no absolutamente sumable.

  2. Izquierda

    Con ROC |z|<2, h[n]=−2ⁿ para n≤−1, y cero después.
    Su suma absoluta es Σₖ≥₁2⁻ᵏ=1.
  3. Diagnóstico

    La segunda es estable, pero no causal. No contradice el criterio de polos de una transferencia causal: sus hipótesis han cambiado.

Resultado

Fracción y ROC juntas identifican la secuencia.

Lo comprobamos

Para la izquierda, H(1)=−1 coincide con la suma con signo −Σₖ≥₁2⁻ᵏ.

6. BIBO y estabilidad de la memoria interna requieren comprobaciones distintas

Un polo efectivo sobre el círculo unidad no supera el criterio BIBO causal. Que su impulso sea acotado no basta: alguna entrada acotada puede acumular aportaciones y generar salida sin cota. Estabilidad exige la propiedad para todas las entradas acotadas.

El módulo determina crecimiento y el signo añade alternancia
Modo libre: aⁿ−0,50,61,2Círculo: |z|=1|a|<1: el modo decaea<0: además alternaCausal: revisar polos efectivosy también estados ocultos.
En el plano complejo se marca el círculo unidad y tres modos reales. Menos un medio alterna y decae; cero coma seis decae sin alternar; uno coma dos crece. El criterio BIBO por polos exige transferencia racional causal con polos efectivos. Una cancelación algebraica no descarta por sí sola estados internos inestables.

Además, cancelar un factor en H puede ocultar un modo de la implementación. La transferencia reducida describe la relación de estado cero; un estado inicial o error interno puede excitar un modo que esa relación no muestra. Se revisa también la realización cuando importa estabilidad interna.

Un impulso acotado no salva a un acumulador

y[n]=y[n−1]+x[n], y[−1]=0.

  1. Impulso

    h[n]=1 para n≥0.

    No crece, pero Σ|h[n]| diverge.

  2. Entrada escalón

    Con x[n]=1 desde cero: y[0]=1, y[1]=2,…, y[n]=n+1.
  3. Otra frontera

    En y[n]=−y[n−1]+x[n], la entrada acotada x[n]=(−1)ⁿ produce y[n]=(n+1)(−1)ⁿ.

    El polo −1 tampoco da BIBO.

Resultado

El borde no se incluye en el criterio causal de estabilidad.

Lo comprobamos

La magnitud de la salida crece aunque la entrada nunca supere uno.

Una cancelación perfecta en H puede esconder una memoria que crece

y[n]=2y[n−1]+x[n]−2x[n−1].

  1. Estado cero

    Con prehistoria cero, y[n]=x[n].
    En efecto, H=(1−2z⁻¹)/(1−2z⁻¹)=1, un mapa FIR estable.
  2. Otra memoria

    Con x=0 y y[−1]=1, la actualización da y[0]=2, y[1]=4,…, y[n]=2ⁿ⁺¹.
  3. Separar

    La realización tiene un modo interno inestable. No se descubre diciendo solo que la transferencia reducida H=1 no tiene polos.

Resultado

La estabilidad de la entrada-salida desde reposo no certifica toda memoria interna.

Lo comprobamos

Una pequeña diferencia inicial también crece con el factor dos en cada muestra.

7. La respuesta en frecuencia se evalúa donde el círculo unidad está en la ROC

Si h es absolutamente sumable, sustituimos z=exp(iΩ) en H y obtenemos la respuesta a una oscilación compleja bilateral. Ω se mide en radianes por muestra y se relaciona con una frecuencia física mediante Ω=2πf/fₛ. Módulo y fase tienen funciones distintas.

Para una constante bilateral, H(1)=Σh[n] es la ganancia de continua. Un escalón que empieza desde reposo puede acercarse a ese resultado tras un transitorio estable. No se confunden la salida permanente a una señal que existía siempre y el arranque de un registro.

Normalizar un polo para que conserve una constante

y[n]=0,6y[n−1]+0,4x[n], desde reposo.

  1. Transferencia

    H(z)=0,4/(1−0,6z⁻¹), con polo 0,6 y ROC |z|>0,6.
  2. Extremos

    H(1)=0,4/0,4=1.
    En z=−1, H=0,4/1,6=1/4: una alternancia permanente se reduce a un cuarto.
  3. Arranque

    Al escalón unitario, y[n]=1−(0,6)ⁿ⁺¹ para n≥0.
    Se acerca a uno, pero y[0]=0,4 no es todavía uno.
Resultado

La ganancia de continua uno no elimina el tiempo de arranque.

Lo comprobamos

Σₖ≥₀0,4(0,6)ᵏ=1 confirma la normalización.

Separar parte real, imaginaria, amplitud y fase

En el mismo filtro, Ω=π/2.

  1. Sustituir

    exp(−iπ/2)=−i, luego H=0,4/(1+0,6i).
  2. Racionalizar

    Multiplicando por el conjugado: H=(5−3i)/17.
  3. Interpretar

    El módulo es √34/17 y la fase −arctan(3/5). Una entrada cos(πn/2) bilateral produce una oscilación con esa escala y ese desfase, no solo la parte real constante 5/17.

Resultado

El número complejo contiene dos datos físicos de la respuesta.

Lo comprobamos

La magnitud al cuadrado es (25+9)/17²=34/289.

8. La aritmética real de la implementación puede cambiar las propiedades ideales

En el modelo exacto, cada coeficiente y estado conserva todos sus decimales. En un dispositivo o programa con formato limitado se redondean valores, se acota el rango o se satura. Estas operaciones deben especificarse: no son automáticamente una pequeña perturbación LTI.

Redondear coeficientes puede mover polos. Redondear estados puede generar ciclos límite con entrada cero. Saturar impide la superposición. Para evaluar una implementación se usan sus reglas concretas de cálculo, no solo una transferencia ideal anterior a ellas.

Un polo estable cercano al borde puede acabar justo sobre él

El coeficiente exacto a=0,96 se guarda con una cifra decimal por redondeo al más próximo.

  1. Ideal

    El filtro causal 1/(1−0,96z⁻¹) tiene un polo dentro del círculo, con suma absoluta 25.

  2. Guardado

    0,96 se redondea a 1,0. La recurrencia almacenada se convierte en acumulador.

  3. Efecto

    El polo está ahora en uno y falla BIBO. Con a=0,94 se guardaría 0,9 y el diagnóstico sería diferente; se revisa el valor realmente usado.

Resultado

Estar cerca de la frontera exige margen al cuantizar.

Lo comprobamos

La estabilidad exacta no se conserva para cualquier precisión sin comprobar.

Un empate de redondeo puede mantener una memoria que debería decaer

Actualización y[n]=Q(y[n−1]/2), y[−1]=1/4; Q redondea a múltiplos de 1/4, empates alejándose de cero.

  1. Primer paso

    La mitad es 1/8, exactamente entre cero y 1/4. La regla declarada elige 1/4.

  2. Repetir

    Cada siguiente paso vuelve a la misma situación. La salida permanece en 1/4 con entrada cero.

  3. Comparar

    En aritmética exacta decaería como (1/4)(1/2)ⁿ⁺¹. Con empates al nivel par, el primer 1/8 se redondearía a cero: otra regla, otra trayectoria.

Resultado

El filtro con estados redondeados no sigue exactamente la recurrencia lineal ideal.

Lo comprobamos

No se atribuye el valor persistente al polo ideal 1/2.

Una saturación visible rompe superposición

T{x}=sat(x), donde sat recorta amplitudes al intervalo [−1,1].

  1. Por separado

    T{3/4}=3/4; sumar dos salidas da 3/2.
  2. Combinar antes

    T{3/4+3/4}=T{3/2}=1.
  3. Comparar

    Uno no es tres medios. Esta saturación es no lineal, aunque antes del recorte hubiera un filtro lineal.

Resultado

El análisis LTI ideal no describe exactamente la etapa saturada.

Lo comprobamos

Los límites de rango forman parte del modelo implementado.

9. La verificación reúne impulso, constante y continuidad entre bloques

Una prueba útil compara la recurrencia con h, con la transferencia y con una entrada fácil. Un error de signo suele cambiar varias de esas comprobaciones. Además se prueba que procesar un registro en dos bloques conserva la misma salida si se transmite correctamente la memoria.

Ninguna tabla finita demuestra por sí sola una propiedad universal, pero sí detecta errores de implementación. La demostración se hace con la ecuación general y sus hipótesis; los datos numéricos comprueban que el cálculo concreto respeta esa ecuación.

Tres descripciones coinciden para un filtro normalizado

y[n]=y[n−1]/4+3x[n]/4, con reposo inicial.

  1. Impulso

    h[0]=3/4; h[1]=3/16; h[2]=3/64.
    En general h[n]=(3/4)(1/4)ⁿ para n≥0.
  2. Transferencia

    H=(3/4)/(1−z⁻¹/4), polo 1/4.

    Su ganancia de continua es uno.

  3. Escalón

    Sumando h hasta n: y[n]=1−(1/4)ⁿ⁺¹.

    Comienza 3/4, 15/16, 63/64 y tiende a uno.

Resultado

Iteración, expansión geométrica y ganancia llevan al mismo diagnóstico.

Lo comprobamos

Multiplicar el impulso de entrada por cuatro multiplica cada salida por cuatro.

Partir un bloque no debe reiniciar el sistema sin querer

y[n]=y[n−1]/2+x[n], entrada [2;0;2;0] y memoria inicial cero.

  1. Primer bloque

    Procesar [2;0] da [2;1] y deja memoria uno.

  2. Segundo bloque

    Conservando esa memoria, [2;0] produce [2,5;1,25]. El resultado completo es [2;1;2,5;1,25].

  3. Reinicio erróneo

    Si se vuelve a memoria cero, el segundo bloque da [2;1]. Se ha cambiado la ejecución, aunque la fórmula del código no haya cambiado.

Resultado

El estado final de un bloque es el estado inicial del siguiente.

Lo comprobamos

La comparación es sobre la misma entrada y una única condición inicial original.

Ahora lo resolvemos de principio a fin.

EJEMPLO RESUELTO 1

Un filtro recursivo estable

y[n]=0,5y[n−1]+x[n], y[−1]=0. Entrada δ[n]. Calcula h[0],h[1],h[2].

  1. Entrada y memoria

    Para obtener h usamos x=δ y y[−1]=0.

    El impulso vale uno en cero y cero en todos los otros índices.

  2. Índice cero

    h[0]=0,5·0+1=1.
  3. Índice uno

    h[1]=0,5·h[0]+0=0,5.
  4. Índice dos

    h[2]=0,5·h[1]+0=0,25.
  5. Patrón

    Para n≥0, h[n]=(0,5)ⁿ.

    Antes de cero vale cero por causalidad y reposo.

  6. Control

    La razón entre términos consecutivos es 0,5 y la suma absoluta es dos. El polo 0,5 está dentro del círculo unidad.

Resultado

h=[1; 0,5; 0,25; …].

Lo comprobamos

El cociente h[n]/h[n−1]=0,5 coincide con la recurrencia. Su polo 0,5 tiene módulo menor que uno.

EJEMPLO RESUELTO 2

Pasar a transferencia

Para la misma recurrencia, halla H(z).

  1. Recurrencia

    y[n]=0,5y[n−1]+x[n], en estado cero.
  2. Traducir el retraso

    La transformada del dato anterior es z⁻¹Y en este marco de reposo y convergencia.

  3. Agrupar

    Y=0,5z⁻¹Y+X; así (1−0,5z⁻¹)Y=X.
  4. Transferencia

    H=Y/X=1/(1−0,5z⁻¹)=z/(z−0,5), interpretada como relación lineal de estado cero, sin dividir una señal nula punto a punto.

  5. Polo y ROC

    El polo es 0,5.

    Para la respuesta causal, ROC |z|>0,5.
  6. Comprobar

    La expansión 1+0,5z⁻¹+0,25z⁻²+… reproduce h[0], h[1], h[2]. Si hubiera memoria previa no nula se añadiría su respuesta libre.

Resultado

H(z)=1/(1−0,5z⁻¹), polo 0,5.

Lo comprobamos

La expansión geométrica 1+0,5z⁻¹+0,25z⁻²+… reproduce los tres valores del impulso calculados por iteración.

Los símbolos que hemos usado

x[n], y[n]
Entrada y salida de índice entero n.
a_k, b_j
Coeficientes constantes de salidas pasadas y entradas desplazadas.
z
Variable compleja de la transformada Z.
X(z), Y(z), H(z)
Transformadas de entrada y salida, y transferencia Y/X bajo estado cero.
h[n]
Respuesta al impulso con memoria inicialmente nula.
ROC
Región de convergencia de la transformada Z.
FIR, IIR
Filtros de respuesta impulsional finita o infinita.

Ahora te toca a ti.

Tienes cinco ejercicios. Inténtalos; las pistas te ayudan si te atascas.

Practicar este tema →

Para ampliar