Vous êtes sur la page 1sur 18

Université de Nice Sophia-Antipolis Année 2006-2007

LMD–5ième semestre
UEF 5: Techniques Expérimentales (Resp. G-L Lippi) Resp. de ce TP: J-A Sepulchre

Echantillonnage et filtrage de signaux complexes

1 Interface Instrumentation/PC

Lorsqu’on s’intéresse à l’étude d’un phénomène physique qui évolue rapidemment au cours du temps,
un problème général est celui de l’acquisition temporelle des mesures expérimentales. Souvent une me-
sure physique se fait au moyen d’une instrumentation électronique. Dans ce cas, même si le phénomène
étudié n’a rien à voir avec la physique de l’électromagnétisme, on mesure en définitive des différences
de potentiel électrique au cours du temps. Par exemple pour mesurer un signal sonore on utilisera
typiquement un “microphone” ; de fait ce dernier transforme les vibrations d’un capteur mécanique
en variations de tension électrique.
Les mesures physiques converties en signaux électriques sont très souvent visualisées à l’aide d’un
oscilloscope. Cependant, pour effectuer un traitement détaillé des données mesurées, on utilisera un
PC. Un problème non trivial dans ce cas est d’interfacer l’oscilloscope et le PC et de piloter l’interface
en question au moyen de logiciels appropriés. Parmi ces logiciels d’interface figurent LabVIEW. Ce
langage, développé par National Instruments, est devenu un standard dans les langages d’interfaces
instrument/PC. C’est pourquoi dans ce TP, on se familarisera quelque peu avec les notions élémentaires
de LabVIEW en réalisant une application simple d’interfaçage en utilisant ce logiciel. Il ne s’agit pas de
transformer ces TP en travaux pratiques d’informatique, mais de réaliser qu’actuellement la physique
expérimentale et le traitement de ses mesures sont de plus en plus liées à l’outil informatique.

LabVIEW1

Nous décrivons ici le B-A-BA de LabVIEW. Pour plus de détails, consulter le manuel de l’utilisateur.
LabVIEW est un langage de programmation graphique fondé sur le concept d’instrument virtuel (VI).
Les lignes de codes que l’on écrirait dans un langage de programmation classique sont remplacées ici
par des symboles graphiques que l’on relie entre eux dans des diagrammes. Les VIs, ou programmes
de LabVIEW, possèdent trois composantes :

1. La face-avant (en anglais, le front panel) constitue l’interface utilisateur/programme associée au


VI, de la même façon que sur l’interface d’un instrument “réel”, il existe des boutons, curseurs,
interrupteurs, etc..., et des affichages sous forme de led lumineux, cadran numérique, graphique,
etc.. qui permettent à l’utilisateur de régler l’instrument et d’en observer les résultats des mesures
(cf. par exemple Fig. 1).
1
Nous remercions Stéphane Barland (CNRS, INLN) pour l’aide qu’il nous a apportée dans cette partie.

1
2. Le diagramme (en anglais, le block diagram) représente le fonctionnement interne du VI, et
constitue en fait une écriture graphique d’un programme informatique. En général un VI est
constitué d’objets reliés entre eux par des fils de liaison. Ces derniers sont les canaux sur lesquels
s’échangent des flux d’informations lorsque le programme tourne. (cf. par exemple Fig. 2).

3. Les terminaux du VI sont les ports entrée/sortie de l’instrument virtuel. Ceux ci permettent
d’utiliser le VI comme un sous-programme dans un VI plus grand.

Exercice élémentaire

Q1. Réalisez un exemple de programme LabVIEW élémentaire dont la face-avant comporte un ter-
minal de sortie affichant une opération effectuée sur des nombres placés dans des terminaux
d’entrée.

Procédure : ouvrir le logiciel labVIEW et construire un nouveau VI. On conçoit d’habitude la face-
avant en premier lieu. Un clic droit de la souris fait apparaı̂tre le menu des fonctions disponibles.
En outre, il est utile d’activer l’aide contextuelle dans le menu Help. La connexion entre des sous-VIs
s’effectue en tirant un fil (à l’aide du clic gauche) de la bobine qui apparaı̂t à l’écran lorsque le pointeur
de la souris rencontre un terminal du VI.
REMARQUE : Créez un folder (portant le nom du groupe) sur votre bureau Windows. Vous y placerez
tous vos résultats. Sauvez le VI que vous venez d’écrire dans ce répertoire.

Interfaçage de l’oscilloscope et du PC : un VI de visualisation

Il s’agit ici d’écrire un VI réalisant l’acquisition d’un signal délivré par l’oscilloscope et affichant la
visualisation de celui-ci sur l’écran du PC.
A noter que ces deux appareils sont reliés physiquement entre eux par une connectique GPIB. La
face-avant et le diagramme d’un tel VI sont représentés sur les figures ci-dessous.
– Le VI à construire comporte une suite de trois VIs ”pilotes” reliés entre eux. Ceux-ci permettent
respectivement d’initialiser, d’acquérir des données et de fermer la session de communication avec
l’oscilloscope. Ces VI sont spécifiques à l’oscilloscope utilisé. Par exemple, pour l’oscilloscope Tek-
tronix 520 A, ceux-ci sont accessibles dans la palette : Functions : Input : Instr Driver : Tktds5xx.
– Sur le diagramme de la Fig. 2, l’oscilloscope est représenté par l’objet “VISA resource name”.
Plus précisément, mais sans rentrer dans les détails, l’objet “VISA resource name” est une variable
permettant d’ouvrir une session de communication entre les VIs associés aux pilotes d’instrumen-
tation et la carte GPIB de l’oscilloscope. On trouvera cette variable dans la palette Functions : All
Functions : Instrument I/0.
La communication peut s’établir lorsque cette variable prend la valeur GPIB0 : :1 : :INSTR qu’il
faudra introduire sur la face avant du VI. Dans le diagramme, cette variable doit être connectée au
terminal “VISA” de TKDTDS 5XX Initialise.vi, puis connectée au VI TKDTDS Read WaveForm.vi,
et enfin reliée à TKDTDS 5XX Close.vi. Ce dernier VI marque la fermeture de la session de com-
munication VISA.

