Cours:Elen4 TNS TP Implementations : Différence entre versions
(→Implémentation en ligne) |
(→Implémentation en ligne) |
||
Ligne 83 : | Ligne 83 : | ||
c) Dans GnuRadio, produire un schéma qui implémente ce filtre. | c) Dans GnuRadio, produire un schéma qui implémente ce filtre. | ||
− | * La source sera un bloc <code>Signal Source</code> sinus. La fréquence du sinus sera obtenue à partir de la fréquence d'échantillonnage <code>samp_rate</code> et de la définition ''x(n)=sin(n/10''. | + | * La source sera un bloc <code>Signal Source</code> sinus. La fréquence du sinus sera obtenue à partir de la fréquence d'échantillonnage <code>samp_rate</code> et de la définition ''x(n)=sin(n/10)''. |
* Le bruit sera obtenu par un bloc <code>Noise Source</code> | * Le bruit sera obtenu par un bloc <code>Noise Source</code> | ||
* Vous implémenterez le système à l'aide de <code>Add</code> pour les additionneurs, de <code>Delay</code> pour les retards et de <code>Multiply Const</code> pour les gains | * Vous implémenterez le système à l'aide de <code>Add</code> pour les additionneurs, de <code>Delay</code> pour les retards et de <code>Multiply Const</code> pour les gains |
Version du 27 février 2023 à 16:40
TP3 : Implémentation des filtres numériques
Le travail de ce TP va consister à filtrer des signaux numériques avec divers filtres (RIF puis RII), en exploitant trois implémentations différentes à partir du produit de convolution, de la réponse fréquentielle et de l'équation aux différences.
Implémentation d'un filtre RII
L'objectif est de filtrer le signal
x1(n) = sin(n/10) + b(n)
b(t) étant du bruit gaussien.
Le filtre sera défini par sa fonction de transfert
H(z) = |
1 + 2z-1 + z-2 |
| |
4 |
Implémentation hors-ligne
Il s'agit de traiter le signal après son acquisition.
Dans Matlab, Vous travaillerez avec le signal x1 créé par le code suivant :
N = 1:200;
X1 = sin(N/10) + randn(size(N))/3;
Avec le produit de convolution
Avec le produit de convolution, Il s'agit d'une implémentation hors-ligne dans le domaine temporel. On nommera yc le signal de sortie obtenue avec cette implémentation.
a) Appliquez à x1 le filtre RIF dont la fonction de transfert est H(z)
par un produit de convolution (fonction conv()
) avec la réponse impusionnelle h du filtre :
yc = x1 ∗ h.
b) Tracer le graphe de l'entrée x1 et de la sortie obtenue :
figure(1)
subplot(211); plot(X1); xlabel(’n’); ylabel(’x1[n]’);
subplot(212); plot(Yc); xlabel(’n’); ylabel(’yc[n] avec conv’);
Avec la réponse fréquentielle
Avec la réponse fréquentielle, il s'agit d'une implémentation hors-ligne dans le domaine fréquentiel. On nommera yf le signal de sortie obtenue avec cette implémentation.
a) En exploitant le théorème de la convolution (le produit de convolution se transforme en produit simple fréquences à fréquences), filtrer le signal x1.
Fig : principe du filtrage dans le domaine fréquentiel.
b) Tracer le spectre d’amplitude de x1, la réponse fréquentielle de H et le spectre d’amplitude de la sortie yc.
Comparaison des implémentations
Vérifier que le filtrage dans le domaine fréquentiel fourni une sortie identique à celle obtenue avec le produit de convolution. Vous pourrez faire
a) une vérification graphique en affichant les signaux yc et yf
b) ainsi qu'une vérification quantifiée en calculant une norme entre les deux signaux y. (todo : faire le lien avec le snr ici ?)
Implémentation en ligne
Une implémentation en ligne permet de traiter le signal pendant ou au cours de son acquisition. Il s'agit de calculer à la volée les valeurs du signal de sortie. Il faut pour cela s'appuyer sur l'équation au différence, qui permet d'exprimer y(n).
À partir du schéma-bloc
a) Établir l'équation aux différence du filtre H
b) Donner le schéma-bloc équivalent à cette équation aux différences.
c) Dans GnuRadio, produire un schéma qui implémente ce filtre.
- La source sera un bloc
Signal Source
sinus. La fréquence du sinus sera obtenue à partir de la fréquence d'échantillonnagesamp_rate
et de la définition x(n)=sin(n/10). - Le bruit sera obtenu par un bloc
Noise Source
- Vous implémenterez le système à l'aide de
Add
pour les additionneurs, deDelay
pour les retards et deMultiply Const
pour les gains - Vous afficherez les graphes de x1 et de la sortie y avec 200 points (comme pour les implémentations dans Matlab)
En écrivant du code
Dans ce cas, le travail consiste à calculer y(n) à partir de la valeur x(n) et de ses versions précédentes x(n-1) et x(n-2) qu'il est nécessaire de stocker.
Ceci sera mis en place dans un TP ultérieur (Implémentations temps-réel)
Comparaison
Discuter de l’intérêt de chacune des implémentations (convolution, en fréquence, et avec l’équation aux différences).