Pregunta matemática que surge del uso de la transformación bilineal


10

Así que esto está relacionado con el Libro de cocina y traté de resolverlo hace unas dos décadas, me di por vencido y recordé el problema sin resolver. Pero es bastante sencillo, pero aún así me quedé sin trabajo.

Este es un filtro de paso de banda simple (BPF) con frecuencia resonante y resonancia :Ω0Q

H(s)=1QsΩ0(sΩ0)2+1QsΩ0+1

A la frecuencia de resonancia

|H(jΩ)|H(jΩ0)=1

y las bandas superiores e inferiores se definen de modo que

|H(jΩU)|2=|H(jΩ02BW/2)|2=12

|H(jΩL)|2=|H(jΩ02BW/2)|2=12

Los llamamos "bandas de medio poder" . Como somos audio, definimos el ancho de banda en octavas, y en el mundo analógico este ancho de banda en octavas, , está relacionado con como:QBWQ

1Q=2BW12BW=2sinh(ln(2)2BW)

Estamos usando la transformación bilineal (con frecuencia resonante preformada) que mapea:

sΩ01tan(ω0/2)1z11+z1jΩΩ0jtan(ω/2)tan(ω0/2)

dejando y . s = j Ωz=ejωs=jΩ

La frecuencia angular resonante del filtro analógico es , y con la compensación de deformación de frecuencia realizada a la frecuencia resonante en el filtro digital realizado, cuando (la frecuencia resonante definida por el usuario), entonces . ω = ω 0 Ω = Ω 0Ω0ω=ω0Ω=Ω0

Entonces, si la frecuencia angular analógica es

ΩΩ0=tan(ω/2)tan(ω0/2)

entonces se asigna a la frecuencia angular digital como

ω=2arctan(ΩΩ0tan(ω0/2))

Ahora, las bandas superiores e inferiores en el mundo analógico son

ΩU=Ω02BW/2
ΩL=Ω02BW/2

y en el dominio de frecuencia digital son

ωU=2arctan(ΩUΩ0tan(ω0/2))=2arctan(2BW/2tan(ω0/2))

ωL=2arctan(ΩLΩ0tan(ω0/2))=2arctan(2BW/2tan(ω0/2))

Entonces, la diferencia real, en la frecuencia de registro de las bandas (que es el ancho de banda real en el filtro digital) es:

bw=log2(ωU)log2(ωL)=log2(2arctan(2BW/2tan(ω0/2)))log2(2arctan(2BW/2tan(ω0/2))) 

o

ln(2)bw=ln(arctan(eln(2)BW/2tan(ω0/2)))ln(arctan(eln(2)BW/2tan(ω0/2)))

Esto tiene una forma funcional de

f(x)=ln(arctan(αex))ln(arctan(αex))

donde , yf(x)ln(2)bwxln(2)2BWαtan(ω0/2)

Lo que quiero hacer es invertir (pero sé que no puedo hacerlo exactamente con una buena forma cerrada). Ya he hecho una aproximación de primer orden y quiero subirla a una aproximación de tercer orden. Y esto se ha convertido en una especie de cópula femenina canina, aunque debería ser sencilla.f(x)

Ahora, esto tiene algo que ver con la fórmula de inversión de Lagrange y solo quiero llevarlo a un término más del que tengo.

Sabemos desde arriba que es una función de simetría impar:f(x)

f(x)=f(x)

Esto significa que y todos los términos de orden par de la serie Maclaurin serán cero:f(0)=0

y=f(x)=a1x+a3x3+...

La función inversa también es de simetría impar, pasa por cero y puede expresarse como una serie de Maclaurin

x=g(y)=b1y+b3y3+...

y si sabemos qué son y de , entonces tenemos una buena idea de lo que deben ser y :a1a3f(x)b1b3

b1=1a1b3=a3a14

Ahora, puedo calcular la derivada de y evaluarla en cero y obtengof(x)

a1=2α(1+α2)arctan(α)=sin(ω0)ω0/2
b1=(1+α2)arctan(α)2α=ω0/2sin(ω0)