2
Fig. 1 – Face-avant du VI d’interfaçage élémentaire.

Fig. 2 – Diagramme du VI d’interfaçage élémentaire.

– une variable booléenne (mise à Faux) est injectée dans le terminal “reset” de TKDTDS 5XX Initialise.vi.
(A copier depuis la palette Functions : Arith/Compare : Boolean).
– un signal d’absence d’erreur doit être transmis de proche en proche jusqu’au dernier VI.
– Enfin le VI Waveform Graph.vi reçoit les données émanant du terminal “waveform out” de TKDTDS
Read WaveForm.vi.

3
Q2. Ecrivez un tel programme. Testez-le sur un signal transmis à l’oscilloscope par le générateur de
fonctions. Sauvez une copie du VI que vous avez construit dans votre répertoire de résultats.

VI d’acquisition de signaux

Fig. 3 – Face-avant du VI acquisition.vi.

En pratique les données fournies par l’oscilloscope doivent être non seulement visualisées, mais également
enregistrées dans un fichier sous forme de tableaux de nombres. Pour cela on utilsera acquisition.vi
qui est une version un peu plus élablorée du VI de visualisation que vous avez construit.

Q3. Editez le programme acquisition.vi dans LabVIEW et testez-le sur un exemple de signal
délivré par le générateur. En utilisant l’aide contextuelle (et si besoin, le manuel de LabVIEW),
commentez brièvement les nouveaux sous-VI qui ont été intégrés dans ce programme afin de
permettre l’enregistrement des données dans le fichier “data”.

Q4. (OPTION) Ecrivez vous-même ce VI.

Observez d’abord la face-avant de ce VI (Fig. 3). Les chemins des fichiers de sortie data doit y être
inscrit. Le fichier data contiendra une colonne de valeurs réelles correspondant aux mesures de la
voie X ou Y (à entrer ici comme “0” ou “1”). Le nombre de lignes sera déterminé par le nombre
d’acquisition (qui peut être rentré sur la face-avant du VI) multiplié par le nombre de points envoyés
par l’oscilloscope lors d’une acquisition.
Observez ensuite le diagramme de ce VI (Fig. 4). Notez que le cadre englobant quelques sous-VI
représente une structure itérative analogue à la boucle “for” des langages traditionnels (la variable N
désignant le nombre d’itérations et i la variable d’indexation de la boucle).
Le VI Unbundle.vi sert à défaire une structure de données. Cette dernière est ici constitutée de 2
scalaires (t0, Te ) et d’un vecteur de réels. Les deux premiers nombres réels sont convertis en un vecteur

4
Fig. 4 – Diagramme du VI acquisition.vi.

à deux composantes à l’aide du sous-programme Build Array.vi. Enfin les données vectorielles sont
écrites sous forme de tableau dans les fichiers de sortie grâce au VI Write To Spreadsheet File.vi.

2 Outils mathématiques (A intégrer avant d’effectuer les manips !)

Les prérequis théoriques du TP sont rappelés brièvement dans les sous-sections suivantes. Ils concernent
les notions de transformée de Fourier, continue et discrète, et d’échantillonnage. Le concept de filtrage
linéaire sera rappelé plus loin, dans la Section 5.

Echantillonnage temporel et critère de Shannon

La mesure de signaux physiques à temps continu se fait le plus souvent au moyen d’une carte d’acqui-
sition digitale. Cette acquisition produit des signaux “discrétisés” en temps, ce qui revient à remplacer
la fonction x(t) par une collection de valeurs {· · · , x0 , x1 , x2 , · · ·} où xn = x(nTe ) et Te est un intervalle
de temps appelé temps d’échantillonnage. Dès lors la fréquence d’échantillonnage [en anglais sampling
frequency] est définie comme :
1
νe =
Te
Un résultat fondamental concernant l’échantillonnage est le fameux théorème de Shannon. “Un signal
x(t) à bande limitée B (i.e. dont la transformée de Fourier ne contient aucune fréquence supérieure à B)
peut être reconstruit sans perte d’information à partir d’échantillons si la fréquence d’échantillonnage
est supérieure ou égale à 2B”, soit :
νe ≥ 2B

Ce résultat ne sera pas démontré ici.

5
Remarque : on appelle fréquence de Nyquist-Shannon la fréquence d’échantillonnage minimale imposée
par le théorème de Shannon, donc 2B dans les notations ci-dessus.

Q5. Discutez brièvement le choix d’une fréquence d’échantillonnage raisonnable pour enregistrer un
signal vocal.

Transformée de Fourier discrète (FFT)

Pour rappel la transformée de Fourier à temps continu d’un signal x(t) est définie par :
Z ∞
x̂(ν) = T.F. [x(t)](ν) = x(t)e−i2πνt dt (1)
−∞

Lorsque le signal x(t) est discrétisé, c’est-à-dire que l’on dispose d’un échantillon discret et fini
{x1 , x2 , · · · , xN } de ce signal, l’intégrale qui définit la transformée de Fourier peut être approchée
par une somme discrète et finie. Il existe plusieurs conventions pour définir la transformée de Fourier
discrète. Ici on choisit :
N
(k−1)(m−1)
xk e−i2π
X
x̂m = N . (2)
k=1

où m = 1, · · · , N . Une propriété remarquable de cette somme est que la transformée Fourier inverse
s’écrit pratiquement de la même façon :
N
1 X (k−1)(m−1)
xk = x̂m ei2π N . (3)
N m=1

