El problema planteado en la pregunta parece no tener una solución de forma cerrada. Como se menciona en la pregunta y se muestra en otras respuestas, el resultado se puede desarrollar en una serie, que se puede lograr con cualquier herramienta matemática simbólica como Mathematica. Sin embargo, los términos se vuelven bastante complicados y feos, y no está claro qué tan buena es la aproximación cuando incluimos términos de hasta tercer orden. Como no podemos obtener una fórmula exacta, podría ser mejor calcular la solución numéricamente, lo que, a diferencia de la aproximación, dará un resultado (casi) exacto.
Sin embargo, de esto no se trata mi respuesta. Sugiero una ruta diferente que da una solución exacta al cambiar la formulación del problema. Después de pensarlo durante un tiempo, resulta que es la especificación de la frecuencia central y la especificación del ancho de banda como una relación (o, equivalentemente, en octavas) lo que causa la intratabilidad matemática. Hay dos formas de salir del dilema:ω0
- especifique el ancho de banda del filtro de tiempo discreto como una diferencia de frecuencias , donde y son los bordes de banda inferior y superior del filtro de tiempo discreto, respectivamente.Δω=ω2−ω1ω1ω2
- prescriba la relación , y en lugar de prescriba una de las dos frecuencias de borde u .ω2/ω1ω0ω1ω2
En ambos casos, es posible una solución analítica simple. Como es deseable prescribir el ancho de banda del filtro de tiempo discreto como una relación (o, equivalentemente, en octavas), describiré el segundo enfoque.
Definamos las frecuencias de borde y del filtro de tiempo continuo porΩ1Ω2
|H(jΩ1)|2=|H(jΩ2)|2=12(1)
con , donde es la función de transferencia de un filtro de paso de banda de segundo orden:Ω2>Ω1H(s)
H(s)=ΔΩss2+ΔΩs+Ω20(2)
con y . Tenga en cuenta que y para .ΔΩ=Ω2−Ω1Ω20=Ω1Ω2H(jΩ0)=1|H(jΩ)|<1Ω≠Ω0
Usamos la transformación bilineal para mapear las frecuencias de borde y del filtro de tiempo discreto a las frecuencias de borde y del filtro de tiempo continuo. Sin pérdida de generalidad podemos elegir . Para nuestros propósitos, la transformación bilineal toma la formaω1ω2Ω1Ω2Ω1=1
s=1tan(ω12)z−1z+1(3)
correspondiente a la siguiente relación entre frecuencias de tiempo continuo y de tiempo discreto:
Ω=tan(ω2)tan(ω12)(4)
De obtenemos configurando . Con y calculados a partir de , obtenemos la función de transferencia del filtro prototipo analógico a partir de . Aplicando la transformación bilineal , obtenemos la función de transferencia del filtro de paso de banda de tiempo discreto:(4)Ω2ω=ω2Ω1=1Ω2(4)(2)(3)
Hd(z)=g⋅z2−1z2+az+b(5)
con
gabc=ΔΩc1+ΔΩc+Ω20c2=2(Ω20c2−1)1+ΔΩc+Ω20c2=1−ΔΩc+Ω20c21+ΔΩc+Ω20c2=tan(ω12)(6)
Resumen:
El ancho de banda del filtro de tiempo discreto se puede especificar en octavas (o, en general, como una relación), y los parámetros del filtro prototipo analógico se pueden calcular exactamente, de modo que se logre el ancho de banda especificado. En lugar de la frecuencia central , especificamos los bordes de la banda y . La frecuencia central definida por es un resultado del diseño.ω0ω1ω2|Hd(ejω0)|=1
Los pasos necesarios son los siguientes:
- Especifique la proporción deseada de los bordes de la banda , y uno de los bordes de la banda (que por supuesto es equivalente a simplemente especificar y ).ω2/ω1ω1ω2
- Elija y determine de . Calcule y del filtro prototipo analógico .Ω1=1Ω2(4)ΔΩ=Ω2−Ω1Ω20=Ω1Ω2(2)
- Evalúe las constantes para obtener la función de transferencia de tiempo discreto .(6)(5)
Tenga en cuenta que con el enfoque más común donde se y , los bordes de banda reales y son un resultado del proceso de diseño. En la solución propuesta, se pueden especificar los bordes de la banda y es el resultado del proceso de diseño. La ventaja de este último enfoque es que el ancho de banda se puede especificar en octavas y la solución es exacta, es decir, el filtro resultante tiene exactamente el ancho de banda especificado en octavas.ω0Δω=ω2−ω1ω1ω2ω0
Ejemplo:
Especifiquemos un ancho de banda de una octava, y elegimos el borde inferior de la banda como . Esto da un borde de banda superior . Los bordes de la banda del filtro prototipo analógico son y de (con ) . Esto proporciona y . Con obtenemos la función de transferencia de tiempo discretoω1=0.2πω2=2ω1=0.4πΩ1=1(4)ω=ω2Ω2=2.2361ΔΩ=Ω2−Ω1=1.2361Ω20=Ω1Ω2=2.2361(6)(5)
Hd(z)=0.24524⋅z2−1z2−0.93294z+0.50953
que logra exactamente un ancho de banda de 1 octava y los bordes de banda especificados, como se muestra en la figura a continuación:
Solución numérica del problema original:
De los comentarios entiendo que es importante poder especificar exactamente la frecuencia central para la cual se satisface. Como se mencionó anteriormente, no es posible obtener una solución de forma cerrada exacta, y un desarrollo en serie produce expresiones bastante difíciles de manejar.ω0|Hd(ejω0)|=1
En aras de la claridad, me gustaría resumir las posibles opciones con sus ventajas y desventajas:
- especifique el ancho de banda deseado como una diferencia de frecuencia , y especifique ; en este caso es posible una solución simple de forma cerrada.Δω=ω2−ω1ω0
- especifique los bordes de banda y ω 2 (o, de manera equivalente, el ancho de banda en octavas, y uno de los bordes de banda); esto también conduce a una solución simple de forma cerrada, como se explicó anteriormente, pero la frecuencia central ω 0 es un resultado del diseño y no se puede especificar.ω1ω2ω0
- especifique el ancho de banda deseado en octavas y la frecuencia central (como se preguntó en la pregunta); no es posible una solución de forma cerrada, ni hay (por el momento) una aproximación simple. Por esta razón, creo que es deseable tener un método simple y eficiente para obtener una solución numérica. Esto es lo que se explica a continuación.ω0
Cuando se especifica , utilizamos una forma de la transformación bilineal con una constante de normalización que es diferente de la utilizada en ( 3 ) y ( 4 ) :ω0(3)(4)
Ω=tan(ω2)tan(ω02)(7)
Definimos . Denote la proporción especificada de bordes de banda del filtro de tiempo discreto comoΩ0=1
r=ω2ω1(8)
Con que obtenemos de ( 7 ) y ( 8 )c=tan(ω0/2)(7)(8)
r=arctan(cΩ2)arctan(cΩ1)(9)
Con , ( 9 ) puede reescribirse en la siguiente forma:Ω1Ω2=Ω20=1(9)
f(Ω1)=rarctan(cΩ1)−arctan(cΩ1)=0(10)
Para un valor dado de esta ecuación puede resolverse para Ω 1 con unas pocas iteraciones de Newton. Para esto necesitamos la derivada de f ( Ω 1 ) :rΩ1f(Ω1)
f′(Ω1)=c(r1+c2Ω21+1c2+Ω21)(11)
Con , sabemos que Ω 1 debe estar en el intervalo ( 0 , 1 ) . Aunque es posible llegar a soluciones iniciales más inteligentes, resulta que la suposición inicial Ω ( 0 ) 1 = 0.1 funciona bien para la mayoría de las especificaciones, y dará como resultado soluciones muy precisas después de solo 4 iteraciones del método de Newton:Ω0=1Ω1(0,1)Ω(0)1=0.14
Ω(n+1)1=Ω(n)1−f(Ω(n)1)f′(Ω(n)1)(12)
Con obtenido con unas pocas iteraciones de ( 12 ) podemos determinar Ω 2 = 1 / Ω 1 y Δ Ω = Ω 2 - Ω 1 , y usamos ( 5 ) y ( 6 ) para calcular los coeficientes del discreto -filtro de tiempo. Nota que la constante c está ahora dado por c = tan ( ω 0 / 2 ) .Ω1(12)Ω2=1/Ω1ΔΩ=Ω2−Ω1(5)(6)cc=tan(ω0/2)
Ejemplo 1:
Especifiquemos y un ancho de banda de 0.5 octavas. Esto corresponde a una relación r = ω 2 / ω 1 = 2 0.5 = √ω0=0.6π0.5. Con una suposición inicial deΩ1=0.1,4iteraciones del método de Newton dieron como resultado una soluciónΩ1=0.71, a partir de la cual los coeficientes del tiempo discreto pueden calcularse como se explicó anteriormente. La siguiente figura muestra el resultado:r=ω2/ω1=20.5=2–√=1.4142Ω1=0.14Ω1=0.71
El filtro se calculó con este script de Matlab / Octave:
% especificaciones
bw = 0.5; % de ancho de banda deseado en octavas
w0 = .6 * pi; % frecuencia de resonancia
r = 2 ^ (peso corporal); % de relación de bordes de banda
W1 = .1; % de conjetura inicial (funciona para la mayoría de las especificaciones)
Nit = 4; % # Iteraciones de Newton
c = tan (w0 / 2);
% Newton
para i = 1: Nit,
f = r * atan (c * W1) - atan (c / W1);
fp = c * (r / (1 + c ^ 2 * W1 ^ 2) + 1 / (c ^ 2 + W1 ^ 2));
W1 = W1 - f / fp
final
W1 = abs (W1);
if (W1> = 1), error ('Error al converger. Reduzca el valor de la suposición inicial'); final
W2 = 1 / W1;
dW = W2 - W1;
% filtro de tiempo discreto
escala = 1 + dW * c + W1 * W2 * c ^ 2;
b = (dW * c / escala) * [1,0, -1];
a = [1, 2 * (W1 * W2 * c ^ 2-1) / escala, (1-dW * c + W1 * W2 * c ^ 2) / escala];
Ejemplo 2
Agrego otro ejemplo para mostrar que este método también puede tratar con especificaciones para las cuales la mayoría de las aproximaciones darán resultados no sensitivos. Este suele ser el caso cuando el ancho de banda deseado y la frecuencia de resonancia son grandes. Diseñemos un filtro con y b w = 4 octavas. Cuatro iteraciones del método de Newton con una conjetura inicial Ω ( 0 ) 1 = 0.1 dan como resultado un valor final de Ω 1 = 0.00775 , es decir, en un ancho de banda del prototipo analógico de log 2 ( Ω 2 /ω0=0.95πbw=4Ω(0)1=0.1Ω1=0.00775 octavas. El filtro de tiempo discreto correspondiente tiene los siguientes coeficientes y su respuesta de frecuencia se muestra en la siguiente gráfica:log2(Ω2/Ω1)=log2(1/Ω21)≈14
b = 0,90986 * [1,0, -1];
a = [1.00000 0.17806 -0.81972];
Los bordes de la banda de media potencia resultantes son y ω 2 = 0.999612 π , que en realidad están exactamente a 4 octavas (es decir, un factor de 16 ) aparte.ω1=0.062476πω2=0.999612π416