Pero me mucho obtener y, por tanto, . ¿Alguien puede hacer esto? Incluso me conformaría con una expresión sólida para la tercera derivada de evaluada en .a3b3f(x)x=0


2
Solo para aclarar: su objetivo es invertir , es decir, para una dada , ¿quieres encontrar la ? En particular, desea hacerlo por expansión polinómica y está buscando el tercer coeficiente (ya que el segundo es cero, haga la rareza de la función). ¿Derecha?
f(x)=ln(arctan(αex))ln(arctan(αex))
f(x)x
Maximilian Matthé

2
Entonces, desea saber dado , es decir, desea saber qué ancho de banda del filtro analógico debe elegir para obtener el ancho de banda deseado del filtro digital, ¿verdad? BWbw
Matt L.

2
si, si y si.
robert bristow-johnson

1
@ robertbristow-johnson No leí la pregunta con demasiada atención, pero sí noté que estás interesado en en . ¿Está bien usar Mathematica o Wolfram Alpha para calcular eso? Obtengo un resultado bastante limpio: . wolframalpha.com/input/… Y si quita la parte "evaluar en x = 0", Wolfram escupe el acoplamiento de la hembra canina en todo su esplendor. f(x)x=04(8π2)α3π3
Atul Ingle

1
Error tipográfico en mi allí. El resultado "limpio" es en realidad: wolframalpha.com/input/…f(x)(6a2)/((a2+1)2atan(a)2)+(2a)/((a2+1)atan(a))+(16a5)/((a2+1)3atan(a))+(12a4)/((a2+1)3atan(a)2)(16a3)/((a2+1)2atan(a))+(4a3)/((a2+1)3atan(1)(a)3)
Atul Ingle

Respuestas:


4

Para complementar mi parte a esta pregunta: Aquí hay una respuesta algo corta basada en una expansión manual de la función impar en una serie hasta el tercer orden. Se pueden encontrar más detalles en mathSE .f(x)

f(x)=ln(arctan(αex))ln(arctan(αex))(1)=f1x+f3x3+O(x5)

Al principio nos enfocamos en el término izquierdo de y comenzamos con

ln(arctan(αex))
f(x)

Expansión en serie de :arctan

Obtenemos

arctan(αex)=n=0(1)n2n+1α2n+1e(2n+1)x=(2)=j=01j!n=0(1)n(2n+1)j1α2n+1xj

Ahora derivamos de (2) los coeficientes hasta . Usando el operador de coeficiente para denotar el coeficiente de en una serie obtenemos x3[xk]xk

[x0]arctan(αex)=n=0(1)n2n+1α2n+1=arctanα[x1]arctan(αex)=n=0(1)nα2n+1=α1+α2[x2]arctan(αex)=12n=0(1)n(2n+1)α2n+1==α2ddα(α1+α2)=α(1α2)2(1+α2)2[x3]arctan(αex)=16n=0(1)n(2n+1)2α2n+1=α26n=0(1)n(2n+1)(2n)α2n1+α6n=0(1)n(2n+1)α2n==(α26d2dα2+α6ddα)(α1+α2)==α56α3+α6(1+α2)3

Concluimos

arctan(αex)=arctan(α)+α1+α2x+α(1α2)2(1+α2)2x2(3)+α56α3+α6(1+α2)3x3+O(x4)

Poderes en series logarítmicas:

Para derivar los coeficientes de la serie logarítmica escribimos la expresión (3) como y consideramos

ln(arctan(αex))=n=1(1)n+1n(arctan(αex)1)n
arctan(αex)=a0+a1x+a2x2+a3x3+O(x4)
(4)ln(arctan(αex))=n=1(1)n+1n((a01)+a1x+a2x2+a3x3)n+O(x4)

Ahora establecemos y extraemos los coeficientes de a de A(x)=(a01)+a1x+a2x2+a3x3x0x3