(Notons dans la formule d’inversion, le facteur 1/N et le changement de signe dans l’exponentielle
complexe). Cette propriété d’inversion ne sera pas démontrée ici mais rien ne vous empêche de la
vérifier par vous-même ! Lorsque N est une puissance de 2 il existe un algorithme de calcul rapide
pour effectuer cette somme, appelé “Fast Fourier Transform” ou FFT. La plupart des logiciels de
traitement de données, tel SCILAB que vous utiliserez plus loin, possèdent une fonction qui implémente
numériquement la FFT.
Montrez par un petit calcul que le lien entre les définitions des TF continue et discrète s’écrit (ap-
proximativement) :
m
x̂( ) ≈ Te x̂m .
T
où T = N Te est l’intervalle de temps total sur lequel les mesures sont effectuées. Le calcul consiste
simplement à approximer l’intégrale définissant la TF, eq. (1), par une somme discrète (somme de
Riemann). On constate sur cette équation que la résolution en fréquence de l’approximation est donnée
par 1/T = ∆ν. On a aussi
νe = N ∆ν

ce qui montre qu’a priori νe est la fréquence maximale du spectre de Fourier. Mais par le théorème
de Shannon, mentionné plus haut, il se trouve qu’en réalité la fréquence ”physique” maximale est
B = νe /2. Les fréquences discrètes supérieures à νe /2 sont nécessaires pour reconstruire le signal
discret x(ti ), cf. eq. (3), mais n’apportent pas d’information sur les fréquences physiques supérieures

6
à νe . Une autre façon de voir ceci est de considérer que la somme d’inversion (3) peut en fait être
réécrite avec un indice de sommation allant de −N/2 à N/2, où les fréquences négatives correspondent
aux fréquences supérieures à νe /2 de la somme (2).
En résumé nous avons introduit les concepts de série temporelle à N échantillons, d’intervalle d’échantil-
lonnage Te , de fréquence d’échantillonnage νe , de durée du signal T , et de résolution en fréquence ∆ν.
A ceux-ci s’ajoutent :
– la base de temps de l’oscilloscope, notée To , qui correspond à la durée du signal le long d’un carreau
de l’écran de l’oscilloscope,
– le nombre de points échantillonnés par l’oscilloscope durant l’interval de temps To , soit No . On a
donc Te = To /No .

3 Echantillonnage de signaux simples

Les manips suivantes visent à apprendre à jongler avec ces paramètres (N, No , Te , T, To , νe , ∆ν, B) qui
sont, bien entendu, reliés entre eux. A propos, parmi ceux-ci, combien de paramètres peuvent être
choisis arbitrairement ?
Nous avons déjà introduit le logiciel LabVIEW, utilisé pour l’acquisition des données, mais le traite-
ment des données enregistrées sur le PC sera effectué avec le logiciel SCILAB. Celui-ci est un clone
(légèrement muté...) de MATLAB, qui a l’avantage sur ce dernier d’être distribué gratuitement pour
Windows, Linux, MacOS, etc... Il se télécharge facilement. De plus SCILAB est développé par l’IN-
RIA2 . Au cours de ces manips il conviendra de se familiariser avec SCILAB et d’apprendre à écrire
quelques scripts dans ce langage de programmation (qui est proche du C).
Vous conserverez dans un répertoire sur le disque dur du PC les fichiers d’acquisition de données,
les scripts SCILAB, les figures et fichiers audio. Ces fichiers seront considérés comme “documents
électroniques” attachés à votre compte-rendu. (Vu le nombre de fichiers différents, il est préférable de
les ranger dans des sous-répertoires si nécessaire.) Certains scripts SCILAB que vous écrirez pourront
être imprimés et collés dans votre compte-rendu de TP, de même que certaines figures que vous
produirez dans le traitement des mesures.
Attention, comme dans tout compte-rendu de TP, les figures produites doivent préciser
les variables en abscisse et en ordonnée, ainsi que le choix des unités.

Q6. Ecrire un script SCILAB qui lit les fichiers de sorties du programme LabVIEW acquisition.vi
et en affichent le contenu dans un graphe.

Les scripts suivant sont écrits à titre d’exemples. Il sera utile d’utiliser la commande help pour en
savoir plus sur telle ou telle fonction. Par exemple en tapant help mode on explicitera la signification
des paramètres de la fonction mode( ) appararaissant dans le script ci-dessous.

function[ ] = plotdat(T o)
// Mode d’affichage
2
Institut National de Recherche en Informatique et Automatique

7
mode(0) ;
// Lit le contenu du fichier "data" dans le vecteur x
x = read("data",-1,1) ;
// Affiche le nombre de lignes et de colonnes de x
[ lignes colonnes ] = size(x)
N = lignes ;
// l’intervalle d’echantillonnage :
T e = T o/N o ;
t = [ 0 :T e :(N-1)*T e ]’ ;
// plot x en fonction de t
plot(t,x) ;
endfunction

Remarque : Le paramètre To est fourni par l’oscilloscope TKTDS1002. Pour ce dernier, No = 250.
Contrairement au langage C celui-ci ne requière pas de déclaration des variables. Un avantage de
SCILAB (ou de MATLAB) est la possibilité d’écrire les opérations sur les vecteurs sans utiliser de
boucle sur l’indice du tableau correspondant. Pour un vecteur x donné, on accède à sa valeur xj en
écrivant x(j). Ceci se généralise en dimension supérieure. (De plus l’écriture z( :,1) signifie que l’on
manipule un vecteur colonne correspondant à la première colonne du vecteur.) Notons aussi que les
instructions se terminent généralement par “ ;”, mais ce n’est pas obligatoire. Lorsque le symbole “ ;”
est omis, le résultat de la ligne s’affiche à l’exécution du programme.
Remarquons également que l’instruction “t = ...” crée un vecteur de dimension N dont les composantes
sont les mutiples entier de Te (allant de 0 à N − 1). Le symbole “’” transpose le vecteur ligne de sorte
que t devienne un vecteur colonne.
N.B. : Pour exécuter le script, sélectionnez “Load into Scilab” dans le menu Execute de l’éditeur
Scilab.

