Main Content

bilinear

Método de transformación bilineal para la conversión de filtros analógicos a digitales

Descripción

[zd,pd,kd] = bilinear(z,p,k,fs) convierte la función de transferencia del dominio s en forma de polos y ceros especificada por z, p, k y tasa de muestreo fs a un equivalente discreto.

[numd,dend] = bilinear(num,den,fs) convierte la función de transferencia del dominio s especificada por el numerador num y el denominador den a un equivalente discreto.

ejemplo

[Ad,Bd,Cd,Dd] = bilinear(A,B,C,D,fs) convierte el sistema de tiempo continuo y espacio de estados en matrices A, B, C y D a un sistema de tiempo discreto.

ejemplo

[___] = bilinear(___,fp) usa el parámetro fp como frecuencia "de coincidencia" para especificar el prewarping.

Ejemplos

contraer todo

Diseñe el prototipo para un filtro Chebyshev Tipo I paso banda de 10.º orden con 3 dB de ondulación en la banda de paso. Conviértalo en forma de espacio de estados.

[z,p,k] = cheb1ap(10,3);
[A,B,C,D] = zp2ss(z,p,k);  

Cree un filtro analógico con tasa de muestreo fs=2 kHz, bordes de banda prewarped u1 y u2 en rad/s, ancho de banda Bw=u2-u1 y frecuencia central Wo=u1u2 para utilizar con lp2bp. Especifique frecuencias de borde paso banda de 100 Hz y 500 Hz.

Fs = 2e3;
u1 = 2*Fs*tan(100*(2*pi/Fs)/2);   
u2 = 2*Fs*tan(500*(2*pi/Fs)/2); 
Bw = u2 - u1;                     
Wo = sqrt(u1*u2);                 
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
[b,a] = ss2tf(At,Bt,Ct,Dt);        

Calcule la respuesta en frecuencia del filtro analógico utilizando freqs. Represente la respuesta de magnitud y los bordes de banda de frecuencia prewarped.

[h,w] = freqs(b,a);     
plot(w,mag2db(abs(h)))
hold on
ylim([-165 5])
[U1,U2] = meshgrid([u1 u2],ylim);
plot(U1,U2)
legend('Magnitude response','Lower Passband Edge','Upper Passband Edge')
hold off
xlabel('Angular Frequency (rad/s)')
ylabel('Magnitude (dB)')
grid

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Magnitude response, Lower Passband Edge, Upper Passband Edge.

Use bilinear para crear un filtro digital paso banda con tasa de muestreo fs y borde de banda inferior de 100 Hz. Convierta el filtro digital de una forma de espacio de estados a una forma de función de transferencia con ss2tf.

[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,Fs);

[bz,az] = ss2tf(Ad,Bd,Cd,Dd);

Use fvtool para representar la respuesta de magnitud del filtro digital.

fvtool(bz,az,'Fs',Fs)

Figure Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains an object of type line.

Diseñe un filtro analógico paso bajo elíptico de 6.º orden con 3 dB de ondulación en la banda de paso y una banda de parada de 90 dB por debajo. Establezca una frecuencia de corte fc=20 Hz y una tasa de muestreo fs=200 Hz.

clear
Fc = 20;
Fs = 200;                             
[z,p,k] = ellip(6,3,90,2*pi*Fc,'s');
[num,den] = zp2tf(z,p,k);

Calcule la respuesta de magnitud del filtro analógico elíptico. Visualice el filtro analógico.

[h,w] = freqs(num,den);
plot(w/(2*pi),mag2db(abs(h)))
hold on
xlim([0 50])
[l1,l2] = meshgrid(Fc,[-120 0]);
plot(l1,l2)
grid
legend('Magnitude response','Passband Edge')
xlabel('Frequency (Hz)')
ylabel('Magnitude (dB)')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Magnitude response, Passband Edge.