(A(x))n=((a01)+a1x+a2x2+a3x3)n=j=0n(nj)(a01)j(a1x+a2x2+a3x3)nj(5)=j=0n(nj)(a01)jk=0nj(njk)a1kxk(a2x2+a3x3)njk

Obtenemos de (5)

[x0](A(x))n==(a01)n[x1](A(x))n==a1n(a01)n1[x2](A(x))n==a2n(a01)n1+12n(n1)a12(a01)n2[x3](A(x))n==na3(a01)n1+a1a2n(n1)(a01)n2(6)+16n(n1)(n2)a13(a01)n3

Expansión en serie del logaritmo:

Calculamos usando (6) los coeficientes de en términos deln(arctan(αex))aj,0j3

[x0]ln(arctan(αex))=n=1(1)n+1n[x0]A(x)=n=1(1)n+1n[x0](a01)n=ln(a01)[x1]ln(arctan(αex))=n=1(1)n+1n[x1]A(x)=n=1(1)n+1n[x0]a1n(a01)n1=a1n=0(1)n(a01)n=a1a0[x2]ln(arctan(αex))=n=1(1)n+1n[x2]A(x)=n=1(1)n+1n(a2n(a01)n1+12n(n1)a12(a01)n2)==(a2+a122dda0)(1a0)=a2a0a122a02[x3]ln(arctan(αex))=n=1(1)n+1n[x3]A(x)=n=1(1)n+1n(na3(a01)n1+a1a2n(n1)(a01)n2+16n(n1)(n2)a13(a01)n3)==(a3+a1a2dda0+a136d2da02)(1a0)(7)=a3a0a1a2a02+a133a03

Expansión en serie de :f(x)

Ahora es tiempo de cosechar. Finalmente obtenemos con (3) y (7) respetando que es imparf(x)

f(x)=ln(arctan(αex))ln(arctan(αex))==2a1a0x+2(a3a0a1a2a02+a133a03)x3+O(x5)=2α(1+α2)arctan(α)x+α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)x3+O(x5)

Markus, si bien tienes razón sobre , ya que sabemos que tiene una simetría impar y que los términos de orden par son cero, creo que puedes decir que esta expansión es buena para . O(x4)f(x)O(x5)
robert bristow-johnson

@ robertbristow-johnson: Sí, por supuesto. Actualizado en consecuencia. :-)
Markus Scheuer

¡Gran esfuerzo! Tratando de leer esta respuesta detallada y larga, no pude ver cómo podría aislar , en la ecuación (4), fuera del logaritmo. La serie infinita ya incluye todas las potencias de , entonces, ¿qué significa el término aislado allí? O(x4)xO(x4)
Fat32

Por supuesto, tengo la sensación de lo que quieres decir allí, pero la notación adecuada podría ser algo como esto: donde utilicé para mantenerme alejado de todas tus otras anotaciones. Y tenga en cuenta que he usado y para distinguir entre esos dos conjuntos de coeficientes. Entonces ahora su ecuación (4) y esta línea anterior no son exactamente las mismas. Sin embargo, no creo que afecte a ninguno de sus progresos posteriores.
ln(arctan(αex)) = n=1(1)n+1n((a01)+a1x+a2x2+a3x3+O1(x4))n = T0+T1x+T2x2+T3x3+O2(x4)
TO1O2
Fat32

@ Fat32: Es posible que desee ver la notación big-O
Markus Scheuer

3

(Convertir comentario a respuesta)

Usando Wolfram Alpha, en evalúa como: f(x)x=0

f(0)=6α2(α2+1)2(arctan(α))2 + 2α(α2+1)arctan(α)+16α5(α2+1)3arctan(α) + 12α4(α2+1)3(arctan(α))216α3(α2+1)2arctan(α) + 4α3(α2+1)3(arctan(α))3=2(α46α2+1)α(α2+1)3arctan(α)+6(α21)α2(α2+1)3(arctan(α))2+4α3(α2+1)3(arctan(α))3

http://www.wolframalpha.com/input/?i=evaluate+d3%2Fdx3++(+ln+(arctan+(a+exp(+x)))+-+ln+(arctan(a+exp(-+x) )) +) + en + x% 3D0