Q7. Ecrire un script SCILAB qui calcule la FFT d’une série temporelle se trouvant dans un fichier
“data” et affiche le spectre de puissance correspondant.

function [ ] = fftdat( )
(...)
// soustraction de la moyenne temporelle du signal
xmean = mean(x) ;
x = x - xmean ;
// déterminer la puissance de 2 la plus proche du nombre de lignes
N = 2 ^ floor(log2(lignes))
// calcul de la FFT du signal
sf = fft(x(1 :N)) ;
// calcul du spectre de puissance
sp = abs(sf(1 :N/2))^ 2 ;

8
plot(sp) ;
endfunction

Remarquez que le script calibre la série temporelle en soustrayant la moyenne du signal.


Exercice : Quelle conséquence cela a-t’il sur le calcul de la FFT ?
Notons aussi que le calcul de la FFT se fait sur un nombre de points égal à une puissance de 2.
Il conviendrait de rajouter quelques lignes dans le script ci-dessus pour calculer directement les pa-
ramètres importants de la série temporelle (Te , T, ∆ν, B). Ceci devrait permettre de représenter le
spectre de puissance en fonction de la variable ν. Comme expliqué plus haut pour le vecteur
t, il suffit de rajouter la ligne suivante dans le script :

nu = [ 0 :delta nu :(N/2-1)*delta nu ]’ ;

Echantillonnage et FFT d’un signal de durée limitée

(OPTION)
Délivrez en sortie du générateur de fonctions le signal arbitraire pré-enregistré Sinc.
Le but est de comparer le traitement de ce signal, en particulier le calcul de sa FFT, en choisissant
deux bases de temps To différentes. Dans le premier cas on choisira To de sorte que l’on distingue
nettement le pic central de Sinc, et les premières oscillations qui l’entourent (un peu comme lorsque
l’on dessine cette fonction en cours...). Dans le deuxième cas, on prendra To le plus grand possible, mais
en n’affichant qu’un seul Sinc sur l’écran (En effet, si To est choisi arbitrairement grand on constate
que ce signal est reproduit périodiquement sur l’écran).
Q8. (OPTION) Identifiez dans chacun des cas les paramètres (N, No , Te , T, To , νe , ∆ν) liés à vos
réglages du générateur et de l’oscilloscope.

Q9. (OPTION) Réalisez l’acquisition du signal sur le PC et représentez-le graphiquement avec SCI-
LAB. Complétez la série temporelle avec des “0” pour obtenir un nombre de points égal à une
puissance de 2. Calculez la FFT et représentez le spectre de puissance sur un autre graphique.

Q10. (OPTION) Mesurez les intervalles de temps qui séparent les zéros successifs de Sinc. On notera
2τ le temps s’écoulant entre les deux zéros de Sinc qui entourent le pic principal. Mesurez la
largeur spectrale B du spectre de puissance correspondant et comparez cette mesure à 1/τ .
Interprétez le résultat après avoir calculé analytiquement la TF d’un signal Sinc de largeur 2τ .

Q11. (OPTION) Comparez les résultats obtenus dans les situations considérées. Que peut-on conclure
sur le choix d’une “bonne” fréquence d’échantillonnage pour un signal de durée finie ?

Q12. (OPTION) Réalisez l’acquisition d’un signal Sinc dédoublé sur l’écran de l’oscilloscope. Cal-
culez le spectre de puissance. Interprétez.

Echantillonnage d’un signal AM

Dans cette manip on fixe la fréquence d’échantillonnage à 5000 Hz.

9
Avec le générateur de fonctions, on va délivrer des signaux de modulation d’amplitude (AM) dont
la fréquence de modulation est un cinquième de celle de la porteuse ν. On choisira un paramètre de
profondeur de modulation égal à 100% (cf. manuel).
On veut étudier ce type de signal avec différentes fréquences ν répondant ou non au critère de Shannon
par rapport au paramètre νe qui est fixé.

Acquisition de données avec un échantillonnage suffisant

On choisit d’abord une fréquence ν = 1750 Hz.

Q13. Réalisez l’acquisition du signal AM sur le PC, dans un fichier comportant au moins 2048
points. En utilisant SCILAB, représentez les données en fonction du temps sous forme de points
séparés et sous forme de points reliés par des lignes. (cf. help plot). Explicitez les observations
que ces graphes peuvent susciter. (Cette représentation “temporelle” peut-elle conduire à des
conclusions erronnées ?) Utilisez éventuellement une fonction “zoom”.

Q14. Calculez le spectre de puissance. Comparez les informations qui ressortent des représentations
temporelle et fréquentielle. Discutez les avantages de l’une par rapport à l’autre.

Q15. Comment peut-on représenter mathématiquement le signal fourni par le générateur ? (Construi-
sez une fonction x(t), comme une somme de “sinus” ou “cosinus”, qui décrit le signal en question).

Q16. Quelle est la fréquence de Nyquist dans ce cas-ci ? Le critère d’échantillonnage de Shannon
est-il respecté ?

Q17. (OPTION) Testez votre “modèle mathématique” en produisant, à l’aide de SCILAB, les
graphes du signal temporel et de sa FFT.

Effet du sous-échantillonnage : le repli de spectre (aliasing)

On veut comprendre l’effet du sous-échantillonnage sur les différentes représentations du signal étudiées
ci-dessus. On choisit trois fréquences ν (2200, 2350 et 2675) Hz. Dans chacun des cas, calculez la
fréquence de Nyquist.

Q18. Réalisez l’acquisition du signal AM sur le PC, dans un fichier comportant au moins 2048 points.
Comme précédemment, représentez les données en fonction du temps. Observe-t-on de nouvelles
fréquences, en comparaison avec le signal échantillonné correctement ?

