Mise en œuvre des filtres IIR et FIR
Mise en œuvre des filtres IIR et FIR
Dans les chapitres précédents, nous avons étudié la théorie des systèmes discrets dans
les domaines du temps et des fréquences. Nous allons maintenant utiliser cette théorie pour le
traitement des signaux numériques. Pour traiter les signaux, nous devons concevoir et mettre
en œuvre des systèmes appelés filtres (ou analyseurs de spectre dans certains contextes). La
question de la conception du filtre est influencée par des facteurs tels que le type de filtre (IIR
ou FIR) ou la forme de sa mise en œuvre (structures). C'est pourquoi, avant d'aborder la
question de la conception, nous nous intéressons d'abord à la manière dont elles peuvent être
mises en œuvre dans la pratique. Il s'agit là d'une préoccupation importante, car les
différentes structures de filtre dictent des stratégies de conception différentes.
Les filtres IIR, tels qu'ils sont conçus et utilisés dans le DSP, peuvent être modélisés
par des fonctions système rationnelles ou, de façon équivalente, par des équations de
différence. Ces filtres sont appelés moyenne mobile autorégressive (ARMA) ou, plus
généralement, filtres récursives. Bien que les filtres ARMA incluent des filtres à moyenne
mobile qui sont des filtres FIR, nous traiterons les filtres FIR séparément des filtres IIR pour
la conception et la mise en œuvre.
Nous commençons par une description des éléments de base qui sont utilisés pour
décrire les structures de filtre. Dans les sections suivantes, nous décrivons les structures des
filtres IIR et FIR, respectivement, et fournissons des fonctions MATLAB pour implémenter
ces structures. Ensuite, on traite brièvement de la représentation des nombres et des
caractéristiques d'erreur qui en résultent.
Comme nos filtres sont des systèmes LTI, nous avons besoin des trois éléments
suivants pour décrire les structures de filtres numériques. Ces éléments sont illustrés à la
figure 6.1.
En utilisant ces éléments de base, nous pouvons maintenant décrire les différentes
structures des filtres IIR et FIR. MATLAB est un outil pratique pour le développement de ces
structures qui nécessitent des opérations sur les polynômes.
B z b z n
n
b0 b1 z 1 ... bM z M
H z n 0
; a0 1 (6.1)
A z N
1 a1 z 1 ... aN z N
a z
n 0
n
n
Trois structures différentes peuvent être utilisées pour implémenter un filtre IIR:
1. Forme directe: Sous cette forme, l'équation de différence (6.2) est appliquée
directement telle quelle. Il y a deux parties à ce filtre, à savoir la partie moyenne
mobile et la partie récursive (ou de façon équivalente, les parties numérateur et
dénominateur). Cette mise en œuvre conduit donc à deux versions : les structures de
forme directe I et les structures de forme directe II.
2. Forme en cascade : Sous cette forme, la fonction système H z de l'équation (6.1)
est prise en compte dans des sections plus petites du deuxième ordre, appelées
biquads. La fonction du système est alors représentée comme un produit de ces
biquads. Chaque biquad est implémenté sous une forme directe, et l'ensemble de la
fonction système est implémenté en cascade de sections de biquad.
Nous discuterons brièvement de ces formulaires dans cette section. Les filtres IIR sont
généralement décrits en utilisant la version de forme rationnelle (ou la structure de forme
directe) de la fonction système. C'est pourquoi nous fournirons des fonctions MATLAB pour
convertir des structures de formulaires directes en structures de formulaires en cascade et
parallèles.
Comme son nom l'indique, l'équation de différence (6.2) est mise en œuvre telle
quelle en utilisant des retards, des multiplicateurs et des additionneurs. Aux fins de
l'illustration, Soit M N 4 . L'équation de différence est la suivante
y n b0 x n b1 x n 1 b2 x n 2 b3 x n 3 b4 x n 4
a1 y n 1 a2 y n 2 a3 y n 3 a4 y n 4
Qui peut être mis en œuvre comme le montre la figure 6.2. Ce schéma fonctionnel est
appelé structure en forme I directe.
Une structure équivalente à la forme directe peut être obtenue par une procédure
appelée transposition. Dans cette opération, trois étapes sont exécutées :
2. Tous les nœuds de branche sont remplacés par des nœuds additionneurs et tous les
nœuds additionneurs sont remplacés par des nœuds de branche.
In MATLAB the direct form structure is described by two row vectors; b containing
the bn coefficients and a containing the an coefficients. The filter function, which is
discussed in Chapter 2, implements the transposed direct form II structure.
Dans MATLAB, la structure de forme directe est décrite par deux vecteurs de ligne, b
contenant les coefficients bn et a contenant les coefficients an . La fonction de filtre,
dont il est question au chapitre 2, met en œuvre la structure transposée de la forme directe II.
6.2.4FORME CASCADE
Sous cette forme, la fonction système H z est écrite comme un produit de sections
de second ordre avec des coefficients réels. Pour ce faire, on factorise les polynômes
numérateur et dénominateur dans leurs racines respectives, puis on combine soit une paire de
racines conjuguées complexes, soit deux racines réelles quelconques en polynômes de
deuxième ordre. Dans la suite de ce chapitre, nous supposons que N est un nombre entier
pair. Alors
b0 b1 z 1 ... bN z N
H z
1 a1 z 1 ... aN z N
b1 1 b
1 z ... N z N
b0 b0
b0 (6.3)
1 a1 z ... aN z N
1
K
1 Bk ,1 z 1 Bk ,2 z 2
b0
k 1 1 Ak ,1 z 1 Ak ,2 z 2
N
Où K est égal à , et Bk ,1 , Ak ,1 et Ak ,2 sont des nombres réels représentant les
2
coefficients des sections du second ordre. La section du 2e ordre
Yk 1 z 1 Bk ,1 z 1 Bk ,2 z 2
Hk z ; k 1,..., K
Yk z 1 Ak ,1 z 1 Ak ,2 z 2
Avec
Y1 z b0 X z ; YK 1 z Y z
s'appelle la section kth biquad. L'entrée de la section kth biquad est la sortie de la
section (k - 1)th biquad, et la sortie de la kth biquad est l'entrée de la (k + 1)th biquad.
Maintenant, chaque section de biquad H k z peut être mise en œuvre sous la forme directe
II, comme le montre la figure 6.4. L'ensemble du filtre est ensuite implémenté en cascade de
biquads.
Étant donné les coefficients bn et an du filtre de forme directe, nous devons obtenir les
coefficients b 0 , Bk ,i , et Ak ,i . Ceci est fait par la fonction suivante dir2cas.
This function converts the b and vectors into K × 3 B and A matrices. It begins by
computing b0, which is equal to b 0 /a 0 (assuming a 0 = 1). It then makes the vectors b and
a of equal length by zero-padding the shorter vector. This ensures that each biquad has a
nonzero numerator and denominator. Next it computes the roots of the B(z) and A(z)
polynomials. Using the cplxpair function, these roots are ordered in complex conjugate pairs.
Now every pair is converted back into a 2nd-order numerator or denominator polynomial
using the poly function. The SP toolbox function, tf2sos (transfer function to 2nd-order
section), also performs a similar operation.
La fonction MATLAB suivante, cas2dir, convertit une forme en cascade en une forme
directe. Il s'agit d'une opération simple qui implique la multiplication de plusieurs polynômes
de second ordre. Pour ce faire, la fonction MATLAB conv est utilisée dans une boucle sur les
facteurs K. La fonction boîte à outils SP, sos2tf effectue également une opération similaire.
16 y n 12 y n 1 2 y (n 2) 4 y (n 3) y (n 4)
x n 3x n 1 11x(n 2) 27 x(n 3) 18x(n 4)
Solution
Script MATLAB:
>> b=[1 -3 11 -27 18]; a=[16 12 2 -4 -1];
>> [b0,B,A]=dir2cas(b,a)
b0 = 0.0625
B=
1.0000 -0.0000 9.0000
1.0000 -3.0000 2.0000
A=
1.0000 1.0000 0.5000
1.0000 -0.2500 -0.1250
La structure qui en résulte est illustrée à la figure 6.6. Pour vérifier que notre structure en
cascade est correcte, calculons les 8 premiers échantillons de la réponse impulsionnelle en
utilisant les deux formes.
Sous cette forme, la fonction système H z est écrite sous la forme d'une somme de
sections du deuxième ordre utilisant l'expansion partielle de fraction.
B z b0 b1 z 1 ... bM z M
H z
A z 1 a1 z 1 ... aN z N
bˆ0 bˆ1 z 1 ... bˆN 1 z1 N M N
1 N
Ck z k (6.4)
1 a1 z ... aN z 0
only _ if _ M N
1
K Bk ,0 Bk ,1 z M N
1
C z k
k 1 1 Ak ,1 z Ak ,2 z 2
k
0
only _ if _ M N
N
Où K est égal à , et Bk ,1 , Bk ,2 et Ak ,2 sont des nombres réels représentant les
2
coefficients des sections du second ordre. La section du 2e ordre
Yk 1 z Bk ,0 Bk ,1 z 1
Hk z ; k 1,..., K
Yk z 1 Ak ,1 z 1 Ak ,2 z 2
Avec
Yk z H k z X z , Y z Yk z , M < N
est la kième section biquad rationnelle. L'entrée filtre est disponible pour toutes les
sections biquad ainsi que pour la section polynomiale si M N (qui est une partie FIR). La
sortie de ces sections est additionnée pour former la sortie du filtre. Maintenant, chaque
section de biquad H k z peut être implémentée sous la forme directe II. En raison de la
somme des sous-sections, une structure parallèle peut être construite pour réaliser H(z). A
titre d'exemple, considérons M N 4 . La figure 6.7 montre une structure de forme
parallèle pour ce filtre IIR d'ordre 4.
La fonction suivante dir2par convertit les coefficients de forme directe bn et an
en coefficients de forme parallèle Bk ,i et Ak ,i .
function I = cplxcomp(p1,p2)
% I = cplxcomp(p1,p2)
% Compares two complex pairs which contain the same scalar elements
% but (possibly) at differrent indices. This routine should be
% used after CPLXPAIR routine for rearranging pole vector and its
% corresponding residue vector.
% p2 = cplxpair(p1)
%
I=[];
for j=[Link]length(p2)
for i=[Link]length(p1)
if (abs(p1(i)-p2(j)) < 0.0001)
I=[I,i];
end
end
end
I=I’;
Après avoir collecté ces paires de pôles et de résidus, la fonction dir2cas calcule le
numérateur et le dénominateur des biquads en utilisant la fonction residuez à l'envers.
Ces coefficients de forme parallèle sont ensuite utilisés dans la fonction parfiltr, qui
implémente la forme parallèle. La fonction parfiltr utilise la fonction filtre en boucle en
utilisant les coefficients de chaque biquad stockés dans les matrices B et A. L'entrée est
d'abord filtrée à travers la partie C du FIR et stockée dans la première rangée d'une matrice w.
Ensuite, les sorties de tous les filtres biquad sont calculées pour la même entrée et stockées
dans la matrice w en tant que lignes suivantes. Enfin, toutes les colonnes de la matrice w sont
additionnées pour obtenir la sortie.
function y = parfiltr(C,B,A,x);
% PARALLEL form realization of IIR filters
% ----------------------------------------
% [y] = parfiltr(C,B,A,x);
% y = output sequence
% C = polynomial (FIR) part when M >= N
% B = K by 2 matrix of real coefficients containing bk’s
% A = K by 3 matrix of real coefficients containing ak’s
% x = input sequence
%
[K,L] = size(B); N = length(x); w = zeros(K+1,N);
w(1,:) = filter(C,1,x);
for i = [Link]K
w(i+1,:) = filter(B(i,:),A(i,:),x);
end
y = sum(w);
Pour obtenir une forme directe à partir d'une forme parallèle, la fonction par2dir peut être
utilisée. Il calcule les pôles et les résidus de chaque biquad approprié et les combine en pôles
et résidus du système. Un autre appel de la fonction residuez en ordre inverse calcule les
polynômes numérateur et dénominateur.
16 y n 12 y n 1 2 y (n 2) 4 y (n 3) y (n 4)
x n 3x n 1 11x(n 2) 27 x(n 3) 18x(n 4)
Déterminez maintenant sa forme parallèle.
La structure qui en résulte est illustrée à la figure 6.8. Pour vérifier notre structure
parallèle, calculons les 8 premiers échantillons de la réponse impulsionnelle en utilisant les
deux formulaires
Quelle serait la forme globale directe, en cascade ou parallèle si une structure contient
une combinaison de ces formes ? Considérons le schéma fonctionnel illustré à la figure 6.9.
Solution
Cette structure contient une cascade de deux sections parallèles. La première section
parallèle contient 2 biquads, tandis que la seconde contient 3 biquads. Nous devrons convertir
chaque section parallèle en une forme directe à l'aide de la fonction par2dir, ce qui nous
donnera une cascade de 2 formes directes. La forme globale directe peut être calculée en
convolutionnant les polynômes numérateur et dénominateur correspondants. La cascade
globale et les formes parallèles peuvent maintenant être dérivées de la forme directe.
Script MATLAB:
>> C0=0; B1=[2 4;3 1]; A1=[1 1 0.9; 1 0.4 -0.4];
>> B2=[0.5 0.7;1.5 2.5;0.8 1]; A2=[1 -1 0.8;1 0.5 0.5;1 0 -0.5];
>> [b1,a1]=par2dir(C0,B1,A1)
b1 =
5.0000 8.8000 4.5000 -0.7000
a1 =
1.0000 1.4000 0.9000 -0.0400 -0.3600
>> [b2,a2]=par2dir(C0,B2,A2)
b2 =
2.8000 2.5500 -1.5600 2.0950 0.5700 -0.7750
a2 =
1.0000 -0.5000 0.3000 0.1500 0.0000 0.0500 -0.2000
>> b=conv(b1,b2) % Overall direct form numerator
b=
Columns 1 through 7
14.0000 37.3900 27.2400 6.2620 12.4810 11.6605 -5.7215
Columns 8 through 9
-3.8865 0.5425
>> a=conv(a1,a2) % Overall direct form denominator
a=
Columns 1 through 7
1.0000 0.9000 0.5000 0.0800 0.1400 0.3530 -0.2440
Columns 8 through 11
-0.2890 -0.1820 -0.0100 0.0720
>> [b0,Bc,Ac]=dir2cas(b,a) % Overall cascade form
b0 =
14.0000
Bc =
1.0000 1.8836 1.1328
1.0000 -0.6915 0.6719
1.0000 2.0776 0.8666
1.0000 0 0
1.0000 -0.5990 0.0588
Ac =
1.0000 1.0000 0.9000
1.0000 0.5000 0.5000
1.0000 -1.0000 0.8000
1.0000 1.5704 0.6105
1.0000 -1.1704 0.3276
>> [C0,Bp,Ap]=dir2par(b,a) % Overall parallel form
C0 = []
Bp =
-20.4201 -1.6000
24.1602 5.1448
2.4570 3.3774
-0.8101 -0.2382
8.6129 -4.0439
Ap =
1.0000 1.0000 0.9000
1.0000 0.5000 0.5000
1.0000 -1.0000 0.8000
1.0000 1.5704 0.6105
1.0000 -1.1704 0.3276
Cet exemple montre qu'en utilisant les fonctions MATLAB développées dans cette section,
nous pouvons sonder et construire une grande variété de structures.
M 1
H z b0 b1 z
1
bM 1 z 1 M
bn z n (6.5)
n 0
y n b0 x n b1 x n 1 bM 1x n M 1 (6.7)
L'ordre du filtre est M-1, et la longueur du filtre (qui est égale au nombre de
coefficients) est M. Les structures du filtre FIR sont toujours stables, et elles sont
relativement simples par rapport aux structures IIR. De plus, les filtres FIR peuvent être
conçus pour avoir une réponse en phase linéaire, ce qui est souhaitable dans certaines
applications.
1. Forme directe : Sous cette forme, l'équation de différence (6.7) est implémentée
directement telle quelle ;
2. Forme en cascade : Sous cette forme, la fonction système H(z) dans (6.5) est prise en
compte dans les facteurs de second ordre, qui sont ensuite implémentés dans une connexion
en cascade ;
3. Forme en phase linéaire : Lorsqu'un filtre FIR a une réponse en phase linéaire, sa
réponse impulsionnelle présente certaines conditions de symétrie. Sous cette forme, nous
exploitons ces relations de symétrie pour réduire de moitié environ les multiplications.
Nous décrirons brièvement ces quatre formulaires avec quelques exemples. La fonction
MATLAB dir2cas développée dans la section précédente est également applicable pour la
forme cascade.
L'équation de différence (6.7) est implémentée comme une ligne à retard taraudée
puisqu'il n'y a pas de chemin de retour. Soit M = 5 (c'est-à-dire un filtre FIR d'ordre 4) ; puis
y n b0 x n b1 x n 1 b2 x n 2 b3 x n 4 b4 x n 4
La structure de la forme directe est donnée à la figure 6.10. Notez que puisque le
dénominateur est égal à l'unité, il n'y a qu'une seule structure de forme directe.
Dans MATLAB, la structure FIR de forme directe est décrite par le vecteur de ligne b
contenant les coefficients bn . La structure est mise en œuvre par la fonction de filtrage,
dans laquelle le vecteur a est réglé sur la valeur scalaire 1, comme indiqué au chapitre 2.
Cette forme est similaire à celle de la forme de IIR. La fonction système H(z) est
convertie en produits de sections du deuxième ordre avec des coefficients réels. Ces sections
sont implémentées sous forme directe et l'ensemble du filtre sous forme de cascade de
sections du second ordre. De (6.5).
H z b0 b1 z 1 ... bM 1 z1 M
b b
b0 1 1 z 1 ... M 1 z1 M (6.8)
b0 b0
b0 1 Bk ,1 z 1 Bk ,2 z 2
K
k 1
Where K is equal to , and Bk,1 and Bk,2 are real numbers representing the
coefficients of 2nd-order sections. For M = 7 the cascade form is shown in Figure 6.11.
M
où K est égal à , et Bk ,1 et Bk ,2 sont des nombres réels représentant les
2
coefficients des sections du second ordre. Pour M=7, la forme en cascade est illustrée à la
figure 6.11.
FIGURE 6.11 Structure FIR en forme de cascade
Bien qu'il soit possible de développer une nouvelle fonction MATLAB pour la forme de
cascade FIR, nous utiliserons notre fonction dir2cas en réglant le vecteur dénominateur a
égal à 1. cas2dir peut également être utilisé pour obtenir la forme directe de la forme en
cascade.
Pour les filtres sélectifs en fréquence (par exemple, les filtres passe-bas), il est
généralement souhaitable d'avoir une réponse en phase qui est une fonction linéaire de la
fréquence ; c'est-à-dire, nous voulons
H e jw w, < w (6.9)
où 0 ou / 2 et est une constante. Dans le cas d'un filtre FIR causal avec la réponse
impulsionnelle dans l'intervalle 0, M 1 , la condition de phase linéaire (6.9) impose les
conditions de symétrie suivantes à la réponse impulsionnelle h n (voir problème P6.16) :
M 1
h n h M 1 n ; 0, , 0 n M 1 (6.10)
2
M 1
h n h M 1 n ; / 2, , 0 n M 1 (6.11)
2
Une réponse impulsionnelle qui satisfait (6.10) s'appelle une réponse impulsionnelle
symétrique, et qui dans (6.11) s'appelle une réponse impulsionnelle anti-symétrique. Ces conditions
de symétrie peuvent maintenant être exploitées dans une structure appelée forme de phase linéaire.
y n b0 x n b1 x n 1 ... b1 x n M 2 b0 x n M 1
b0 x n x n M 1 b1 x n 1 x n M 2 ...
L'implémentation de cette équation de différence sous forme de schéma fonctionnel est
illustrée à la figure 6.12 pour M pair et impair.
La structure en phases linéaires est essentiellement une forme directe dessinée différemment
pour éviter les multiplications. Par conséquent, dans un MATLAB, la représentation de la structure en
phase linéaire est équivalente à la forme directe.
1 4
H z 1 16 z z 8
16
y n x n 16.0625x n 4 x n 8
b. Forme à phase linéaire: L'équation de différence peut être écrite sous la forme
EXEMPLE 6.5 pour le filtre de l'exemple 6.4, quelle serait la structure si nous désirions une
forme en cascade contenant des composantes de phase linéaire à coefficients réels.
Solution
Nous nous intéressons aux sections en cascade qui ont une symétrie et des coefficients réels.
D'après les propriétés des filtres FIR à phase linéaire (voir chapitre 7), si un tel filtre a un zéro
arbitraire à z r , alors il doit y avoir 3 autres zéros à z 1/ r , z r et
z 1/ r pour avoir des coefficients de filtre réels. Nous pouvons maintenant utiliser cette
propriété. Tout d'abord, nous déterminerons les positions zéro du polynôme d'ordre 8 donné. Nous
regrouperons ensuite 4 zéros qui satisfont à cette propriété pour obtenir une section de phase linéaire
(de 4ème ordre). Il y a deux sections de ce type, que nous allons connecter en cascade.
Script MATLAB:
Dans cette forme, nous utilisons le fait que la fonction système H z d'un filtre FIR peut être
reconstruite à partir de ses échantillons sur le cercle unitaire. D'après nos discussions sur le DFT au
chapitre 5, nous rappelons que ces échantillons sont en fait les valeurs de la DFT M-point
H k , 0 k k M 1 de la réponse impulsionnelle du M-point h n . C'est pourquoi nous
avons
1 z M M 1 H k
H z k 1
(6.12)
M k 0 1 WM z
L'utilisation de cette procédure montre que c'est le DFT H(k), plutôt que la réponse impulsionnelle
h n (ou l'équation de différence), qui est utilisé dans cette structure. Notez également que le filtre
FIR décrit par (6.12) a une forme récursive similaire à un filtre IIR car (6.12) contient à la fois des
pôles et des zéros. Le filtre obtenu est un filtre FIR puisque les pôles à WM k sont annulés par les
racines de,
1 zM 0
La fonction du système dans (6.12) conduit à une structure parallèle, comme le montre la figure 6.15
pour M=4.
L'un des problèmes de la structure de la figure 6.15 est qu'elle nécessite une mise en œuvre
arithmétique complexe. Comme un filtre FIR est presque toujours un filtre à valeur réelle, il est
possible d'obtenir une réalisation alternative dans laquelle seule l'arithmétique réelle est utilisée. Cette
réalisation est obtenue en utilisant les propriétés de symétrie du DFT et du facteur WM k . Ensuite
(6.12) peut être exprimé de la manière suivante (voir Problème P6.19)
1 zM L H 0 H M / 2
H z 2 H k H k z (6.13)
M k 1 1 z 1 1 z 1
M 1
1 pour M pair, et H k z , k 1,, L sont des sections de
M
où L = pour M impair, L =
2 2
2e ordre données par
2 k
cos H k z 1 cos H k
M
Hk z (6.14)
2 k 2
1 2 z 1 cos z
M
Notez que les échantillons DFT H 0 et H M / 2 sont en valeur réelle et que le troisième terme à
droite de (6.13) est absent si M est impair. En utilisant (6.13) et (6.14), nous montrons une structure
d'échantillonnage de fréquence à la figure 6.16 pour M = 4 contenant des coefficients réels.
FIGURE 6.16 Structure d'échantillonnage en fréquence pour M = 4 avec coefficients réels
Dans cette fonction, les valeurs de réponse impulsionnelle sont fournies par le tableau h.
Après conversion, le tableau C contient les valeurs de gain pour chaque section parallèle. Les valeurs
de gain pour les sections parallèles d'ordre 2 sont données en premier, suivies de H(0) et H (M/2) (si
M est pair). La matrice B contient les coefficients du numérateur, qui sont disposés en vecteurs de
longueur 2 rangées pour chaque section du 2ème ordre. La matrice A contient les coefficients du
dénominateur, qui sont disposés en vecteurs de longueur à 3 rangées pour les sections du 2ème ordre
correspondant à celles de B, suivis des coefficients pour les sections du 1er ordre.
Un problème pratique avec la structure de la figure 6.16 est qu'elle a des pôles sur le cercle
unitaire, ce qui rend ce filtre très instable. Si le filtre n'est pas excité par l'une des fréquences polaires,
la sortie est limitée. On peut éviter ce problème en échantillonnant H(z) sur un cercle |z|=r, où le rayon
r est très proche de 1 mais inférieur à 1 (p. ex., r = 0.99), ce qui résulte en
1 r M zM M 1
H k
H z 1 rW k k
; H k H re j 2 k / M (6.15)
M k 0 M z
Maintenant en approximant H re j 2 k / M H re j 2 k / M pour r 1 . Nous pouvons obtenir une
structure stable similaire à celle de la figure 6.16 contenant des valeurs réelles. Le problème P6.20
traite de cette question.
1
EXEMPLE 6.6 Soit h n 1, 2,3, 2,1 . Déterminez et dessinez la forme d'échantillonnage de
9
fréquence.
Solution
Script MATLAB:
Puisque M=5 est impair, il n'y a qu'une seule section de 1er ordre. D'où
EXEMPLE 6.7 Les échantillons de fréquence d'un filtre FIR à 32 points en phase linéaire sont
donnés par
1 k 0,1, 2
H k 0.5 k 3
0 k 4,5,...,15
Solution
Dans cet exemple, puisque les échantillons du DFT H(k) sont donnés, nous pourrions utiliser (6.13) et
(6.14) directement pour déterminer la structure. Cependant, nous utiliserons la fonction dir2fs pour
laquelle nous devrons déterminer la réponse impulsionnelle h(n). En utilisant la propriété de symétrie
et la contrainte de phase linéaire, nous assemblons le DFT H(k) comme suit
H k H k e
jH k
, k 0,1,...,31
H k H 32 k , k 1, 2,...,31; H 0 1
31 2
H k k H 32 k , k 0,1,...,31
2 32
Script MATLAB:
Notez que seuls 4 coefficients de gain sont différents de zéro. Par conséquent, la forme
d'échantillonnage de fréquence est la suivante
Pour déterminer la complexité de calcul, notez que puisque H 0 1 , la section du 1er ordre ne
nécessite aucune multiplication, alors que les trois sections du 2ème ordre nécessitent 3
multiplications chacune pour un total de 9 multiplications par échantillon de sortie. Le nombre total
d'ajouts est de 13. Pour mettre en œuvre la structure de phase linéaire, il faudrait 16 multiplications et
31 ajouts par échantillon de sortie. Par conséquent, la structure d'échantillonnage en fréquence de ce
filtre FIR est plus efficace que la structure en phase linéaire.