También podemos verificar si esto coincide con la respuesta de Markus aquí .

Su coeficiente de resulta serx3

α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2).

Si multiplicamos eso por 6 y reorganizamos algunos factores obtenemos:

2α(α46α2+1)(1+α2)3arctan(α)6α2(1α2)(1+α2)3(arctan(α))2+4α3(1+α2)3(arctan(α))3

que coincide!


Atul, parece que su respuesta simplificada no es consistente con la respuesta de Markus en el SE de matemáticas. ¡debería ser el caso de que no creo que cada término en su f '' '(0) sea consistente con Markus. podría ser que Markus está equivocado.
f(x)|x0 = 3!a3=6a3
robert bristow-johnson

2
@ robertbristow-johnson Creo que coinciden.
Atul Ingle

Lo hacen ahora. Creo que Markus debe haber tenido un error. hizo su respuesta a la buena manera tradicional.
robert bristow-johnson

Atul, obtendrás tu recompensa. pero exploré las reglas sobre la recompensa y no me dejaron dividirlo, pero me dejaron otorgarlo dos veces, pero una a la vez. así que, dado que Markus tiene menos reputación que usted aquí en dsp.se y dado que respondió una respuesta sin la ayuda de una computadora, primero le otorgo su recompensa. entonces pondré otra recompensa por esta pregunta y luego te la otorgaré. dice que necesito esperar 23 horas. No sé quién recibirá mi "marca de verificación" todavía.
Robert Bristow-Johnson

1
@ robertbristow-johnson perdón por la respuesta tardía. Los coeficientes son para respectivamente. wolframalpha.com/input/…2/3,2/15,16/945,2/945ω02,ω04,ω06,ω08
Atul Ingle

3

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

  1. 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
  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

(1)|H(jΩ1)|2=|H(jΩ2)|2=12

con , donde es la función de transferencia de un filtro de paso de banda de segundo orden:Ω2>Ω1H(s)

(2)H(s)=ΔΩss2+ΔΩs+Ω02

con y . Tenga en cuenta que y para .ΔΩ=Ω2Ω1Ω02=Ω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

(3)s=1tan(ω12)z1z+1

correspondiente a la siguiente relación entre frecuencias de tiempo continuo y de tiempo discreto:

(4)Ω=tan(ω2)tan(ω12)

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)

(5)Hd(z)=gz21z2+az+b

con

(6)g=ΔΩc1+ΔΩc+Ω02c2a=2(Ω02c21)1+ΔΩc+Ω02c2b=1ΔΩc+Ω02c21+ΔΩc+Ω02c2c=tan(ω12)

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:

  1. 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
  2. Elija y determine de . Calcule y del filtro prototipo analógico .Ω1=1Ω2(4)ΔΩ=Ω2Ω1Ω02=Ω1Ω2(2)
  3. 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Ω02=Ω1Ω2=2.2361(6)(5)

Hd(z)=0.24524z21z20.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:

enter image description here

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:

  1. 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
  2. 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
  3. 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)

(7)Ω=tan(ω2)tan(ω02)

Definimos . Denote la proporción especificada de bordes de banda del filtro de tiempo discreto comoΩ0=1

(8)r=ω2ω1

Con que obtenemos de ( 7 ) y ( 8 )c=tan(ω0/2)(7)(8)

(9)r=arctan(cΩ2)arctan(cΩ1)

Con , ( 9 ) puede reescribirse en la siguiente forma:Ω1Ω2=Ω02=1(9)

(10)f(Ω1)=rarctan(cΩ1)arctan(cΩ1)=0

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)

(11)f(Ω1)=c(r1+c2Ω12+1c2+Ω12)

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)Ω1(0)=0.14

(12)Ω1(n+1)=Ω1(n)f(Ω1(n))f(Ω1(n))

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

enter image description here

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Ω1(0)=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/Ω12)14

b = 0,90986 * [1,0, -1];
a = [1.00000 0.17806 -0.81972];