Q19. Calculez le spectre de puissance avec SCILAB et représentez-le dans un double graphe en utili-
sant les commandes subplot(211) et subplot(212) (cf. help subplot). Sur le graphe du dessus
portez les pics en fréquence du spectre de puissance du signal correctement échantillonné (en uti-
lisant les données acquises dans la section précédente), mais en divisant l’axe des fréquences par
la fréquence de référence 1750 Hz. D’autre part, dans chacun des cas (i.e. respectivement 2200,
2350 et 2675 Hz), représentez sur le graphe du dessous le spectre du signal sous-échantillonné,
avec l’abscisse normalisée par la nouvelle fréquence de référence (i.e. 2200, 2350 et 2675 Hz).

10
quency chaotic signal generator: A demonstration experiment
t Kumar Roya)
ent of Physics, Presidency College, Calcutta 700 073, India
asurayb)
Sur
Division, Neo Tele-Tronix Pvt.chacun des graphes,
Ltd., 6/7 Bijoygarh, Calcuttadessinez également
700 032, India un trait vertical (p.ex. en traits discontinus) dont
l’abscisse
ed 24 August 2001; accepted correspond
24 June 2002" à la fréquence d’échantillonnage divisée par 2. Pour cela ajoutez une ligne
uss a simple oscillator du
that type
is capable
: of producing chaotic as well as periodic signals. The
esign is straightforward and can easily be implemented in a standard undergraduate physics
ry. The signal generator is suitablee/nu
plot([nu for demonstrating
ref/2 nu e/nuhow the [0 smax
nonlinearity
ref/2], ],’--’) ;
of the circuit
s can affect the output of an electronic device. © 2003 American Association of Physics Teachers.
0.1119/1.1515481$Q20. Comparez les résultats obtenus dans les trois cas. Explicitez une formule mathématique qui
décrit le déplacement des pics de fréquences du spectre de Fourir dû au sous-échantillonnage.
TION Pourquoi cet effet est-il
of theappelé
cathodedans !not repli
la littérature
ray oscilloscope showndein spectre
Fig. 1" ?areRemarque : en anglais cet
connected so that the collector and the emitter voltages are
st few decades, scientists,
effetmathematicians,
est appelé aliasing pourwith
measured signifier
respect que
to thel’on “prend une fréquence pour une autre” (et alias
ground.
ve realized that a large variety of physical
very complicated dynamicalsignifie “autre”).
behavior. This
avior, popularly called chaos, occurs so fre-
mples of simple nonlinear dynamics are find- III. ANALYSIS OF THE DYNAMICAL SYSTEM
1
o the undergraduate curriculum. The schematicchaotiques
diagram is given in Fig. 1. By applying
4 oscillators.
we focus on chaotic Générateur The devel- deKirchhoff’s
signaux laws, we find that the current and voltage equa-
oscillators and their synchronization is an tions are
earch in communications technology.2 High
On laisse de côté
c oscillators have immense potential for ap- le générateur de fonctions et on s’intéresse aux signaux produits par le circuit
dV C1
ure communication because chaotic C1 !I L "I C , !1"
électronique mis 3àoscilla-
disposition (circuit dt comportant un transistor). Il s’agit d’un oscillateur, connu dans
universal circuit designed by Chua or the
4 dV C2 sous le nom d’oscillateur de Colpits (modifié). Le diagramme du
g of the Lorenzlasystem are lowdes
littérature frequency
circuits électroniques
not suitable as communication devices. C2 !I L "I C #I E "I R , !2"
dt
circuit
esign is a modified est illustré
version sur la figure 5. L’élément actif de ce dispositif électronique est un transistor bipolaire
of the Colpitts
bed in standard textbooks.5 It is simple and
NPN de type Q2N2222.
e major features of chaos can be understood Les autres composantes sont deux condensateurs identiques (C = 68 nF), une
dI L
design can be integrated easily into an un-
bobine (L = 91 µH), une résistance V CC !V C1fixe
#V C2(R#L= dt33#I L R,et une résistance !3"
Ω), variable R1 ∈ [Rmin , Rmax ].
ics laboratory. One of the advantages of the
r is that its frequency can vary from complémentaires
Des informations a few where V C1surandce circuit
V C2 are theetvoltages
sur sa across
dynamique sont détaillées dans l’article du
the capacitors
ga hertz !microwave region", depending on and I L is the current through the inductor.
journaladvantage
onents chosen. Another American Journal
is that the of Physics et fournies avec la documentation de ce TP.
possesses an intrinsic nonlinearity !the
relation is exponential", which can easily
ar !periodic" oscillations or chaotic behavior
the choice of parameters. In Sec. II we de-
design of the signal generator. In Sec. III
e the theoretical analysis of the dynamical
iagrams show the richness of the attractor.
with the implementation of the circuit in the
we give our experimental results as well as
ults obtained using PSPICE. Finally, in Sec.
rious possibilities for future work.

IRCUIT
se transistor configuration is used as shown
esistor R and inductor L are connected in
e collector and positive supply voltage. An-
is connected between the emitter and the
Such a connection is rather unconventional.
ken to choose a value of R 1 that is not too
gh current through the transistor will dam-
citors C1 and C2 are used to adjust the
ncy of the circuit, which depends as usual on
of C1, C2, and the inductor L. The probes Fig. 1. Schematic diagram of the circuit.

Phys. 71 !1", January 2003


Fig. 5http://ojps.aip.org/ajp/
– Representation schématique du circuit électronique de l’oscillateur
© 2003 American Association of Physics Teachers 34
de Colpits modifié.

Manipulation : On veut analyser les oscillations de tension que peut produire le circuit pour différentes
valeurs de la résistance variable R1 . Ce paramètre peut être ajusté en tournant la vis située au-dessus
de la résistance variable.