Use bilinear para transformarlo en un filtro IIR de tiempo discreto. Establezca la frecuencia de coincidencia en fp=20 Hz.

[numd,dend] = bilinear(num,den,Fs,20);

Visualice el filtro con fvtool.

fvtool(numd,dend,'Fs',Fs)                     

Figure Magnitude Response (dB) contains an axes object. The axes object with title Magnitude Response (dB) contains an object of type line.

Argumentos de entrada

contraer todo

Ceros de la función de transferencia del dominio s, especificados como vector columna.

Polos de la función de transferencia del dominio s, especificados como vector columna.

Ganancia de la función de transferencia del dominio s, especificada como escalar.

Tasa de muestreo, especificada como un escalar positivo.

Coeficientes del numerador de la función de transferencia analógica, especificados como vector fila.

Coeficientes del denominador de la función de transferencia analógica, especificados como vector fila.

Matriz de estados en el dominio s, especificada como matriz. Si el sistema tiene p entradas y q salidas y está descrito por n variables de estado, A es n por n.

Tipos de datos: single | double

Matriz de entrada a estado en el dominio s, especificada como matriz. Si el sistema tiene p entradas y q salidas y está descrito por n variables de estado, B es n por p.

Tipos de datos: single | double

Matriz de estado a salida en el dominio s, especificada como matriz. Si el sistema tiene p entradas y q salidas y está descrito por n variables de estado, C es q por n.

Tipos de datos: single | double

Matriz de alimentación en el dominio s, especificada como matriz. Si el sistema tiene p entradas y q salidas y está descrito por n variables de estado, D es q por p.

Tipos de datos: single | double

Frecuencia de coincidencia, especificada como escalar positivo.

Argumentos de salida

contraer todo

Ceros de la función de transferencia del dominio z, especificados como vector columna.

Polos de la función de transferencia del dominio z, especificados como vector columna.

Ganancia de la función de transferencia del dominio z, especificada como escalar.

Coeficientes del numerador de la función de transferencia digital, especificados como vector fila.

Coeficientes del denominador de la función de transferencia digital, especificados como vector fila.

Matriz de estados en el dominio z, devuelta como una matriz. Si el sistema viene descrito por n variables de estado, Ad es n por n.

Tipos de datos: single | double

Matriz de entrada a estado en el dominio z, devuelta como una matriz. Si el sistema viene descrito por n variables de estado, Bd es n por 1.

Tipos de datos: single | double

Matriz de estado a salida en el dominio z, devuelta como una matriz. Si el sistema tiene q salidas y está descrito por n variables de estado, Cd es q por n.

Tipos de datos: single | double

Matriz de alimentación en el dominio z, devuelta como una matriz. Si el sistema tiene q salidas, Dd es q por 1.

Tipos de datos: single | double

Diagnóstico

bilinear requiere que el orden del numerador no sea mayor que el orden del denominador. Si no fuera el caso, bilinear muestra

El numerador no puede ser de mayor orden que el denominador.

Para que bilinear distinga entre los formatos de sistema lineal de cero-polo-ganancia y función de transferencia, los primeros dos parámetros de entrada deben ser vectores con la misma orientación en estos casos. Si no fuera el caso, bilinear muestra

Los primeros dos argumentos deben tener la misma orientación.

Algoritmos

contraer todo

La transformación bilineal es una aplicación matemática de variables. En el filtrado digital, es un método estándar para aplicar el plano s o analógico en el plano z o digital. Transforma los filtros analógicos, diseñados utilizando técnicas clásicas de diseño de filtros, en sus equivalentes discretos.

La transformación bilineal aplica el plano s al plano z mediante

H(z)=H(s)|s=2fsz1z+1.

Esta transformación aplica el eje jΩ (de Ω = –∞ a +∞) repetidamente alrededor del círculo de la unidad (ejw, de ω = –n a π) mediante

ω=2tan1(Ω2fs).

