Można również projektować filtry górnoprzepustowe czasu dyskretnego. Projektowanie filtrów czasu dyskretnego wykracza poza zakres tego artykułu, jednak prosty przykład pochodzi z konwersji powyższego filtru górnoprzepustowego czasu ciągłego do realizacji czasu dyskretnego. To znaczy, zachowanie w czasie ciągłym może być zdyskretyzowane.
Z obwodu na rysunku 1 powyżej, zgodnie z prawami Kirchhoffa i definicją pojemności:
{ V out ( t ) = I ( t ) R (V) Q c ( t ) = C ( V in ( t ) – V out ( t ) ) (Q) I ( t ) = d Q c d t (I) {{displaystyle {{begin{cases}}V_{text{out}}(t)=I(t)\, R& {{text{(V)}}Q_{c}(t)=C,\left(V_{\text{in}}(t)-V_{\text{out}}(t)\right)&{\text{(Q)}}\\I(t)={\frac {\operatorname {d} Q_{c}}}{}operatorname {d} t}}&{text{(I)}}.
gdzie Q c ( t ) {{displaystyle Q_{c}(t)}
to ładunek zgromadzony w kondensatorze w chwili t {{displaystyle t}
. Podstawiając równanie (Q) do równania (I), a następnie równanie (I) do równania (V) otrzymujemy: V out ( t ) = C ( d V in d t – d V out d t ) ⏞ I ( t ) R = R C ( d V in d t – d V out d t ) { {{text{out}}(t)=overbrace { {C:}left({{frac {{operatorname {d} V_{text{in}} {{operatorname {d} t}}-{frac {{operatorname {d}} V_{text{out}}}{{operatorname {d} t}}}) ^{I(t)}} ^{I(t)}}, R=RC}, ^left({frac {operatorname {d} V_{text{in}} {{operatorname {d} t}}-{frac {{operatorname {d}} V_{text{out}}}{}operatorname {d} t}}}right)}
Równanie to może być dyskretyzowane. Dla uproszczenia przyjmijmy, że próbki wejścia i wyjścia są pobierane w równomiernie oddalonych od siebie punktach w czasie, oddzielonych o Δ T {{displaystyle \Delta _{T}}
czasu. Niech próbki V w {{displaystyle V_{text{in}}}
niech będą reprezentowane przez sekwencję ( x 1 , x 2 , … , x n ) {displaystyle (x_{1},x_{2},ldots ,x_{n})}
, i niech V out {displaystyle V_{text{out}}}
być reprezentowane przez ciąg ( y 1 , y 2 , … , y n ) {displaystyle (y_{1},y_{2},ldots ,y_{n})}
które odpowiadają tym samym punktom w czasie. Dokonując tych podstawień: y i = R C ( x i – x i – 1 Δ T – y i – y i – 1 Δ T ) {przykład y_{i}=RC,\left({ \frac {x_{i}-x_{i-1}}{Delta _{T}}}-{ \frac {y_{i}-y_{i-1}}{Delta _{T}}}}right)}
Przestawienie pojęć daje zależność rekurencyjną
y i = R C R C + Δ T y i – 1 ⏞ rozkładający się wkład z wcześniejszych danych wejściowych + R C R C + Δ T ( x i – x i – 1 ) ⏞ Składka od zmiany danych wejściowych {{displaystyle y_{i}= {{overbrace {{frac {RC}{RC+Delta _{T}}}}y_{i-1}} ^{text{Decaying contribution from prior inputs}}+overbrace {{RC}{RC+Delta _{T}}}left(x_{i}-x_{i-1}}}right)} ^{text{Wkład od zmiany wkładu}}.
To znaczy, ta dyskretno-czasowa implementacja prostego, ciągłego filtru górnoprzepustowego RC ma postać
y i = α y i – 1 + α ( x i – x i – 1 ) gdzie α ≜ R C R C + Δ T {{displaystyle y_{i}= alpha y_{i-}1}+alpha (x_{i}-x_{i-1})\quad {{where} \quad \alpha \triangleq {\frac {RC}{RC+Delta _{T}}}}
Z definicji wynika, że 0 ≤ α ≤ 1 {{displaystyle 0 \alpha \alpha \leq 1}.
. Wyrażenie dla parametru α {{displaystyle \alpha }
daje równoważną stałą czasową R C {displaystyle RC}
w przeliczeniu na okres próbkowania Δ T {{displaystyle Delta _{T}}
i α {{displaystyle \a_pl}
: R C = Δ T ( α 1 – α ) {displaystyle RC= ΔDelta _{T}}left({frac {{1-alfa}}} right)}
.
Przypominając, że
f c = 1 2 π R C {{displaystyle f_{c}}={frac {1}{2}pi RC}}}.
więc R C = 1 2 π f c {{displaystyle RC={{frac {1}{2\pi f_{c}}}}
tak więc α {{displaystyle \alpha }
i f c {{displaystyle f_{c}}
są powiązane przez: α = 1 2 π Δ T f c + 1 {displaystyle alfa ={frac {1}{2}pi ΔDelta _{T}f_{c}+1}}}.
i
f c = 1 – α 2 π α Δ T {{displaystyle f_{c}={}rac {1}alpha }{2}pi \Delta _{T}}}}
.
Jeśli α = 0,5 {{displaystyle \alpha =0,5}
, to R C {displaystyle RC}
stała czasowa równa okresowi próbkowania. Jeżeli α ≪ 0,5 {displaystyle ≪ 0,5}
, to R C {displaystyle RC}
jest znacznie mniejsze od przedziału próbkowania, a R C ≈ α Δ T {displaystyle RC}
.
Implementacja algorytmuEdit
Zależność rekurencyjna filtra zapewnia sposób określania próbek wyjściowych w kategoriach próbek wejściowych i poprzedzającego wyjścia. Poniższy algorytm pseudokodu będzie symulował wpływ filtra górnoprzepustowego na serię próbek cyfrowych, zakładając równe odstępy między próbkami:
// Return RC high-pass filter output samples, given input samples,// time interval dt, and time constant RCfunction highpass(real x, real dt, real RC) var real y var real α := RC / (RC + dt) y := x for i from 2 to n y := α × y + α × (x − x) return y
Pętla, która oblicza każdą z n {{displaystyle n}
wyjścia można refaktoryzować do odpowiednika:
for i from 2 to n y := α × (y + x − x)
Wcześniejsza postać pokazuje jednak, jak parametr α zmienia wpływ wcześniejszego wyjścia y i bieżącej zmiany wejścia (x – x). W szczególności,
- Duży α implikuje, że produkcja będzie się rozkładać bardzo powoli, ale będzie też silnie oddziaływać na nią nawet niewielka zmiana wejścia. Przez zależność między parametrem α a stałą czasową R C {{displaystyle RC}}
powyżej, duże α odpowiada dużemu R C {displaystyle RC}
i tym samym niskiej częstotliwości narożnej filtru. Stąd przypadek ten odpowiada filtrowi górnoprzepustowemu o bardzo wąskim paśmie zaporowym. Ponieważ jest on wzbudzany przez małe zmiany i ma tendencję do utrzymywania wcześniejszych wartości wyjściowych przez długi czas, może on przepuszczać stosunkowo niskie częstotliwości. Jednakże, wejście stałe (tzn. wejście z (x – x)=0) będzie zawsze zanikać do zera, jak można by się spodziewać w przypadku filtru górnoprzepustowego o dużym R C {displaystyle RC}.
.
- Małe α implikuje, że wyjście będzie szybko zanikać i będzie wymagało dużych zmian na wejściu (tj. (x – x) jest duże), aby spowodować dużą zmianę na wyjściu. Z zależności między parametrem α a stałą czasową R C {{displaystyle RC}}
powyżej, małemu α odpowiada małe R C {displaystyle RC}
a więc dużej częstotliwości narożnej filtru. Stąd ten przypadek odpowiada filtrowi górnoprzepustowemu o bardzo szerokim paśmie zaporowym. Ponieważ wymaga on dużych (tj. szybkich) zmian i ma tendencję do szybkiego zapominania wcześniejszych wartości wyjściowych, może przepuszczać tylko stosunkowo wysokie częstotliwości, jak można by się spodziewać w przypadku filtra górnoprzepustowego o małej wartości R C {\i0}.
.
.