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 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 , bordes de banda prewarped y en rad/s, ancho de banda y frecuencia central 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
Use bilinear
para crear un filtro digital paso banda con tasa de muestreo 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)
Representación de tiempo discreto de un filtro elíptico
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 y una tasa de muestreo .
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)')
Use bilinear
para transformarlo en un filtro IIR de tiempo discreto. Establezca la frecuencia de coincidencia en .
[numd,dend] = bilinear(num,den,Fs,20);
Visualice el filtro con fvtool
.
fvtool(numd,dend,'Fs',Fs)
Argumentos de entrada
z
— Ceros
vector columna
Ceros de la función de transferencia del dominio s, especificados como vector columna.
p
— Polos
vector columna
Polos de la función de transferencia del dominio s, especificados como vector columna.
k
— Ganancia
escalar
Ganancia de la función de transferencia del dominio s, especificada como escalar.
fs
— Tasa de muestreo
escalar positivo
Tasa de muestreo, especificada como un escalar positivo.
num
— Coeficientes del numerador
vector fila
Coeficientes del numerador de la función de transferencia analógica, especificados como vector fila.
den
— Coeficientes del denominador
vector fila
Coeficientes del denominador de la función de transferencia analógica, especificados como vector fila.
A
— Matriz de estados
matriz
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
B
— Matriz de entrada a estado
matriz
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
C
— Matriz de estado a salida
matriz
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
D
— Matriz de alimentación
matriz
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
fp
— frecuencia de coincidencia
escalar positivo
Frecuencia de coincidencia, especificada como escalar positivo.
Argumentos de salida
zd
— Ceros
vector columna
Ceros de la función de transferencia del dominio z, especificados como vector columna.
pd
— Polos
vector columna
Polos de la función de transferencia del dominio z, especificados como vector columna.
kd
— Ganancia
escalar
Ganancia de la función de transferencia del dominio z, especificada como escalar.
numd
— Coeficientes del numerador
vector fila
Coeficientes del numerador de la función de transferencia digital, especificados como vector fila.
dend
— Coeficientes del denominador
vector fila
Coeficientes del denominador de la función de transferencia digital, especificados como vector fila.
Ad
— Matriz de estados
matriz
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
Bd
— Matriz de entrada a estado
matriz
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
Cd
— Matriz de estado a salida
matriz
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
Dd
— Matriz de alimentación
matriz
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
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 (ejw, de ω = –n a π) mediante
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
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., 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
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)