bilinear puede aceptar un parámetro opcional Fp que especifica prewarping. fp, en hercios, indica una frecuencia "de coincidencia", es decir, una frecuencia para la que las respuestas en frecuencia antes y después de la aplicación coinciden por completo. En el modo preconfigurado, la transformación bilineal aplica el plano s al plano z con

H(z)=H(s)|s=2πfptan(πfpfs)z1z+1.

Con la opción de preconfiguración, bilinear aplica el eje jΩ axis (de Ω = –∞ a +∞) repetidamente alrededor del círculo de la unidad (e, de ω = –π a π) mediante

ω=2tan1(Ωtan(πfpfs)2πfp).

En modo preconfigurado, bilinear hace coincidir la frecuencia 2πfp (en radianes por segundo) del plano s con la frecuencia normalizada 2πfp/fs (en radianes por segundo) del plano z.

La función bilinear funciona con tres representaciones diferentes del sistema lineal: cero-polo-ganancia, función de transferencia y forma de espacio de estados.

bilinear usa uno de los dos algoritmos, dependiendo del formato del sistema lineal de entrada que se proporcione. Un algoritmo funciona en una forma de cero-polo-ganancia y el otro en una forma de espacio de estados. Para representaciones de la función de transferencia, bilinear convierte a forma de espacio de estados, realiza la transformación y convierte el sistema de espacio de estados resultante de nuevo a forma de función de transferencia.

Algoritmo de cero-polo-ganancia

Para un sistema en forma de cero-polo-ganancia, bilinear lleva a cabo cuatro pasos:

  1. Si fp está presente, realiza el prewarping:

    fp = 2*pi*fp;
    fs = fp/tan(fp/fs/2)
    

    en caso contrario, fs = 2*fs.

  2. Elimina cualquier cero en ±∞ mediante

    z = z(finite(z));
    
  3. Transforma los ceros, los polos y la ganancia mediante

    pd = (1+p/fs)./(1-p/fs);    % Do bilinear transformation
    zd = (1+z/fs)./(1-z/fs);
    kd = real(k*prod(fs-z)./prod(fs-p));
    
  4. Añade ceros adicionales en -1 para que el sistema resultante tenga un orden equivalente de numerador y denominador.

Algoritmo de espacio de estados

Un sistema analógico en forma de espacio de estados viene dado por

x˙=Ax+Buy=Cx+Du

. El sistema se convierte a forma discreta utilizando ecuaciones de espacio de estados de la siguiente manera:

x[n+1]=Adx[n]+Bdu[n],y[n]     =Cdx[n]+Ddu[n].

Para convertir un sistema analógico a forma de espacio de estados, bilinear lleva a cabo dos pasos:

  1. Si fp está presente, deja

    λ=πfptan(πfp/fs).

    Si fp no está presente, deja λ=fs.

  2. Calcula Ad, Bd, Cd y Dd en términos de A, B, C y D mediante

    Ad=(IA12λ)1(I+A12λ),Bd=1λ(IA12λ)1B,Cd=1λC(IA12λ)1,Dd=12λC(IA12λ)1B+D.

Función de transferencia

Para un sistema en forma de función de transferencia, bilinear convierte una función de transferencia de dominio s dada por num y den a un equivalente discreto. Los vectores fila num y den especifican los coeficientes de numerador y denominador, respectivamente, en potencias descendentes de s. Deje que B(s) sea el polinomio numerador y A(s), el polinomio denominador. La función de transferencia es:

B(s)A(s)=B(1)sn++B(n)s+B(n+1)A(1)sm++A(m)s+A(m+1)

fs es la tasa de muestreo en hercios. bilinear devuelve el equivalente discreto en vectores fila numd y dend en potencias descendentes de z (potencias ascendentes de z–1). fp es la frecuencia de coincidencia opcional, en hercios, para el prewarping.

Referencias

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999.

[2] Parks, Thomas W., and C. Sidney Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido antes de R2006a

Consulte también

| | | |