bilinear
Método de transformación bilineal para la conversión de filtros analógicos a digitales
Sintaxis
Descripción
Ejemplos
Diseño de filtros IIR paso banda mediante el filtro analógico Chebyshev Tipo I
Diseñe el prototipo para un filtro Chebyshev tipo I de décimo orden con 6 dB de ondulación en la banda de paso. Convierta el prototipo en una forma de espacio de estados.
[z,p,k] = cheb1ap(10,6); [A,B,C,D] = zp2ss(z,p,k);
Transforme el prototipo en un filtro paso banda tal que el filtro digital equivalente tenga una banda de paso con bordes a 100 Hz y 500 Hz cuando se muestrea a una tasa . Para la transformación, especifique los bordes de banda prewarped y en rad/s, una frecuencia central y un ancho de banda .
fs = 2e3; f1 = 100; u1 = 2*fs*tan(f1*(2*pi/fs)/2); f2 = 500; u2 = 2*fs*tan(f2*(2*pi/fs)/2); [At,Bt,Ct,Dt] = lp2bp(A,B,C,D,sqrt(u1*u2),u2-u1);
Calcule la respuesta en frecuencia del filtro analógico mediante freqs
. Represente la respuesta de magnitud y los bordes de banda de frecuencia prewarped.
[b,a] = ss2tf(At,Bt,Ct,Dt); [h,w] = freqs(b,a,2048); plot(w,mag2db(abs(h))) xline([u1 u2],"-",["Lower" "Upper"]+" passband edge", ... LabelVerticalAlignment="middle") ylim([-165 5]) xlabel("Angular frequency (rad/s)") ylabel("Magnitude (dB)") grid
Utilice la función bilinear
para crear un filtro digital paso banda con tasa de muestreo .
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,fs);
Convierta el filtro digital de una forma de espacio de estados a secciones de segundo orden y calcule la respuesta en frecuencia con freqz
. Represente la respuesta de magnitud y los bordes de banda de paso.
[hd,fd] = freqz(ss2sos(Ad,Bd,Cd,Dd),2048,fs); plot(fd,mag2db(abs(hd))) xline([f1 f2],"-",["Lower" "Upper"]+" passband edge", ... LabelVerticalAlignment="middle") ylim([-165 5]) xlabel("Frequency (Hz)") ylabel("Magnitude (dB)") grid
Representación de tiempo discreto de un filtro elíptico
Diseñe un filtro analógico paso bajo elíptico de sexto orden con 5 dB de ondulación en la banda de paso, una banda de parada de 90 dB y una frecuencia de corte .
fc = 20;
[z,p,k] = ellip(6,5,90,2*pi*fc,"s");
Visualice la respuesta de magnitud del filtro analógico elíptico. Muestre la frecuencia de corte.
[num,den] = zp2tf(z,p,k); [h,w] = freqs(num,den,1024); plot(w/(2*pi),mag2db(abs(h))) xline(fc,Color=[0.8500 0.3250 0.0980]) axis([0 100 -125 5]) grid legend(["Magnitude response" "Cutoff frequency"]) xlabel("Frequency (Hz)") ylabel("Magnitude (dB)")
Utilice la función bilinear
para transformar el filtro analógico en un filtro IIR de tiempo discreto. Especifique una tasa de muestreo de y una frecuencia de coincidencia de prewarp de .
fs = 200; fp = 20; [zd,pd,kd] = bilinear(z,p,k,fs,fp);
Visualice la respuesta de magnitud del filtro de tiempo discreto. Muestre la frecuencia de corte.
[hd,fd] = freqz(zp2sos(zd,pd,kd),[],fs); plot(fd,mag2db(abs(hd))) xline(fc,Color=[0.8500 0.3250 0.0980]) axis([0 100 -125 5]) grid legend(["Magnitude response" "Cutoff frequency"]) xlabel("Frequency (Hz)") ylabel("Magnitude (dB)")
Argumentos de entrada
z
, p
, k
— Ceros, polos y ganancia del dominio analógico
vectores columna, escalar
Ceros, polos y ganancia de la función de transferencia del dominio s, especificada como dos vectores columna y un escalar.
fs
— Tasa de muestreo
escalar positivo
Tasa de muestreo, especificada como un escalar positivo.
num
, den
— Coeficientes de numerador y denominador del dominio analógico
vectores fila
Coeficientes de numerador y denominador de la función de transferencia analógica, especificados como vectores fila.
A
, B
, C
, D
— Matrices de espacios de estados del dominio analógico
matrices
Representación de espacios de estados en el dominio s, especificada como matrices. Si el sistema tiene entradas p y salidas q y está descrito por variables de estado n, A
es n por n, B
es n por p, C
es q por n y D
es q por p.
Tipos de datos: single
| double
fp
— Frecuencia de coincidencia
escalar positivo
Frecuencia de coincidencia, especificada como escalar positivo.
Argumentos de salida
zd
, pd
, kd
— Ceros, polos y ganancia del dominio digital
vectores columna, escalar
Ceros, polos y ganancia de la función de transferencia del dominio z, devueltos como vectores columna y un escalar.
numd
, dend
— Coeficientes de numerador y denominador del dominio digital
vectores fila
Coeficientes de numerador y denominador de la función de transferencia digital, devueltos como vectores fila.
Ad
, Bd
, Cd
, Dd
— Matrices de espacios de estados del dominio digital
matrices
Representación de espacios de estados en el dominio z, devuelta como matrices. Si el sistema está descrito por variables de estado n y tiene salidas q, Ad
es n por n, Bd
es n por 1, Cd
es q por n y Dd
es q por 1.
Tipos de datos: single
| double
Algoritmos
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
Esta transformación aplica el eje jΩ (de Ω = –∞ a +∞) repetidamente alrededor del círculo de la unidad (ejω, de ω = –π a π) mediante
bilinear
puede aceptar un parámetro opcional Fp
que especifica prewarping. fp
, en hercios, indica una frecuencia "de coincidencia" 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
Con la opción de preconfiguración, bilinear
aplica el eje jΩ axis (de Ω = –∞ a +∞) repetidamente alrededor del círculo de la unidad (ejω, de ω = –π a π) mediante
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:
Si
fp
está presente, realiza el prewarping:fp = 2*pi*fp; fs = fp/tan(fp/fs/2)
en caso contrario,
fs = 2*fs
.Elimina cualquier cero en ±∞ mediante
z = z(finite(z));
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));
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
. El sistema se convierte a forma discreta utilizando ecuaciones de espacio de estados de la siguiente manera:
Para convertir un sistema analógico a forma de espacio de estados, bilinear
lleva a cabo dos pasos:
Si
fp
está presente, dejaSi
fp
no está presente, deja λ=fs.Calcula
Ad
,Bd
,Cd
yDd
en términos deA
,B
,C
yD
mediante
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:
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., and Ronald W. Schafer, with 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
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)