11
ATTENTION ! la résistance variable R1 sera maintenue au-dessus de 700 Ω.
Pour fonctionner, le transistor doit être mis sous tension à l’aide du générateur de tension ±15 V (Ces
tensions correspondent aux symboles ±ve sur le diagramme électronique). En outre :
– La base du transistor sera maintenue au potentiel de la masse.
– L’émetteur du transistor sera branché sur la voie X de l’oscilloscope.
– Le collecteur du transistor sera branché sur la voie Y.
Une technique classique pour observer et classer les comportements d’un système dynamique, tel que
ce circuit électronique, est d’utiliser la représentation “espace de phase” du système. Pour cela affichez
Y en fonction de X.
Dans cet espace des variables (X, Y ) quel critère simple permet d’identifier un signal périodique ?
Q21. Remarquez les types différents de signaux temporels que l’on observe lorsque R1 varie en
décroissant depuis 1900 jusqu’à 800 Ω. Etablissez un classement qualitatif, dans lequel vous
situez les différents comportements du circuit en fonction de R1 .
Pour certaines valeurs de R1 on voit apparaı̂tre un enroulement compliqué des trajectoires dans
l’espace de phase. Ceci peut être la signature d’un “attracteur étrange”, trait caractéristique
d’une dynamique chaotique dans l’espace des phase.

Q22. Fixez une valeur de R1 telle que la dynamique observée soit manifestement chaotique. La ques-
tion principale de cette section du TP est la suivante : déterminez une fréquence d’échantillonnage
qui soit optimale pour acquérir sur le PC une série temporelle à N points, “représentative” de ce
signal, et qui permette en particulier d’obtenir une bonne estimation de son spectre de puissance.
Représentez le spectre en question sur un graphe (cf. remarque ci-dessous).
REMARQUE : contrairement aux signaux “simples” analysés ci-dessus, le spectre de puissance d’un
signal chaotique ne peut pas être calculé en effectuant une seule FFT. En fait on peut montrer qu’une
bonne estimation du spectre de puissance d’un tel signal demande de moyenniser le résultat de plusieurs
FFT. Concrètement, pour obtenir obtenir un estimateur du spectre de puissance à partir d’un signal
échantillonné x(t = kTe ), (k = 1, 2, · · · , NT ), la série du nombre total NT de points enregistrés est
découpée en Ntroncs tronçons comportant chacun N valeurs, donc on suppose

NT = Ntroncs × N

On utilise alors l’estimateur du spectre de puissance suivant :


m T 2 |x̂m |2
Sx (ν = ) ≈< e >Ntroncs m = 0, 1, · · · , N − 1
T T
où les nombre complexes x̂m peuvent se calculer à l’aide de la FFT et < · >Ntroncs signifie que l’on a
effectué une moyenne sur sur Ntroncs échantillons.
En pratique il faut donc prévoir NT plus grand que N (qui, pour rappel, fixe la résolution spectrale).
On peut par exemple choisir N = 256. Le script fftWN(Ntroncs ,scale) permet de calculer l’estimateur
du spectre de puissance décrit ci-dessus à partir d’un fichier data qui devrait comporter au moins
NT = Ntroncs × N points. Le paramètre scale permet de choisir l’échelle de l’ordonnée, soit normale
(0), soit logarithmique (1).

12
5 Traitement du signal audio

Dans cette partie on s’intéresse à l’acquisition et au traitement du signal audio. On étudiera d’abord
la question de l’échantillonnage d’un tel signal. Ensuite on verra les principes du filtrage linéaire
appliqués au signal audio.

Déséchantillonnage

Un premier objectif est de comprendre comment un fichier audio peut être déséchantillonné correcte-
ment (souvent dans le but d’en alléger la taille). Un fichier audio HiFi non compressé peut effectivement
peser lourd en mémoire disque.

Exercice : quelle est l’espace requis pour un CD audio “typique” ? (Justifier votre réponse en considérant
1h, 2 canaux échantillonnés à 44100 Hz et 2 bytes par échantillon)

Choisissez un morceau de musique favori, mais de courte durée (par ex. T=30 secondes) sur un CD,
possédant plutôt des hautes fréquences. Ouvrez une fenêtre sur le PC avec logiciel CDex. L’icône
inférieure sur le côté droit de la fenêtre permet de configurer le convertisseur. Choisissez
d’abord le format .WAV, sans compression, mono, avec une fréquence d’échantillonnage de 44100 Hz.
Ensuite cliquez dans le menu “convert” sur l’option “Extract CD track to a Compressed Audio
File”.

Q23. Vérifiez que la taille du fichier .wav produit correspond bien au résultat attendu. Ecouter le
nouveau fichier et vérifiez que la seule différence que vous percevez par rapport à l’original est
d’avoir supprimer les effets stéréo. Quelle est la fréquence de Nyquist (a priori) de ce fichier et
comment est-elle justifiée physiologiquement ?

Q24. Ecrivez un script SCILAB (cf. ci-dessous) qui permet de déséchantillonner le signal d’un facteur
2, et utilisez celui-ci 4 fois de suite. Appelons les fichiers produits de cette façon (son desech1.wav,
son desech2.wav, son desech3.wav, son desech4.wav). Vérifiez que les tailles de ceux-ci décroissent
chaque fois d’un facteur 2. Notez et expliquez les commentaires qui apparaissent à l’écran lorsque
ce script est exécuté.

Q25. Comparez qualitativement la qualité audio des fichiers obtenus en notant pour chacun d’eux
la fréquence de Nyquist.

En pratique ce script pourrait commencer par les lignes de code suitantes :

function [ ] = desechantillonnage( )
mode(0) ;
[ z, nu e, Nbits ] = wavread("son.wav") ;
[ lignes colonnes ] = size(z)
N = 2 ^ floor(log2(colonnes))
y = z(1 :N) ;

13
wavwrite(y,nu e,"son court.wav") ;
endfunction

Dans ce programme on utilise les fonctions waveread et wavwrite qui permettent respectivement d’ex-
traire ou d’enregistrer un vecteur d’amplitude de son dans un fichier .wav. La fichier “son court.wav”
contient un nombre de point égale à la puissance de 2 la plus proche du fichier “son.wav” initial.
Ensuite le déséchantillonnage du signal s’effectue simplement en rajoutant une ligne de code du type :

