Je suis tombé sur cette vieille question et je voudrais partager ma solution. Comme mentionné dans d'autres réponses, il n'y a pas de solution analytique, mais la fonction à minimiser se comporte bien et la valeur optimale de peut être trouvée facilement avec quelques itérations de Newton. Il existe également une formule pour vérifier l'optimalité du résultat.α
La réponse impulsionnelle du filtre à moyenne mobile de longueur FIR est donnée parN
hFIR[n]=1N(u[n]−u[n−N])(1)
où est la fonction de pas d'unité. Le filtre IIR de premier ordreu[n]
y[n]=αx[n]+(1−α)y[n−1](2)
a la réponse impulsionnelle
hIIR[n]=α(1−α)nu[n](3)
Le but est maintenant de minimiser l'erreur quadratique
ϵ=∑n=0∞(hFIR[n]−hIIR[n])2(4)
En utilisant et , l'erreur peut être écrite comme(1)(3)
ϵ(α)=∑n=0N−1(α(1−α)n−1N)2+∑n=N∞α2(1−α)2n=α2∑n=0∞(1−α)2n−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)
Cette expression est très similaire à celle donnée dans cette réponse , mais elle n'est pas identique. La restriction sur dans s'assure que la somme infinie converge, et elle est identique à la condition de stabilité pour le filtre IIR donnée par .α(5)(2)
La mise à zéro de la dérivée de entraîne(5)
(1−α)N−1(2−α)2=1(6)
Notez que le optimal doit être dans l'intervalle car des valeurs plus élevées de entraînent une réponse impulsionnelle alternée , qui ne peut pas approximer la répétition impulsionnelle constante du filtre à moyenne mobile FIR.α(0,1]α(3)
En prenant la racine carrée de et en introduisant , on obtient(6)β=1−α
β(N+1)/2+β(N−1)/2−1=0(7)
Cette équation ne peut pas être résolue analytiquement pour , mais elle peut être résolue pour :NβN
N=−2log(1+β)log(β),β≠0(8)
L'équation peut être utilisée pour revérifier une solution numérique de ; il doit retourner à la valeur spécifiée de .( 7 ) N(8)(7)N
L'équation peut être résolue avec quelques lignes de code (Matlab / Octave):(7)
N = 50; % longueur de filtre souhaitée du filtre à moyenne mobile FIR
if (N == 1)% aucune itération pour le cas trivial
b = 0;
autre
% Itération de Newton
b = 1; % valeur de départ
Nit = 7;
n = (N + 1) / 2;
pour k = 1: Nit,
f = b ^ n + b ^ (n-1) -1;
fp = n * b ^ (n-1) + (n-1) * b ^ (n-2);
b = b - f / fp;
fin
% résultat du contrôle
N0 = -2 * log (1 + b) / log (b) + 1% doit être égal à N
fin
a = 1 - b;
Voici un tableau avec les valeurs optimales de pour une plage de longueurs de filtre :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.9076e-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