Ich bin auf diese alte Frage gestoßen und möchte meine Lösung mitteilen. Wie in anderen Antworten erwähnt, gibt es keine analytische Lösung, aber die zu minimierende Funktion verhält sich gut und der optimale Wert von kann mit ein paar Newton-Iterationen leicht gefunden werden. Es gibt auch eine Formel, um die Optimalität des Ergebnisses zu überprüfen.α
Die Impulsantwort des Filters für den gleitenden Durchschnitt der Länge FIR ist gegeben durchN
hFichR[ n ] = 1N( u [ n ] - u [ n - N] )(1)
Dabei ist die Einheitsschrittfunktion. Der IIR-Filter erster Ordnungu [ n ]
y[ n ] = α x [ n ] + ( 1 - α ) y[ n - 1 ](2)
hat die Impulsantwort
hichichR[ n ] = α ( 1 - α )nu [ n ](3)
Ziel ist es nun, den Fehlerquadrat zu minimieren
ϵ = ∑n = 0∞( hFichR[ n ] - hichichR[ n ] )2(4)
Mit und kann der Fehler als geschrieben werden( 1 )( 3 )
ϵ ( α )= ∑n = 0N- 1( α ( 1 - α )n- 1N)2+ ∑n = N∞α2( 1 - α )2 n= α2∑n = 0∞( 1 - α )2 n- 2 αN∑n = 0N- 1( 1 - α )n+ ∑n = 0N- 11N2= α21 - ( 1 - α )2- 2 αN1 - ( 1 - α )N1 - ( 1 - α )+ 1N= α2 - α- 2N( 1 - ( 1 - α )N) + 1N,0 < α < 2(5)
Dieser Ausdruck ist dem in dieser Antwort angegebenen sehr ähnlich , ist jedoch nicht identisch. Die Einschränkung von in stellt sicher, dass die unendliche Summe konvergiert und mit der Stabilitätsbedingung für das IIR-Filter aus identisch ist .α( 5 )( 2 )
Das Setzen der Ableitung von auf Null ergibt( 5 )
( 1 - α )N- 1( 2 - α )2= 1(6)
Es ist zu beachten, dass das optimale im Intervall da größere Werte von zu einer alternierenden Impulsantwort , die die konstante Impulsantwort des FIR-Filters für den gleitenden Durchschnitt nicht approximieren kann.α( 0 , 1 ]α( 3 )
Aus der Quadratwurzel von und der Einführung von erhalten wir( 6 )β= 1 - α
β( N+ 1 ) / 2+ β(N- 1 ) / 2- 1 = 0(7)
Diese Gleichung kann nicht analytisch nach gelöst werden , sondern nach :NβN
N= - 2 log( 1 + β)Log( β),β≠ 0(8)
Gleichung kann verwendet werden, um eine numerische Lösung von überprüfen ; es muss den angegebenen Wert von .( 7 ) N( 8 )( 7 )N
Gleichung kann mit ein paar Zeilen (Matlab / Octave) gelöst werden:( 7 )
N = 50; % gewünschte Filterlänge des FIR Moving Average Filters
if (N == 1)% keine Iteration für den Trivialfall
b = 0;
sonst
% Newton-Iteration
b = 1; % Startwert
Nit = 7;
n = (N + 1) / 2;
für k = 1: Nit,
f = b ^ n + b ^ (n-1) -1;
fp = n · b (n-1) + (n-1) · b (n-2);
b = b - f / fp;
Ende
% Überprüfe das Ergebnis
N0 = -2 * log (1 + b) / log (b) + 1% muss gleich N sein
Ende
a = 1 - b;
Unten finden Sie eine Tabelle mit den optimalen Werten von für einen Bereich von Filterlängen :NαN
N alpha
1 1.0000e + 00
2 5.3443e-01
3 3.8197e-01
4 2.9839e-01
5 2.4512e-01
6 2.0809e-01
7 1.8083e-01
8 1.5990e-01
9 1.4333e-01
10 1.2987e-01
20 6.7023e-02
30 4.5175e-02
40 3.4071e-02
50 2.7349e-02
60 2.2842e-02
70 1.9611e-02
80 1.7180e-02
90 1,5286e-02
100 1,3768e-02
200 6.9076d-03
300 4,6103e-03
400 3.4597e-03
500 2,7688e-03
600 2.3078e-03
700 1.9785e-03
800 1.7314e-03
900 1,5391e-03
1000 1,3853e-03