// On écrit dans le vecteur yd une valeur sur deux de y en commençant par y(1)
yd = y(1 :2 :N-1) ;
wavwrite(yd,nu e/2,"son desech.wav")

Remarque pratique concernant SCILAB : il est probable que lors de l’exécution du script vous receviez
un message d’erreur : stacksize limit. Pour remédier à ce problème, vous pouvez augmenter la taille
mémoire avec commande stacksize(Ns) où Ns est un nombre entier qui doit être choisi suffisamment
grand (par exemple Ns égale dix millions).

Filtrage linéaire

Notons B0 la fréquence maximale audible dans le fichier le plus déséchantillonné (le plus “léger”) obtenu
ci-dessus, c’est-à-dire son desech4.wav . Le but de cette partie est de filtrer dans le fichier initial (son court.wav)
les fréquences supérieures à B0 et de comparer le résultat avec le fichier audio “son desech4.wav”.

Rappel théorique

Grâce au concept de transformée de Fourier, l’opération de filtrage d’un signal x(t) en un signal y(t)
peut se décomposer simplement comme suit :

T.F. T.F.−1
x(t) −→ x̂(ν) −→ ŷ(ν) = H(ν)x̂(ν) −→ y(t) (4)

Dans cette opération H(ν) est appelée fonction de transfert du filtre. Il s’agit en général d’une fonction
à valeurs complexes, mais on peut donner exemple élémentaire de filtre réel, défini par la fonction

H(ν) = 1 ssi |ν| < νc (et ailleurs H(ν) = 0)

Il est clair qu’un filtre caractérisé par cette fonction de transfert a pour effet de “couper” les fréquences
de x(t) supérieures (en valeur absolue) à νc (celle-ci étant appelée par conséquent fréquence de coupure).
Pour cette raison on appelle également un tel filtre un “passe-bas”. Le “passe-haut” est défini de façon
analogue par la fonction 1 − H(ν) qui ne laisse passer que les fréquences supérieures à νc .

Filtrage de signaux audios et comparaison au déséchantillonnage

Q26. Ecrivez un script filtreHF(nu c) ayant pour effet de filtrer les fréquences supérieures à νc
dans un fichier audio.

14
H(v)

1
!
- vc vc

Fig. 6 – Fonction de transfert d’un filtre passe-bas idéal.

Ce script peut commencer de la même façon que desechantillonnage. Ensuite pour construire la
fonction de transfert il faut ajouter des lignes du type :

function [ ] = filtreHF(nu c)
( ... )
// Initialise H comme un vecteur 0 de m^
eme taille que y
H = zeros(y) ;
// H=1 sur le domaine de fréquences [−νc , νc ]
for k=1 :kmax
H(k) = 1 ;
end
for k=N-kmax+1 :N
H(k) = 1 ;
end
// Filtrage
Y=fft(y) ; TF = H.*Y ; yF=ifft(TF) ;
// Ecriture du son filtré
wavwrite(real(yF),nu e,"son filtre.wav") ;
endfunction

Notez que les fonctions SCILAB effectuant la FFT et son inverse, respectivement fft() et ifft(),
retournent un vecteur de nombres complexes. C’est pourquoi, pour produire le fichier de sortie “
son filtre.wav”, la fonction real(y) est utilisée pour extraire la partie réelle de y.

Q27. Dans ce script, l’entier kmax fixe l’indice la fréquence de coupure. Précisez comment calculer
ce paramètre en fonction de nu c et nu e, et ajoutez les lignes correspondantes dans le script.

Q28. Choisissez la fréquence de coupure νc = B0 correspondant à la fréquence maximale au-


dible de “son desech4.wav”. Appliquez votre procédure filtrageHF(B0 ) sur le fichier audio
“son court.wav”. Comparez les tailles du fichier de sortie, “son filtre.wav”, et de “son desech4.wav”,
et commentez leur différence malgré une qualité audio comparable.

15
Q29. Appliquez la technique qui permet d’obtenir un fichier “son filtreBIS.wav” de qualité audio
identique à “son filtre.wav” mais beaucoup moins gourmand en espace mémoire.

Q30. Comparez la qualité audio de “son filtreBIS.wav” par rapport à celle de “son desech4.wav”.
Quelle est le problème qui affecte ce dernier ?

Q31. Concluez sur la procédure à suivre pour déséchantillonner correctement un fichier audio.

Q32. (OPTION) Visualisez sur un graphe la différence entre les spectres de puissances de “son filtreBIS.wav”
et de “son desech4.wav”.

Q33. (OPTION) Visualisez et commentez l’analyse temps-fréquence de vos fichiers audio “son filtreBIS.wav”
et “son desech4.wav”. en utilisant la fonction mapsound de SCILAB.

Echantillonnage du signal de la parole

En utilisant encore le logiciel CDex sur le PC [ menu “Tools” : “Record from Analog Input”], enregistrez
une phrase d’environ une dizaine de secondes avec une fréquence d’échantillonnage de 8 kHz3 .

Q34. Représentez graphiquement le (logarithme du) spectre de puissance du signal. A partir de ce


graphe estimez la fréquence d’échantillonnage minimale ν1 avec laquelle on pourrait échantillonner
le signal en conservant la partie essentielle du spectre de puissance.

Q35. En appliquant votre script filtrageHF(nu c), faites quelques essais pour déterminer la fréquence
de coupure minimale telle que la phrase reste compréhensible. Déduisez-en la fréquence d’échantillonnage
minimale ν2 à utiliser pour enregistrer la phrase en question.

Q36. Comparez ν1 et ν2 . Commentez ce résultat.