enter image description here

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


dos comentarios iniciales (todavía no lo he leído, Matt): primero, me interesa más la frecuencia de registro que la frecuencia lineal. para el BPF analógico (o el BPF digital con frecuencia de resonancia mucho más baja que Nyquist), existe una simetría perfecta sobre la frecuencia de resonancia.
robert bristow-johnson

y el segundo comentario es este, mientras que agradezco que aparentemente se haya quedado con la notación de y z = e j ω , desearía que se adhiriera a la notación de que las frecuencias de resonancia analógica y digital son Ω 0 y ω 0 , respectivamente, y el análogo de bandedges superior e inferior son ω U y ω L , respectivamente, y lo mismo para los bandedges digitales: ω U y ω L . sabemos que, en frecuencia de registro, la mitad del ancho de banda está por encima de Ω 0s=jΩz=ejωΩ0ω0ΩUΩLωUωLΩ0y la mitad está abajo. pero, debido a la deformación, eso no es exactamente cierto para el filtro digital BPF.
robert bristow-johnson

A medida que leo esto más, es importante para mí que la frecuencia de resonancia se mapee a través de la transformación bilineal exactamente. entiendo este enfoque, Matt, pero quiero seguir con el mapeo exacto de y luego ajustar el B W hasta que b w sea ​​lo que se especifica. ω0BWbw
robert bristow-johnson

@ robertbristow-johnson: OK, justo, quieres una especificación exacta de . Eso es posible si especifica Δ ω como una diferencia lineal (que no quiere, entiendo). No es posible una solución ordenada con ω 0 AND especificado y un ancho de banda en octavas. ω0Δωω0
Matt L.

1
@ robertbristow-johnson: agregué una solución numérica muy simple a mi respuesta (4 iteraciones de Newton).
Matt L.

3

Está bien, prometí hacer una recompensa y cumpliré mi promesa. pero tengo que confesar que podría renegar un poco en estar satisfecho con solo la tercera derivada de . lo que realmente quiero son los dos coeficientes para g ( y ) .f(x)g(y)

así que no me daba cuenta de que había este Wolfram lenguaje como una alternativa a Mathematica o Derivar y no me di cuenta que podría tan fácilmente calcular la derivada tercera y simplificar la expresión.

y este chico Markus en matemáticas SE publicó esta respuesta (que pensé que iba a tener que ser la cantidad de grunge que pensé que sería necesaria).

y=f(x)=ln(arctan(αex))ln(arctan(αex))a1x + a3x3=2α(1+α2)arctan(α)x+α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)x3

así que armé la aproximación de tercer orden al inverso:

x=g(y)b1y + b3y3=1a1y  a3a14y3=(1+α2)arctan(α)2αy(1+α2)(arctan(α))348α3(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)y3=(1+α2)arctan(α)2αy(1+α2)(arctan(α))348α(α26+α23(1α2)αarctan(α)+2(arctan(α))2)y3=y(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)y24)

i was kinda hoping someone else would do this. recall y=f(x)ln(2)bw, g(y)=xln(2)2BW and αtan(ω0/2)

x=g(y)y(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)y24)ln(2)2BW(ln(2)bw)(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)(ln(2)bw)24)

i have three convenient trig identities:

12(α+α1)=12(tan(ω0/2)+1tan(ω0/2))=1sin(ω0)

12(αα1)=12(tan(ω0/2)1tan(ω0/2))=1tan(ω0)

12(α2+α2)=12(tan2(ω0/2)+1tan2(ω0/2))=1sin2(ω0)+1tan2(ω0)=2sin2(ω0)1

"finally" we got:

BWbwω0sin(ω0)(1 + (ln(2))224(2(ω021)(ω0sin(ω0))2+3ω0tan(ω0))(bw)2)

this ain't so bad. fits on a single line. if someone sees an error or a good way to simplify further, please lemme know.

with the power series approximation from the comment above,

BWbwω0sin(ω0)(1 + (ln(2))2(136ω021180ω0422835ω06)(bw)2)

