Il problema posto nella domanda sembra non avere una soluzione a forma chiusa. Come menzionato nella domanda e mostrato in altre risposte, il risultato può essere sviluppato in una serie, che può essere realizzata da qualsiasi strumento matematico simbolico come Mathematica. Tuttavia, i termini diventano piuttosto complicati e brutti, e non è chiaro quanto sia buona l'approssimazione quando includiamo termini fino al terzo ordine. Poiché non è possibile ottenere una formula esatta, potrebbe essere meglio calcolare la soluzione numericamente, il che, diversamente dall'approssimazione, darà un risultato (quasi) esatto.
Tuttavia, non è questa la risposta. Suggerisco un percorso diverso che dia una soluzione esatta cambiando la formulazione del problema. Dopo averci pensato per un po 'si scopre che è la specifica della frequenza centrale e la specifica della larghezza di banda come rapporto (o, equivalentemente, in ottave) che causa l'intrattabilità matematica. Esistono due modi per uscire dal dilemma:ω0
- specifica la larghezza di banda del filtro a tempo discreto come una differenza di frequenze , dove e sono rispettivamente i bordi inferiore e superiore del filtro a tempo discreto.ω 1 ω 2Δω=ω2−ω1ω1ω2
- prescrivere il rapporto e invece di prescrivere una delle due frequenze di bordo o .ω 0 ω 1 ω 2ω2/ω1ω0ω1ω2
In entrambi i casi è possibile una semplice soluzione analitica. Poiché è desiderabile prescrivere la larghezza di banda del filtro a tempo discreto come un rapporto (o, equivalentemente, in ottave), descriverò il secondo approccio.
Definiamo le frequenze limite e del filtro a tempo continuo perΩ 2Ω1Ω2
|H(jΩ1)|2=|H(jΩ2)|2=12(1)
con , dove è la funzione di trasferimento di un filtro passa banda di secondo ordine: H ( s )Ω2>Ω1H(s)
H(s)=ΔΩss2+ΔΩs+Ω20(2)
con e . Nota che e per .Ω 2 0ΔΩ=Ω2−Ω1 H ( j Ω 0 ) = 1 | H ( j Ω ) | < 1Ω20=Ω1Ω2H(jΩ0)=1|H(jΩ)|<1Ω≠Ω0
Usiamo la trasformazione bilineare per mappare le frequenze di bordo e del filtro a tempo discreto sulle frequenze di bordo e del filtro a tempo continuo. Senza perdita di generalità possiamo scegliere . Ai nostri scopi la trasformazione bilineare assume quindi la formaω 2 Ω 1 Ω 2ω1ω2Ω1Ω2Ω1=1
s=1tan(ω12)z−1z+1(3)
corrispondente alla seguente relazione tra frequenze a tempo continuo e frequenze a tempo discreto:
Ω=tan(ω2)tan(ω12)(4)
Da otteniamo impostando . Con e calcolati da , otteniamo la funzione di trasferimento del filtro prototipo analogico da . Applicando la trasformata bilineare , otteniamo la funzione di trasferimento del filtro passa banda a tempo discreto:Ω 2 ω =(4)Ω2Ω 1 = 1 Ω 2 ( 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)
Sommario:
La larghezza di banda del filtro a tempo discreto può essere specificata in ottave (o, generalmente, come un rapporto), e i parametri del filtro prototipo analogico possono essere calcolati esattamente, in modo tale da ottenere la larghezza di banda specificata. Invece della frequenza centrale , specifichiamo i bordi della banda e . La frequenza centrale definita da è un risultato del progetto.ω 1ω0ω1| H d ( e j ω 0 ) | = 1ω2|Hd(ejω0)|=1
I passaggi necessari sono i seguenti:
- Specifica il rapporto desiderato tra i bordi di banda e uno dei bordi di banda (che ovviamente equivale a specificare semplicemente e ).ω 1 ω 2ω2/ω1ω1ω2
- Scegli e determina da . Calcola e del filtro prototipo analogico .Ω 2 ( 4 ) Δ Ω = Ω 2 - Ω 1 Ω 2 0 = Ω 1 Ω 2Ω1=1Ω2(4)ΔΩ=Ω2−Ω1Ω20=Ω1Ω2(2)
- Valutare le costanti per ottenere la funzione di trasferimento a tempo discreto .(6)(5)
Si noti che con l'approccio più comune dove e sono specificati, la banda effettiva bordi e sono il risultato del processo di progettazione. Nella soluzione proposta, è possibile specificare i bordi della banda e è il risultato del processo di progettazione. Il vantaggio di quest'ultimo approccio è che la larghezza di banda può essere specificata in ottave e la soluzione è esatta, ovvero il filtro risultante ha esattamente la larghezza di banda specificata in ottave. Δ ω = ω 2 - ω 1 ω 1 ω 2 ωω0Δω=ω2−ω1ω1ω2ω0
Esempio:
Specifichiamo una larghezza di banda di un'ottava e scegliamo il bordo inferiore come . Questo dà un bordo superiore . I bordi della banda del filtro prototipo analogico sono e da (con ) . Questo dà e . Con otteniamo la funzione di trasferimento a tempo discretoω 2 = 2ω1=0.2πΩ 1 = 1 ( 4 ) ω = ω 2 Ω 2 = 2.2361 Δ Ω = Ω 2 - Ω 1 = 1.2361 Ω 2ω2=2ω1=0.4πΩ1=1(4)ω=ω2Ω2=2.2361ΔΩ=Ω2−Ω1=1.2361(6)(5)Ω20=Ω1Ω2=2.2361(6)(5)
Hd(z)=0.24524⋅z2−1z2−0.93294z+0.50953
che raggiunge esattamente una larghezza di banda di 1 ottava e i bordi della banda specificati, come mostrato nella figura seguente:
Soluzione numerica del problema originale:
Dai commenti capisco che è importante essere in grado di specificare esattamente la frequenza centrale per la quale è soddisfatto. Come accennato in precedenza, non è possibile ottenere una soluzione a forma chiusa esatta e uno sviluppo in serie produce espressioni piuttosto ingombranti.ω0|Hd(ejω0)|=1
Per motivi di chiarezza, vorrei riassumere le possibili opzioni con i loro vantaggi e svantaggi:
- specificare la larghezza di banda desiderata come differenza di frequenza e specificare ; in questo caso è possibile una semplice soluzione a forma chiusa.ω 0Δω=ω2−ω1ω0
- specifica i bordi di banda e (o, equivalentemente, la larghezza di banda in ottave e uno dei bordi di banda); questo porta anche a una semplice soluzione a forma chiusa, come spiegato sopra, ma la frequenza centrale è un risultato del progetto e non può essere specificata.ω 2 ω 0ω1ω2ω0
- specifica la larghezza di banda desiderata in ottave e la frequenza centrale (come richiesto nella domanda); nessuna soluzione in forma chiusa è possibile, né esiste (per il momento) alcuna semplice approssimazione. Per questo motivo ritengo sia auspicabile disporre di un metodo semplice ed efficace per ottenere una soluzione numerica. Questo è ciò che è spiegato di seguito.ω0
Quando viene specificato usiamo una forma della trasformata bilineare con una costante di normalizzazione diversa da quella usata in e : ( 3 ) ( 4 )ω0(3)(4)
Ω=tan(ω2)tan(ω02)(7)
Definiamo . Indicare il rapporto specificato dei bordi della banda del filtro a tempo discreto comeΩ0=1
r=ω2ω1(8)
Con otteniamo da e( 7 ) (c=tan(ω0/2)(7)(8)
r=arctan(cΩ2)arctan(cΩ1)(9)
Con , può essere riscritto nel seguente formato:Ω1Ω2=Ω20=1(9)
f(Ω1)=rarctan(cΩ1)−arctan(cΩ1)=0(10)
Per un dato valore di questa equazione può essere risolta per con alcune iterazioni di Newton. Per questo abbiamo bisogno della derivata di :rΩ1f(Ω1)
f′(Ω1)=c(r1+c2Ω21+1c2+Ω21)(11)
Con , sappiamo che deve trovarsi nell'intervallo . Anche se è possibile trovare soluzioni iniziali più intelligenti, si scopre che la supposizione iniziale funziona bene per la maggior parte delle specifiche e si tradurrà in soluzioni molto accurate dopo solo iterazioni del metodo di Newton:Ω0=1Ω1(0,1)Ω(0)1=0.14
Ω(n+1)1=Ω(n)1−f(Ω(n)1)f′(Ω(n)1)(12)
Con ottenuto con alcune iterazioni di possiamo determinare e e e usiamo e per calcolare i coefficienti di il filtro a tempo discreto. Notare che la costante è ora data da . ( 12Ω1(12)Ω2=1/Ω1ΔΩ=Ω2−Ω1(5)(6)cc=tan(ω0/2)
Esempio 1:
Specifichiamo e una larghezza di banda di ottave. Ciò corrisponde a un rapporto . Con un'ipotesi iniziale di , iterazioni del metodo di Newton hanno portato a una soluzione , da cui è possibile calcolare i coefficienti del tempo discreto come spiegato sopra. La figura seguente mostra il risultato:ω0=0.6π0.5r=ω2/ω1=20.5=2–√=1.4142Ω1=0.14Ω1=0.71
Il filtro è stato calcolato con questo script Matlab / Octave:
% specifiche
bw = 0,5; % larghezza di banda desiderata in ottave
w0 = .6 * pi; % frequenza di risonanza
r = 2 ^ (bw); Rapporto% dei bordi della fascia
W1 = .1; % ipotesi iniziale (funziona per la maggior parte delle specifiche)
Nit = 4; % # Iterazioni di Newton
c = abbronzatura (w0 / 2);
% Newton
per 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
fine
W1 = abs (W1);
if (W1> = 1), errore ("Impossibile convergere. Riduci il valore dell'ipotesi iniziale."); fine
W2 = 1 / W1;
dW = W2 - W1;
% filtro a tempo discreto
scala = 1 + dW * c + W1 * W2 * c ^ 2;
b = (dW * c / scale) * [1,0, -1];
a = [1, 2 * (W1 * W2 * c ^ 2-1) / scala, (1-dW * c + W1 * W2 * c ^ 2) / scala];
Esempio 2:
Aggiungo un altro esempio per mostrare che questo metodo può anche gestire specifiche per le quali la maggior parte delle approssimazioni darà risultati non sensati. Questo è spesso il caso in cui la larghezza di banda desiderata e la frequenza di risonanza sono entrambe elevate. Progettiamo un filtro con e ottave. Quattro iterazioni del metodo di Newton con un'ipotesi iniziale danno come risultato un valore finale di , cioè in una larghezza di banda del prototipo analogico di ottave. Il filtro a tempo discreto corrispondente ha i seguenti coefficienti e la sua risposta in frequenza è mostrata nel diagramma seguente:b p = 4 Ω ( 0 )ω0=0.95πbw=4Ω(0)1=0.1Ω1=0.00775log2(Ω2/Ω1)=log2(1/Ω21)≈14
b = 0.90986 * [1,0, -1];
a = [1.00000 0.17806 -0.81972];
I bordi della banda di metà potenza risultanti sono e , che sono effettivamente esattamente a ottave (cioè un fattore ).ω 2 = 0,999612 π 4 16ω1=0.062476πω2=0.999612π416