Q37. (OPTION) Ecrivez un script SCILAB qui implémente un filtre “passe-bande”, dont la fonction
de transfert est nulle partout sauf sur un petit intervalle [νmin , νmax ] où elle vaut 1. Testez l’effet
d’un tel filtre sur le signal de la parole. Que peut-on inférer de cette expérience ?

Filtre à effet retard

Q38. Quel est le phénomène physique induit par un filtre dont la fonction de transfert définie par

H(ν) = 1 + Ae−i2πνt0

où A < 1 et t0 > 0 sont des paramètres ? Expérimentez ce filtre sur un fichier audio après avoir
enregistré un son bref en utilisant le logiciel CDex (44100 Hz ; p.ex. enregistrer un mot d’une
syllabe, mais ne pas couper l’enregistrement trop tôt après le mot). Commentez le résultat.

Pour répondre à cette question, écrivez un script SCILAB réalisant ce type de filtrage . Vous pouvez
reprendre le script filtrageHF et redéfinir la fonction de transfert par les lignes de code suivantes :
3
Attention, de façon erronnée le logiciel CDex n’inscrit pas 8 kHz dans le fichier de sortie, mais conserve la valeur par
défaut 44 kHz. Pour remédier à ce problème il faut écrire explicitement nu e = 8000 dans les prochains scripts SCILAB

16
function [ ] = filtreA(A, t0)
( ... )
// Constuire un vecteur fréquence allant de 0 à nu e= N*dnu
dnu = nu e/N ;
nu = [ 0 : dnu :(N-1)*dnu] ;
// Définition du filtre H = (a+ i b)
a = 1 + A.*cos(((2* %pi)*t0).*nu) ;
b = - A.*sin(((2* %pi)*t0).*nu) ;
H = a + imult(b) ;
( ... )
endfunction

Q39. Quel est l’effet du filtre dont la fonction de transfert s’écrit :

1
H(ν) =
1 − A exp(−i2πνt0 )
où A < 1 et t0 > 0 sont des paramètres ? Quel est l’effet de ce filtre sur un fichier audio ?

Pour analyser cette fonction, il est utile de la décomposer en une série H(ν) = 1 + Ae−i2πνt0 +
A2 e−i2πν2t0 + A3 e−i2πν3t0 · · ·. Ecrivez le script SCILAB correspondant et testez-le expérimentalement.

Convolution et réponse impulsionnelle

Un filtre linéaire n’est pas toujours caractérisé par sa fonction de transfert en fréquénce H(ν). Il peut
l’être également en donnant une fonction dépendant du temps appelée “réponse impulsionnelle”. En
effet, comme on l’a vu plus haut, la transformée de Fourier du signal filtré s’écrit ŷ(ν) = H(ν)x̂(ν).
On en déduit directement que :
Z
y(t) = (R ? x)(t) = R(t − s) x(s) ds (5)

où R(t) est la transformée de Fourier inverse de H(ν). Cette fonction du temps s’appelle la réponse
impulsionnelle du filtre parce que si x(t) est une impulsion de Dirac, δ(t), alors la sortie du filtre est
simplement y(t) = R(t). Expérimentalement on peut donc caractériser un filtre en enregistrant sa
réponse à une impulsion. On obtient alors une estimation de la fonction R(t) qui peut ensuite être
utilisée pour prédire la sortie du filtre pour n’importe quel signal d’entrée.
Le fichier audio “406 TicTacShutUp click 1 d.wav” (cf. page web http ://freesound.iua.upf.edu/download/406)4
est un exemple de son de percussif qui peut représenter une réponse impulsionnelle.

Q40. Expérimentez comment se transforme un de vos fichiers audio créé précédemment à la sortie
d’un filtre don la réponse impulsionnelle serait donnée par “406 TicTacShutUp click 1 d.wav”.
4
Le site web “http ://freesound.iua.upf.edu” a pour objectif de constituer une base de données contenant une vaste
collection de fichiers “sons” en accès libre, moyennant l’inscription en ligne. Libre à vous d’effectuer l’expérimentation
décrite dans cette section avec le son de votre goût. Le choix ne manque pas !

17
Réalisez votre traitement du son préféré... ou inventez-en un !

Quelques techniques du traitement digital du son ont été présentée dans ce TP. On trouvera dans la
documentation fournie avec le matériel une liste des effets sonores principaux, comme décrit sur les
pages web de Wikipédia (http ://en.wikipedia.org/wiki/Sound effect).

Q41. (OPTION) Concevez une méthode de traitement du signal audio, implémentée avec SCILAB,
qui permet de synthétiser l’un des effets sonores repris dans la liste mentionnée ci-dessus.

6 Mini formulaire sur la transformée de Fourier

La transformée de Fourier d’un signal x(t) est définie par :


Z ∞
x̂(ν) = T.F. [x(t)](ν) = x(t)e−i2πνt dt
−∞

On rappelle quelques propriétés importantes, faciles à démontrer :


– TF[f (t + τ )] = f˜(ν)e2iπντ
– TF[e2iπν0 f (t)] = f˜(ν − ν0 )
1 ˜ ν
– TF[f (λt)] = |λ| f ( λ ) (pour λ positif ou négatif).
– TF[f¯(t)] = f˜(−ν)
– TF[ df ˜
dt ] = 2iπν f (ν)
– TF[(f ∗ g)(t)] = f˜(ν).g̃(ν)
– TF[f (t).g(t)] = (f˜ ∗ g̃)(ν)
– la TF d’une fonction réelle et paire est réelle et paire
– la TF d’une fonction réelle et impaire est imaginaire et impaire

7 Matériel mis à disposition

un PC avec :
– Générateur de fonction 20 MHz/signaux arbitraires Agilent 33220A
– une carte d’acquisition branchée sur la sortie de l’oscilloscope
– un logiciel pour piloter la carte d’acquisition
– le logiciel SCILAB
– une carte son sur le PC
– un pilote pour la carte son
– un micro en entrée de la carte
– une paire de haut-parleurs en sortie.

18