also, i am not sure that Atul's answer for f(0) and Markus's answer for a3 are consistent. i wonder if someone might be able to straight that out in an answer that could get in on the bounty.
robert bristow-johnson

I also found out about Wolfram's cloud notebook which is like Mathematica in your webbrowser. Go to sandbox.open.wolframcloud.com/app and type in 6*SeriesCoefficient[ Series[Log[ArcTan[a E^x]] - Log[ArcTan[a/E^x]],{x,0,5}],3]
Atul Ingle

@AtulIngle, i incorporated the Markus's corrections into the inverse function. would you mind checking the result for g(y)?
robert bristow-johnson

i would appreciate it if someone would check my substitution back to g(y), particularly the factor that multiplies y2. very soon i will return α back to tan(ω0/2) which will cause a whole other simplification and form. but i will hold off a little in case someone tells me my simplifications above are wrong.
robert bristow-johnson

1
@ robert bistow-johnson I checked your final expression for g(y) using Mathematica, it looks right.
Atul Ingle

2

so here are some quantitative results. i plotted spec'd bandwidth bw for the digital filter on the x-axis and the resulting digital bandwidth on the y-axis. there are five plots from green to red representing the resonant frequency ω0 normalized by Nyquist:

ω0π= [0.0002 0.2441 0.4880 0.7320 0.9759]

so the resonant frequency goes from nearly DC to nearly Nyquist.

here is no compensation (or pre-warping) at all for bandwidth: enter image description here

here is the simple first-order compensation that the Cookbook has done all along: enter image description here

here is the third-order compensation that we just solved here: enter image description here

what we want is for all of the lines to lie directly on the main diagonal.

i had made a mistake in the third-order case and corrected it in this revision. it does look like the third-order approximation to g(y) is a bit better than the first-order approximation for small bw.

so i diddled with the coefficient of the 3rd-order term (i wanna leave the 1st-order term the same), lessening it's effect. this is from multiplying just the 3rd-order term by 50%:

enter image description here

this is reducing it to 33%:

enter image description here

and this is reducing the 3rd-order term to 25%:

enter image description here

since the object of an inverse function is to undo the specified function, the point of this whole thing is to get the curves of the composite function to lie as close to the main diagonal as possible. it's not too bad for up to 75% Nyquist for resonant frequency ω0 and 3 octaves bandwidth bw. but not so much better to really make it worth it in the "coefficient cooking" code that is executed whenever the user turns a knob or slides a slider.


How can the bandwidth become negative in the second and third plot??
Matt L.

it can't, which is why i am so far unimpressed with this third-order approximation to the real x=g(y) which is the inverse function of
f(x)=ln(arctan(αex)arctan(αex))
i don't think that third-order approximation is an improvement over the first-order approximation that has existed for a couple decades. so what is plotted is
f(g^(y))
where g^(y) is the approximation to the true inverse g(y) where
y=f(g(y))
because f(x) is bipolar (even though negative bandwidth is nonsensical) f(g^(y)) can go negative.
robert bristow-johnson

oh, @MattL. the fact that f(x) passes through the origin should not surprize you even if bandwidth is never really negative. that bandwidth mapping function is odd symmetry, so the first and second plot do not surprize me at all. but the third plot is disappointing.
robert bristow-johnson

I was just wondering why you plotted the curves for negative bandwidths. But anyway, if I'm not mistaken then the series you use is a kind of Taylor series expansion at bw=0, right? So why would you even expect it to approximate the real behavior well at larger bandwidths if you only use two terms?
Matt L.

i just wanted to make sure the functions are odd-symmetry and go through the origin real nicely. yes, this is all about Taylor (or more specificly, Maclaurin) series. you will notice, @MattL., that i think one term does rather nicely for all of the resonant frequencies that ain't terribly close to Nyquist. leaving the linear term unchanged, i diddled a little with the third-order term a little (stay tuned, i'll show the results) and it does pretty well. but not so much better than the first-order that i think i should bother changing it in the Cookbook.
robert bristow-johnson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.