Vous êtes sur la page 1sur 104

T. P.

Traitement du Signal
Matrise E.E.A.
Anne Universitaire 2004/2005

E. Losson, O. Horn, G. Bourhis et A. Fattouh

TP 1 : INITIATION A MATLAB
1) But de TP

Il sagit de se familiariser avec le logiciel MATLAB qui intgre lanalyse numrique et le calcul
matriciel. MATLAB (MATrix LABoratory) est un logiciel puissant de calcul matriciel. En effet, toute
variable est introduite sous forme de matrice.
Exemple:

un nombre (rel, complexe ou entier) correspond une matrice 1 x 1,


un vecteur de n nombres correspond une matrice 1 x n.

Ce TP doit permettre tout tudiant de matriser lenvironnement du logiciel de manire pouvoir


travailler de manire autonome.

2) Instructions lmentaires utilises dans MATLAB

2.1) Manipulations de variables et oprations arithmtiques sur les matrices

Aprs avoir cliqu sur licne MATLAB dans WINDOWS, vous vous trouvez dans la feuille de calcul de
MATLAB que lon appellera fentre MATLAB. Le curseur se situe derrire 'l'invite' reprsent par ce
symbole: >>
A cet endroit vous pouvez utiliser MATLAB aussi simplement quune machine calculer.
Taper par exemple 2+3 puis Entre, le rsultat apparat directement la suite.
Bien entendu MATLAB est beaucoup plus puissant que votre calculatrice puisque vous pouvez raliser
des programmes structurs, travailler sur des matrices de grande dimension, faire des calculs sur des
nombres complexes, afficher ou imprimer des graphes de qualit en 2D ou 3D. Enfin le grand avantage de
MATLAB est doffrir lutilisateur un grand nombre de fonctions ddies soit au calcul numrique, soit
au traitement du signal, soit lautomatique ou encore aux rseaux de neurones.
Nous nutiliserons quune infime partie des immenses possibilits de calcul de MATLAB, nous allons bien
sr commencer par les plus lmentaires dentre elles.

Assignation dune variable : taper a=2 puis Entre (pour valider votre opration) et la variable a vaudra
2.
Attention MATLAB fait la diffrence entre les majuscules et les minuscules.
Taper par exemple a et le contenu de la variable a sera affich, cest dire 2. Si vous tapez A aucune
valeur ne sera affiche puisque la variable A nest pas alloue.
Vous pouvez fort bien rallouer une autre valeur la variable a. Taper par exemple:

a=[1 2; 3 4] et le rsultat suivant sera affich :


a=
1

La variable a est ainsi devenue une matrice 2 x 2. Nous verrons dans le paragraphe suivant comment l'on
peut dfinir des matrices sans ncessairement donner tous les lments de celles-ci. Dans la dfinition de
la matrice a donne ci dessus, les crochets servent englober tous les lments et le point virgule
permet de sparer chaque ligne. A noter que les indices partent obligatoirement de 1, ils ne sont pas
paramtrables comme dans dautres langages. Ainsi si vous tapez a(1,1), le rsultat affich sera 1. Le
chiffre 1 sera donc llment (1,1) de la matrice a; on ne pourra pas changer cela pour quil devienne
llment (0,0).
Pour extraire une ligne ou une colonne dune matrice, il existe les instructions a(n, :) et a( :,n) o n
reprsente le numro de la ligne. Tester ces instructions en tapant a(1, :) et a( :,1).
Pour transposer la matrice, il suffit de taper a. Les transpositions peuvent tre utiles pour transformer un
vecteur ligne en vecteur colonne, ou inversement.
Pour crer une matrice, nous avons vu quil tait possible de la dfinir partir de lensemble de ses
lments mis entre crochets en sparant les lignes par des points virgules. Dans le cas de matrices
lmentaires, Matlab permet de dfinir celles-ci de manire simple, pour dfinir une matrice x ne
contenant que des 0 par exemple, il suffit de taper : x=zeros(m,n) o m et n reprsentent respectivement
le nombre de lignes et le nombre de colonnes. Les instructions ones et eye permettent de dfinir
respectivement des matrices de 1 et des matrices identit. Il existe dautres matrices lmentaires quil
est possible de crer de cette manire, reportez vous laide de Matlab pour en prendre connaissance en
cliquant sur Help puis Help Window et matlab\elmat. Vous trouverez galement sous cette rubrique :
-

des instructions donnant des informations sur les matrices comme la taille par exemple : size et
length.

des instructions permettant de manipuler les matrices comme la rotation avec rot90, flipud, fliplr.

Passons prsent aux oprations matricielles:

- Addition:

- Soustraction:

- Multiplication:

taper:

b=2+a et vrifier lopration ralise.

taper:

c=a+b et vrifier le rsultat.

taper:

b=b-2 et vrifier que b vaut prsent a.

taper:

b=b-a et vrifier que les lments de b sont nuls.

taper:

b=2*a et noter ce que vaut b

taper:

c=a.*b

et

relever

les

valeurs

de

pour

comprendre

comment les lments de a et b sont multiplis entre eux.


taper:

d=a*b

et

donner

la

diffrence

par

rapport

lopration

prcdente.

Attention cette dernire opration nest pas commutative contrairement au .*. Le produit b*a est donc
diffrent de d (sauf cas particulier comme ici).

- Division:

taper:

c./a et comparer le rsultat avec b.

taper:

c./b et comparer le rsultat avec a.

taper:

a\d et vrifier que le rsultat correspond linverse de a


multipli par d (cest dire b).

taper:

d/b et vrifier que le rsultat correspond au produit de d


par linverse de b (cest dire a).

- Puissance:

taper:

a.^2 et expliquer le type dopration effectue.

taper:

a^2 et comparer ce rsultat avec le prcdent.

Nous venons de crer un certain nombre de variables. Contrairement aux langages de programmation les
plus courants, il n'y a pas besoin de dclarer les variables ainsi que leur type (entier, rel ou autre).
Tapez la commande who pour connatre les diffrentes variables utilises. Pour effacer les variables,
tapez clear. Attention, de nombreuses erreurs de programmations pourront tre commises cause de
noms de variables utiliss plusieurs fois et devant dsigner des choses diffrentes.

2.2) Gnration de matrices ou de vecteurs et calculs sur les nombres complexes en traitement
du signal

En traitement du signal, nous travaillerons surtout avec des vecteurs qui correspondent des matrices
une seule ligne ou une seule colonne. Ces vecteurs permettent de simuler un signal chantillonn.
Prenons lexemple de la fonction :

y(t)=sin(2t ) .

Nous dfinissons tout dabord un vecteur temps par linstruction suivante :


t=t0 :te :tf avec t0 : linstant initial choisi, te : la priode dchantillonnage, tf : le temps correspondant au
dernier chantillon. Une autre criture possible est : t=[t0 :te :tf].
Pour les simulations, prenez par exemple : t=0 :0.1 :1
Pour dfinir y, il suffit ensuite de taper : y=sin(2*pi*t). La variable pi est prdfinie dans Matlab et
correspond bien sur la valeur de . Pour connatre lensemble des fonctions mathmatiques
lmentaires dfinies dans Matlab, reportez vous laide en cliquant sur Help puis Help Window et
matlab\elfun. Les fonctions sont classes dans trois familles :
-

les fonctions trigonomtriques

les fonctions exponentielles et logarithmiques

les fonctions sur les nombres complexes.

Cette dernire catgorie de fonctions est galement intressante pour nos applications en traitement du
signal. Il est par exemple possible de dfinir des fonctions exponentielles complexes comme :

y=exp(i*2*pi*t) que lon rencontre dans les dfinitions des transformes de Fourier. Les variables i et j
sont prdfinies dans Matlab pour les nombres complexes. Parmi les oprations les plus frquemment
utilises en traitement du signal, vous avez :
-

abs : valeur absolue dun rel ou norme dun complexe.

angle : phase correspondant au nombre complexe.

conj : conjugu d'un nombre complexe.

real: partie relle d'un nombre complexe.

imag: partie imaginaire d'un nombre complexe.

D'autres instructions permettent l'analyse des donnes contenues dans des matrices sont galement trs
utiles. C'est le cas des fonctions :
-

max: qui donne la valeur maximale d'une matrice.

min: qui donne la valeur minimale d'une matrice.

mean: qui donne la valeur moyenne d'une matrice.

hist: qui donne l'histogramme des valeurs contenues dans la matrice.

sum: qui calcule la somme des lments d'une matrice

Pour plus de renseignements sur ce type de fonctions, reportez vous l'aide dans la rubrique
matlab\datafun o figure un grand nombre d'instructions utiles au traitement de donnes.
Si vous voulez avoir de l'aide sur une fonction dont vous connaissez le nom, il suffit de taper help suivi du
nom de l'instruction dans la fentre de travail pour avoir des renseignements sur la syntaxe et le rle de
cette instruction.

2.3) Graphisme

Pour obtenir laide sur les instructions propres au graphisme, slectionner la rubrique matlab\graphics.
Afin de vous guider nous prsenterons en premier lieu la fonction graphique lmentaire: plot

Utilisation de plot pour tracer un graphe en 2 dimensions :


Reprenons les donnes t et y gnres auparavant.
Le vecteur y contenant des nombres complexes, si vous tapez plot(y) , le graphe obtenu reprsentera la
partie imaginaire de y trace en fonction de la partie relle.
Si vous voulez tracer la fonction sinus, tapez plot(imag(y)) ou plot(t,imag(y)) si vous voulez avoir en
abscisse le vecteur temps t.
Si vous voulez tracer la fonction sinus et la fonction cosinus sur un mme graphe, tapez
plot(t,real(y),t,imag(y)).
Tapez la suite dinstructions suivantes :

t2=0 :0.001 :1 ;y2=cos(2*pi*t2) ;


plot(t2,y2)
hold on
stem(t,real(y))

Dduire daprs les observations du graphe obtenu la suite de chacune des 3 dernires instructions ce
que ralisent les fonctions hold on et stem.
Vous pouvez fort bien spcifier la couleur et le style de trac en rajoutant une chane de caractres S
dans linstruction: plot(X,Y,S). Par exemple, si vous tapez: plot(t,real(y),b+), vous tracerez des + de
couleur bleue. Pour connatre les diffrentes possibilits de trac, tapez help plot.

Trac de plusieurs graphes dans la mme fentre :


Grce linstruction subplot, il est possible de spcifier le nombre de graphes que lon veut tracer dans
une fentre. SUBPLOT(M,N,P) permet de diviser la fentre en M x N, et la prochaine instruction plot, le
graphe sera trac lemplacement n P. A titre dexemple taper:
subplot(1,3,1)
plot(t,real(y))
subplot(1,3,2)
plot(t,imag(y))
subplot(1,3,3)
plot(real(y),imag(y))

2.4) Programmation structure, instructions conditionnelles et boucles

L'criture de fichiers de commandes ou scripts :


Un fichier de commandes ou script est une squence d'instructions Matlab. Ces fichiers portent
toujours l'extension m. Les variables cres dans ces fichiers sont globales, ce qui signifie que depuis la
fentre Matlab vous pouvez accder aux contenus de ces variables. Les fichiers de commandes
permettent la saisie de donnes grce l'instruction input utilise dans l'exemple qui va vous tre
prsent.
Nous allons crire un script qui permet le trac d'une fonction y=x+5. En haut de la fentre Matlab,
cliquez sur File puis New et M-File. Puis reportez dans l'diteur qui vient de s'ouvrir (MATLAB
Editor/Debugger) la suite d'instructions suivantes:
clc
T=input('Dure du signal = ');
N=input('Nombre de points = ');

t=0:T/N:T-T/N;
y=t.^2+5;
plot(t,y);
Pour sauvegarder ce script, il faut au pralable crer un rpertoire de travail sur le disque dur, nommez
le par exemple mst2 sur la disquette. Cliquez ensuite sur File puis Save as et donnez le nom suivant:
courbe1 ainsi que le rpertoire que vous venez de crer. Pour excuter ce script, donnez le nom du
rpertoire ou plus prcisment le chemin (path) en cliquant sur File puis Set Path. Revenez dans la fentre
de Matlab et tapez: courbe1. Vous devrez donner une dure du signal et un nombre de points avant de
visualiser le trac de la fonction.

L'criture de fichiers de fonctions :


Vous pouvez crer de nouvelles fonctions spcifiques votre domaine de travail qui auront le
mme statut que toutes les autres fonctions Matlab, comme par exemple les fonctions sin, cos, sinc,
L'avantage de fonctions par rapport aux scripts est le paramtrage facile d'entres et de sorties, ce qui
permet une utilisation commode et une intgration possible dans un script. Les variables utilises dans les
fonctions sont par dfaut locales, mais on peut aussi dfinir des variables globales grce l'instruction
global.
A titre d'application, nous allons crire une fonction pour gnrer un tableau de N nombres correspondant
au calcul de la fonction y=x+5 sur une dure T.
Les fichiers de fonctions portent galement l'extension m et sont crs avec le mme diteur que celui
utilis prcdemment pour gnrer des fichiers de commandes. Voici la suite d'instructions que l'on vous
demande de taper dans un fichier de fonctions que vous nommerez signal1:
function res=signal1(T,N)
% res: vecteur correspondant au signal y=x^2+5
% T: dure du signal
% N: nombre de points
temps=0:T/N:T-T/N;
res=temps.^2+5;
La premire ligne dclare le nom de la fonction, les arguments d'entre et de sortie. Sans cette premire
ligne, le fichier correspondrait plutt un fichier de commandes ou script. Pour excuter cette fonction
aprs l'avoir enregistrer sur la disquette, tapez y=signal1(1,50) dans la fentre Matlab. La variable y
comprendra alors 50 valeurs calcules partir d'un vecteur temps allant de 0 1seconde. Les lignes
commenant par % dans un fichier de fonctions ou un script permettent de donner des commentaires.
Notez que la variable temps est locale la fonction signal1 et n'est pas connue dans la fentre Matlab,
idem pour T et N.

Les boucles et instructions conditionnelles :


La syntaxe de ce type dinstructions (for, while, if) est dcrite dans laide (option Help, puis Help
Window et la rubrique matlab\lang).
A titre dexercice utiliser les instructions if et for pour crer une matrice X de dimension
5 x 5 o les lments de la diagonale sont gaux 5 et les autres 7.
Il est souhaitable de ne pas utiliser i et j comme des variables (ex: for i=1:1:n) car i et j sont utilises pour
dfinir des nombres complexes.

La ponctuation :
Les virgules, points virgules, et trois points (...) sont utiliss dans les scripts et les fonctions dans
les cas suivants:
- Pour sparer deux instructions sur une mme ligne, on utilise la virgule.
Exemple: taper subplot(1,2,1),plot(t,real(y)),subplot(1,2,2),plot(t,imag(y))
Lensemble de ces instructions sera ralis en une fois.
- Pour que le rsultat de lopration napparaisse pas dans la fentre MATLAB, utiliser le point virgule.
Exemple: taper a=[1 2; 3 4];
La matrice a nest pas retranscrite lcran.
- Si vous avez une instruction qui est trop longue, vous pouvez lcrire sur deux lignes grce au trois
points.
Exemple: taper

a=[1 2 3 4 5 6 7 8 9;...
11 22 33 44 55 66 77 88 99]

Cette dernire instruction est intressante utiliser pour la mise en page de vos programmes.
Pour voir de manire plus gnrale quoi peuvent servir les signes de ponctuation, choisissez la rubrique
matlab\general et cliquez au bas de la page sur See also PUNCT.

3) Exercices

3-1) Calcul dintgrales par la mthode des trapzes


Crez une fonction que vous nommerez: integ dans laquelle vous placerez toutes les instructions
ncessaires pour raliser lintgrale par la mthode des trapzes dune fonction quelconque sur une dure
allant de t0 tf par pas de te.
On veut en fait quen tapant par exemple integ(sin,0,2*pi,0.01), on obtienne le rsultat de lintgrale de la
fonction sinus prise entre 0 et 2 avec un pas de 0.01.
Le calcul de lintgrale dune fonction f(t) par la mthode des trapzes est obtenu par la formule
suivante :

tf

f (t ) dt =

t0

te
2

N 1
t f t0

+
+
f
f
N
f (k ) avec f(k) = f(kt e ) et N =
(
0
)
(
)
2

te
k =1

Pour raliser votre programme, vous devrez utiliser des instructions spcifiques au traitement de chanes
de caractres comme par exemple eval et strcat. L'aide concernant l'ensemble des fonctions de
traitement des chanes de caractres se trouve sous la rubrique matlab\strfun.
- A titre d'application estimez l'intgrale suivante

sin c(t )dt . Calculer la valeur thorique de cette

intgrale et vrifier que le rsultat obtenu numriquement en prenant des bornes de 100 +100 s'y
approche.

3-2) Calcul de transforme de Fourier discrte.


Crez un script tfd qui vous affichera quatre graphes correspondant :
-

la reprsentation temporelle du signal chantillonn

la partie relle de la reprsentation spectrale obtenue par calcul de la TFD

la partie imaginaire de la reprsentation spectrale obtenue par calcul de la TFD

le module de la reprsentation spectrale obtenue par calcul de la TFD

Le signal a tudier est donn par une fonction sinus de frquence 1Hz et damplitude 1. Les paramtres
demands par le programme seront la frquence dchantillonnage (fe) et le nombre de points de la T.F.D.
(N). Utiliser de prfrence la fonction stem pour tracer des spectres de raies plutt que plot.
La formule gnrale donnant la T.F.D. est la suivante:
N 1
m
mn

X [n] = x(m) exp i 2


avec x(m) = x(mTe ) = x
N

m=0
fe

N valeurs de X[n] sont calcules pour n allant de 0 N-1.


Attention aux indices car Matlab nadmet pas des indices (numros de lignes ou colonnes de matrices)
infrieurs 1. Pour viter les boucles for, il est souhaitable de raliser le calcul sous forme matriciel :
X=Wx (cf cours de TNS).
Commentez les graphes obtenus pour N=4 et fe=4Hz (cf TD de TNS).
A noter que la fonction fft de Matlab permet la calcul de la transforme de Fourier discrte par un
algorithme de transforme rapide.

3-3) Figures de Lissajou


Pour crer des figures de Lissajou, il faut tracer une fonction sinus de frquence f1 en fonction dune
autre fonction sinus de frquence f2 (les deux frquences f1 et f2 tant proportionnelles) dont le
dphasage avec la premire sinusode peut varier. Vous pouvez ainsi crer des graphes anims en
ritrant plusieurs graphes avec un dphasage qui varie de faon linaire. Utilisez une boucle while ainsi

10

que linstruction pause(0.1) dans cette boucle pour avoir le temps de voir lvolution des graphes. Pour ne
pas tre trop original, vous nommerez votre script lissajou.m
-

Observez par exemple ce qui se passe pour f1=f2=1Hz et un dphasage qui varie de 0 2 par pas
de 0.1radian ; fixer le vecteur temps ainsi : t=0 :0.01 :1 .

Par la suite prenez par exemple f2=2, 3 ou 4 ; cest plus joli.

4) Conclusion

Vous serez vite convaincus que ce logiciel a de nombreux avantages pour tout type de calcul. Parmi les
points forts de MATLAB:
- important nombre de fonctions prdfinies, ce qui permet de raliser des programmes de calculs
complexes en trs peu de lignes de programmation.
- graphisme de trs haute qualit.
- simplicit du langage de programmation.
- les paramtres nont pas tre dclars; ceci est un avantage et un inconvnient car vous
pouvez commettre des erreurs en utilisant deux fois le mme nom de variable dans un programme.

11

12

TP 2 : ANALYSE ET SYNTHSE DE SIGNAUX PRIODIQUES

1) INTRODUCTION

Le but de ce TP est dtablir la correspondance entre le spectre en amplitude dun signal


priodique et son dveloppement en srie trigonomtrique. Ceci doit permettre dans un second temps de
synthtiser diffrents signaux priodiques partir du relev de leurs spectres.
Nous allons prsent rappeler quelques gnralits sur lanalyse de Fourier. La dcomposition en
srie de Fourier dun signal priodique de priode T0 (ou dure limite sur un intervalle T0) scrit :

x(t ) =

n =

t
exp i 2n
T0

(1)

x(t) : signal priodique de priode T0.


xn : coefficients de Fourier de x(t).
Ces coefficients donnent une reprsentation en frquence ou spectrale du signal. Pour passer de la
reprsentation temporelle la reprsentation spectrale, on utilise la formule suivante :

xn =

1
t
x(t ) exp i 2n dt

T0 [T0 ]
T0

(2)

1/T0 : reprsente une frquence appele fondamentale, et de manire plus gnrale on nomme nime
harmonique la frquence correspondant n/T0.
Prenons une fonction cosinus comme exemple pour calculer le spectre dun signal priodique partir des
sries de Fourier :

t
x(t ) = A cos 2
T0

(3)

T0 : priode
A : amplitude
En utilisant lquation (2) pour calculer les coefficients de Fourier, nous obtenons :
xn=A/2 pour n=1 et xn=0 pour n diffrent de 1
Le spectre en amplitude est donn par la norme de xn et peut tre trac de la faon suivante :

13

On remarque que ce signal priodique nest constitu que dune fondamentale, il est monochromatique.
Le domaine des frquences ngatives na aucune signification physique, il est d aux fonctions
exponentielles complexes introduites dans la dfinition des sries de Fourier. Pour les signaux rels,
le spectre en amplitude sera toujours une fonction paire. Les analyseurs de spectre dlivrent plus
gnralement le spectre en puissance qui est reprsent ci-dessous dans le cas de la fonction cosinus

Cette reprsentation permet de faire un calcul trs simple de la puissance moyenne totale par le
thorme de Parseval :

P=

1
T0

T0

x 2 (t )dt =

n =

xn2

(4)

Le rsultat P=A2/2 est alors immdiat partir du spectre reprsent prcdemment.

14

Relations entre la srie de Fourier et la dcomposition en srie trigonomtrique.


Pour obtenir la relation entre les coefficients xn et les coefficients en cosinus (an) et les
coefficients en sinus (bn), on remplace la fonction exponentielle complexe dans la formule (1) par cosinus
+ i sinus. Ensuite, on identifie le rsultat obtenu avec le dveloppement en srie trigonomtrique donn
ci-dessous :
+

t +
t
x(t ) = a0 + a n cos 2n + bn sin 2n
T0 n=1
T0
n =1

(5)

On obtient alors la relation suivante entre les coefficients xn et les valeurs de an et bn :

xn =

an ibn
2

x0 = a0 =

1
T0

pour n diffrent de 0.

[ T0 ]

(6)

x (t )dt

Les relations donnant les valeurs de an et bn sont obtenues partir des quations (6) et (2) :

an =

2
t

dt
x
(
t
)
cos
2

T0 [ T0 ]
T
0

(7)

bn =

2
t
x ( t ) sin 2n dt

T0 [ T0 ]
T0

(8)

Les coefficients an et bn ne sont dfinis que pour des valeurs de n positives. Dans le cas des signaux rels
( partie imaginaire nulle) une relation simple provenant de la proprit de symtrie hermitienne permet
de calculer les coefficients xn pour des indices n ngatifs partir des valeurs de xn pour n positif :

x n = x n*
En appliquant ces relations notre signal sinusodal, le seul coefficient diffrent de 0 est a1=A. Ce
rsultat sobtient galement de faon trs simple dans ce cas particulier en identifiant les quations (3) et
(5).

Relation entre la transforme de Fourier et les coefficients de Fourier pour les signaux priodiques.

Il est galement possible de calculer la transforme de Fourier pour un signal priodique de priode T0, le
rsultat obtenu donne en ralit les mmes informations que les coefficients de Fourier, ceci va tre
dmontr prsent :

15

X ( f ) = x(t ) exp( i 2ft )dt

n
t exp( i 2ft )dt
exp i 2

T
n =
0

n
= x n exp i 2 f t dt

T0
n =

+ +

(9)

x f T

n =

Proprits de la srie trigonomtrique :

Il existe de nombreux cas o les coefficients an et bn se calculent trs rapidement :


a) pour un signal rel et pair tous les coefficients bn sont nuls seuls les coefficients an sont diffrents de
zro.
b) pour un signal rel et impair tous les coefficients an sont nuls seuls les coefficients bn sont non nuls.

Les valeurs de a0 ne suivent pas les conditions prcdentes, a0 reprsente la valeur moyenne du signal.

Travail demand

2.1) Calcul des coefficients en srie trigonomtrique


Calculer les coefficients en srie trigonomtrique des signaux suivants, prenez soins bien
relever les priodes des signaux (attention laxe des abscisses est donn en millisecondes):
a) Sinusode redresse

Montrer que :

an =

40

1 (2n )

, a0 =

20

et bn=0 pour tout n.

16

b) Rampe

Montrer que:

bn = 10

cos(n )
n

et an=0 pour tout n.

c) Signal modul en amplitude

Ce dernier signal peut tre modlis par l'quation:

y (t ) = (1 + m cos( 2f m t )) cos( 2f p t )
avec fm=1 kHz: frquence du signal modulant, fp=8kHz: frquence de la porteuse, m indice de modulation
fix arbitrairement 0.5 dans le cas prsent. Pour trouver la dcomposition en srie trigonomtrique de

17

ce signal, il n'est pas ncessaire d'utiliser les formules 7 et 8 pour calculer les coefficients an et bn, il
suffit de dvelopper le produit des fonctions cosinus apparaissant dans l'quation prcdente. Le signal
y(t) peut alors s'exprimer comme la somme de fonctions cosinus, on ralise donc aussi la dcomposition
de ce signal en somme de plusieurs sinusodes que l'on peut appeler srie trigonomtrique.
-

Dterminer la priode du signal modul ainsi que les coefficients de Fourier.

d) Peigne de Dirac
Le peigne de Dirac a t tudi en cours et nous avons dtermin la transforme de Fourier de ce signal
et donc ses diffrents coefficients de Fourier.
-

Calculer les coefficients de Fourier dun peigne de Dirac de priode gale 1 seconde.

En dduire les valeurs des coefficients a0, an et bn.

2-2) Synthse de signaux priodiques partir des valeurs de an et bn prcdemment obtenues.

Ralisez des fonctions que vous nommerez sinred.m, rampe.m, modam.m et dirac.m pour raliser la
synthse par srie trigonomtrique des fonctions sinus redresse, rampe, cosinus modul en amplitude
par un cosinus, et peigne de Dirac. Les arguments dentre de ces fonctions seront :
-

N : le nombre de sinusodes sommer

T0 : la priode de la fonction.

Il ny a pas dargument de sortie, il faut simplement tracer les reprsentations temporelles et


frquentielles : x(t) et |X(f)|
Pour cela, les signaux seront donc gnrs partir dun vecteur temps t de 1000points rpartis sur
lintervalle [0, 2T0] grce la formule suivante :
N

t N
t
x(t ) = a0 + an cos 2 n + bn sin 2 n
T0 n =1
T0
n =1

Pour chaque fonction il faudra calculer les valeurs pour an, bn et a0. C'est ainsi que l'on pourra synthtiser
de faon exacte ou de manire approche les signaux a),b),c),d) partir de leurs dcompositions en srie
trigonomtrique.

- Pour les signaux a) et b), relevez et commentez l'volution des ondulations prsentes sur les
signaux synthtiss x(t) au fur et mesure que vous augmentez le nombre N de sinusodes. En dduire
l'origine de ces ondulations qui constituent ce qu'on appelle l'effet Gibbs. Comment expliquez vous que
ces ondulations soient plus importantes sur la rampe que sur le sinus redress. Pour vos explications,
basez-vous sur les spectres des signaux gnrs.

18

- Pour le signal c), vrifiez que le signal que vous obtenez par synthse de plusieurs sinusodes
correspond exactement celui reprsent dans l'nonc.

- Pour bien visualiser leffet Gibbs et son volution avec le nombre N de sinusodes ajoutes,
crer dans la fonction Dirac une animation obtenue en r initialisant dans une boucle while le graphe
obtenu pour le tracer de x(t) au fur et mesure que N augmente. Expliquer en conclusion pour quelles
raisons il est impossible de gnrer un peigne de Dirac ou une impulsion de Dirac.

19

20

TP 3 : UTILISATION DE LA TFD
POUR LANALYSE SPECTRALE DE SIGNAUX

1) Introduction

Le but de ce TP est dinterprter correctement les rsultats obtenus par le calcul dune transforme
de Fourier discrte dans le cas de signaux priodiques. Il faudra pouvoir lier ces rsultats aux
coefficients de Fourier et la transforme de Fourier du signal chantillonn. A titre dillustration on
traitera des cas simples de signaux priodiques et on verra tout lintrt de lanalyse spectrale sur des
signaux priodiques bruits. Nous verrons comment le choix de la frquence dchantillonnage et du
nombre dchantillons influe sur les spectres obtenus. Pour des rappels sur lanalyse de Fourier de
signaux priodiques, reportez vous lintroduction du TP 2. On peut facilement exprimer la transforme
de Fourier X(f) partir des coefficients de Fourier xn pour un signal priodique x(t) :

X( f ) =

n =

avec

T0 : la priode de x(t)

et

: limpulsion de Dirac ou impulsion unit

x f T
n

(1)

En thorie, chantillonner le signal x(t) revient le multiplier par un peigne de Dirac Te(t) de priode
gale la priode dchantillonnage Te. On notera xs(t) le signal chantillonn, il scrira en fonction de
x(t) sous la forme :
+

xs (t ) = x(t ) Te (t ) = x(t ) (t nTe )

(2)

n =

La transforme de Fourier de xs(t) (Xs(f)) scrira alors comme le produit de convolution de X(f) avec la
transforme de Fourier du peigne de Dirac qui est galement un peigne de Dirac :

X s ( f ) = X ( f ) f e fe ( f )
= fe

X ( f nf )

n =

(3)

La simplification opre pour passer de la premire la deuxime ligne de lquation (3) est due la
proprit dlment neutre de limpulsion de Dirac pour la convolution. La figure suivante illustre la
relation existant entre X(f) et Xs(f). Attention la fonction Xs(f) tant priodique de priode fe, il est
impossible de la reprsenter dans son intgralit (de - +).

21

Cette figure montre bien quil est ncessaire dchantillonner le signal une frquence fe suprieure ou
gale 2 fois la bande limite du signal B de manire viter un recouvrement de spectre (thorme de
Shannon). On comprend ds lors lintrt dun filtre anti-repliement placer avant lchantillonneur pour
limiter le spectre du signal. On conoit galement quune simple opration de filtrage passe-bas puisse
permettre de reconstruire le signal

initial partir de ces chantillons. La figure prcdente montre

galement une proprit importante de Xs(f) : la priodicit.


La transforme de Fourier discrte (X[n]) de x(t) est directement lie la transforme de Fourier du
signal chantillonn (Xs(f)) par la relation suivante :

n N 1
mn

X [n] = X s f = = x(t m )exp i 2

T0 m=0
N

(4)

Cette quation sobtient en simplifiant lexpression de la transforme de Fourier de xs(t) calcule en


f=n/T0. T0 dsigne ici le temps de mesure du signal, N reprsente le nombre de points chantillonns sur
cette dure, et tm=mte o te est la priode dchantillonnage qui correspond T0/N. La majeure partie des
problmes danalyse spectrale par calcul de transforme de Fourier discrte proviennent de cette
limitation de dure du signal qui est videmment indispensable. En effet limiter la dure de x(t) revient
multiplier x(t) par une fonction porte de largeur gale T0. X(f) sera alors convolu par la transforme de
Fourier de cette fonction porte qui est un sinus cardinal. Au lieu davoir un spectre de raies pour un
signal priodique on aura des fonctions sinus cardinales prsentant diffrents lobes (un lobe principal ou
central et des lobes secondaires) qui donnent lieu leffet Gibbs. Les problmes de rsolution spectrale
en analyse par transforme de Fourier discrte sont lis au recouvrement possible de ces lobes.
A titre dexemple, prenons le cas dune fonction cosinus de frquence et damplitude unit :

x(t ) = cos ( 2 f1t ) avec f1 = 1Hz


X(f ) =

1
( ( f f1 ) + ( f + f1 ) )
2

22

Le spectre en amplitude de ce signal priodique est donc form dune impulsion de Dirac dans les
frquences positives situe en f1=1Hz. Pour calculer une TFD sur ce signal, on est amen limiter le
nombre dchantillons du signal, donc la dure de celui-ci. On note alors x`(t) le signal x(t) limite un
intervalle de temps allant de 0 T0:

T
x '(t ) = x(t )rT 0 t 0 avec T0 = 1s
2

T
T
X '( f ) = 0 sin c ( ( f f1 ) T0 ) exp ( i ( f f1 ) T0 ) + 0 sin c ( ( f + f1 ) T0 ) exp ( i ( f + f1 ) T0 )
2
2
Le spectre en amplitude du signal limit en dure laisse alors apparatre des pics ou lobes dont le plus
important est situ f1=1Hz.

Aprs chantillonnage de ce signal limit lintervalle [0,T0[, le spectre du signal devient priodique de
priode fe. Ce spectre est dtermin partir de la transforme de Fourier du signal chantillonn donn
par :

X s ( f ) = fe

X ' ( f kf )

k =

La TFD correspond une ensemble dchantillons prlevs sur la transforme de Fourier du signal
chantillonn calculs par :

n N 1
mn

X [n] = X s f = = x(t m )exp i 2

T0 m=0
N

23

N correspond aux nombres dchantillons prlevs sur x(t) sur [0, T0[ avec une priode dchantillonnage

te =

T0
. N correspond aussi au nombre dchantillons prlevs sur Xs(f) sur [0, fe[ avec un pas appel
N

rsolution spectrale qui vaut : f =

1
. Ce dernier rsultat dcoule directement de lexpression de X[n]
T0

donne prcdemment, on vrifie bien quen prenant N chantillons distants de 1/T0, on couvre bien une
gamme de frquence gale fe : f e =

N
.
T0

Dans notre exemple, nous avons choisi N=8 et fe=8Hz. Voici ce que nous obtenons dans ce cas au niveau
des spectres.

Dans lexemple que nous venons de traiter, nous avons particulirement bien choisi la frquence
dchantillonnage fe et la dure de mesure T0.
En effet, fe respecte le thorme de Shannon fe>2f1 et T0 est un multiple de la priode du signal ce qui
nous permet davoir la frquence du signal f1 multiple entier de la rsolution spectrale f. Lorsque ces
deux conditions sur fe et T0 sont satisfaites, il est possible dtablir la relation suivante entre les
coefficients

xn =

de

Fourier

du

signal

priodique

et

la

transforme

de

Fourier

discrte :

X [ n]
sur l'intervalle [0, f e / 2[ . En toute rigueur xn dsigne ici les coefficients de Fourier de la
N

rptition priodique de x`(t), il faut donc ncessairement que T0 soit gale la priode de x(t) ou alors
un multiple entier de celle-ci. Dans le cas contraire, il est impossible dtablir un lien entre les rsultats
de la TFD et les coefficients de Fourier ou la transforme de Fourier du signal priodique. Cest ce que

24

nous pouvons observer au travers de l'exemple suivant dans lequel pour le mme signal priodique, nous
avons choisi une dure de mesure T0 diffrente dun multiple entier de la priode.

Pour ces spectres, la dure de mesure a t choisie gale T0=1.3s. La frquence de la fonction cosinus
est toujours de 1Hz et 8 chantillons sont prlevs sur la dure T0.
Dans ce cas, on voit bien que la troncature du signal et le repliement d lchantillonnage modifie
fortement les rsultats obtenus par TFD et on na plus de relation directe entre les coefficients de
Fourier et la TFD.

25

2) Travail demand

2-1) Analyse dune fonction cosinus

Crer une fonction similaire au script tfd que vous avez fait au TP1 qui aura pour but de tracer la
reprsentation temporelle x(t) ainsi que le spectre sous 3 reprsentations complmentaires :
1) partie relle du spectre obtenu par calcul de la transforme de Fourier discrte en fonction
des frquences
2) partie imaginaire
3) module
Pour tracer ces 4 graphes, il faut bien sur dfinir la fonction tudier et les conditions dchantillonnage.
On choisit danalyser une fonction cosinus, il faudra fournir son amplitude et sa frquence ainsi que la
frquence dchantillonnage fe et la dure de mesure T0 comme paramtres dentres de votre
programme. Si vous voulez par exemple tudier un signal de frquence 3kHz et damplitude 0.2 avec une
frquence dchantillonnage 30kHz et une dure de mesure 1ms, il faudra taper tfd(3000,0.2,30000,0.001)
pour obtenir les 4 graphes donnant les reprsentations temporelles et spectrales du signal.
NB :

- pour calculer la transforme de Fourier discrte vous pouvez utiliser linstruction fft.
- utiliser toujours de prfrence linstruction stem plutt que plot.

Expliquer comment vous allez calculer le vecteur temps ncessaire la reprsentation temporelle du
signal.

Expliquer comment vous allez calculer le vecteur des frquences ncessaire pour pouvoir reprsenter
le spectre.

En reprenant lexemple donn prcdemment expliquez comment vous pouvez exploiter le spectre
pour retrouver lamplitude et la frquence du signal.

Dterminer les valeurs minimales de fe et T0 qui permettent dobtenir un spectre exploitable pour
ltude dun signal dfini par

x(t ) = 5 cos(100t ) , jentends par spectre exploitable un spectre partir

duquel il est possible de dterminer lamplitude et la frquence du signal sans aucune ambigut. Il est
bien sr souhaitable de donner les graphes obtenus pour les valeurs de fe et T0 choisies.
-

Expliquer pourquoi lorsque vous tapez tfd(1000,1,1050,0.04) vous observez une reprsentation
temporelle du signal qui laisse penser que le signal a une priode de 0.02s. Commenter et
interprter galement le spectre obtenu.

26

2.2)

Analyse dune fonction cosinus bruite

Reprenez la fonction tfd prcdente en rajoutant cette fois la fonction cosinus du bruit obtenu grce
linstruction randn qui permet de gnrer des nombres alatoires qui suivent une loi gaussienne. Pour
raliser

cette

addition,

il

faudra

par

exemple

sommer

la

fonction

cosinus

un

vecteur

ab*randn(1,length(t)) o ab dsigne lamplitude du bruit et length(t) la longueur du vecteur temps not t.


La variable ab devra tre fournie comme paramtre dentre de la fonction tfd. Au niveau des graphes
tracer, contentez vous prsent de reprsenter le signal en fonction du temps et le spectre en amplitude
(reporter uniquement le module et pas les parties relles et imaginaires).
Si vous voulez par exemple tudier un signal sinusodal de frquence 3kHz et damplitude 0.1 bruit par la
fonction randn damplitude 0.1 et chantillonn une frquence dchantillonnage 100kHz sur une dure
de mesure 1ms, il faudra taper tfd(3000,0.1,0.1,100000,0.001) pour obtenir les 2 graphes donnant les
reprsentations temporelles et spectrales du signal.
- Observer et commenter les graphes obtenus pour le signal pris comme exemple auparavant en
choisissant pour ab diffrentes valeurs : 0.01, 0.05 et 0.1. Essayer dans chaque cas dexploiter les
deux reprsentations (temporelles et frquentielles) pour en extraire lamplitude et la frquence de la
sinusode, quelles conclusions peut-on en tirer quant lintrt de ltude frquentielle dun signal.

2.3)

Analyse dune somme de sinusodes

Reprenez la fonction tfd prcdente en remplaant cette fois le bruit par une deuxime fonction cosinus.
Pour raliser cette addition, il faudra par exemple sommer la fonction cosinus de dpart un vecteur
a2*cos(2*pi*f2*t) o a2 et f2 dsignent lamplitude et la frquence de la deuxime sinusode. Les variables
a2 et f2 devront tre fournis comme paramtres dentre de la fonction tfd.
Si vous voulez par exemple tudier une somme dun signal sinusodal de frquence 3kHz et damplitude
0.1 et dune fonction cosinus de frquence 3.3kHz et damplitude 0.05 chantillonne une frquence
dchantillonnage

100kHz

sur

une

dure

de

mesure

1ms,

il

faudra

taper

tfd(3000,0.1,3300,0.05,100000,0.001) pour obtenir les 2 graphes donnant les reprsentations temporelles


et spectrales du signal.
-

Observer et commenter les graphes obtenus dans lexemple prcdent. Essayer dextraire de ces
graphes les amplitudes et frquences des deux sinusodes.

Quel est le paramtre dchantillonnage modifier pour pouvoir extraire correctement les
amplitudes et frquences des deux sinusodes. Reprsenter et exploiter les graphes alors obtenus.

En guise de conclusion gnrale ce TP donner les points forts de lanalyse frquentielle de signaux
priodiques par transforme de Fourier discrte.

27

28

TP 4 : UTILISATION DE LA TFD
POUR LESTIMATION DUNE FONCTION DE CORRLATION

1) Introduction

Un signal alatoire X(t,) est dfini chaque instant t1,t2,t3, par sa loi de probabilit temporelle:
p(x1,x2,x3,,t1,t2,t3,). Il existe un grand nombre de lois de probabilit dont la loi gaussienne et la loi
uniforme:

loi gaussienne :

loi uniforme :

( x mx ) 2
1
p ( x) =
exp

2
2

x x
p( x) = sup inf
0

sur un intervalle xinf , xsup


ailleurs

Il est possible de gnrer les signaux alatoires partir de variables alatoires qui suivent ces lois de
probabilit. On peut ainsi gnrer des bruits en prenant comme modle:

Y (t , ) = Y (t , X ) = aX + b
avec X une variable alatoire gaussienne ou uniforme, et a et b des constantes qui permettent de
paramtrer la puissance moyenne totale, la variance ou encore la valeur moyenne du signal Y.
Un signal alatoire est dit stationnaire au sens strict si ses proprits statistiques sont indpendantes de
l'origine des temps. Il est stationnaire au second ordre si son moment d'ordre 1 (valeur moyenne
statistique) ne dpend pas de l'instant choisi et si le moment mixte d'ordre 2 (l'autocorrlation statistique)
ne dpend que de : l'cart entre les instants t1 et t2 choisis pour relever les ensembles statistiques.
Ces moments sont calculs partir d'ensembles statistiques forms par des observations du signal en
diffrents instants (t1, t2, ). Pour obtenir des rsultats significatifs, il est donc ncessaire de constituer
des ensembles importants, et pour cela un grand nombre de relevs doit tre entrepris. Il est souvent
plus facile de travailler sur un seul relev du signal en fonction du temps et de calculer alors des
moments temporels. C'est ce qui est fait habituellement pour des signaux dterministes, pour les signaux
alatoires, ces moments temporels ne donnent des rsultats significatifs que si on fait l'hypothse
d'ergodicit, c'est dire que les moments ou moyennes temporelles correspondent aux moments
statistiques. Nous allons prsenter les deux principales manires d'estimer numriquement la fonction
d'autocorrlation.

29

Estimation numrique de l'autocorrlation

La fonction d'autocorrlation Rx() est calcule en prenant la valeur moyenne de X(t,) multipli par X(t,). Pour simplifier les critures, les signaux numriss sont le plus souvent exprims en fonction
d'indices prenant des valeurs entires. Par exemple, au lieu d'crire x(tm) avec tm=mte (te: priode
d'chantillonnage),

on

prfre

crire

x(m).

Ainsi,

pour

estimer

numriquement

la

fonction

d'autocorrlation, on pose simplement le calcul d'une valeur moyenne sur lensemble de N chantillons
qui constituent x(m):

r1 ( p ) =

1
N

N 1
m= p

x(m)x* ( m p ) pour 0 p N 1

(4.1)

Lorsque p tend vers N-1, peu de termes interviennent dans le calcul de la moyenne alors que le terme de
normalisation reste constant 1/N. Cela a pour consquence d'introduire un biais dans l'estimation:
l'autocorrlation est pondre par une fentre triangulaire.

Pour liminer le biais, un second estimateur peut tre dfini de la faon suivante:

1
N 1
x(m)x * (m p) pour 0 p N 1

m= p
Np

r2 ( p) =

(4.2)

L'avantage de cet estimateur est son absence de biais, mais sa variance devient importante lorsque p
tend vers N-1. Les fonctions de corrlation qui vont tre calcules par la suite permettront de saisir les
notions de biais et de variance dun estimateur.

Utilisation de la TFD pour calculer ces estimes.

Pour calculer une fonction de corrlation numrique, il est plus intressant de passer dans le domaine
frquentiel au moyen de la TFD pour des signaux prsentant plus de 80 chantillons car les oprations sont
moins nombreuses donc plus rapides excuter. Lutilisation de la TFD est base sur le thorme de
Plancherel qui dit que la transforme de Fourier dun produit de convolution de deux signaux donne le
produit simple de la transforme de Fourier des deux signaux :

TF ( x(t ) * y(t ) ) = X ( f )Y ( f )

Il est possible dutiliser ce thorme pour estimer la fonction dautocorrlation car cette dernire
renferme une convolution : R x ( ) = x ( ) * x ( )
*

Si on applique cette dernire relation au cas dun signal numrique sur lequel on essaie de calculer
lestimateur biais de lautocorrlation, on obtient :

r1 ( p ) =

1
N

N 1
m= p

x (m)x* (m p ) =

1
x ( p ) * x* ( p ) )
(
N

ou * dsigne la convolution linaire dfinie par: x( p) * y ( p) = m =0 x(m) y ( p m)


N 1

avec y ( p - m) = 0 pour ( p - m) est en dehors de l'intervalle [0, N -1]


La difficult pour les signaux numriques est quil existe deux dfinitions de la convolution : la
convolution cyclique et la convolution linaire. La convolution cyclique est dfinie par la relation :

30

N 1

x( p ) * y ( p ) = x( m) y ( p m) en imposant une priodicit N pour les signaux x et y


m=0

La

de manire pouvoir calculer les valeurs de y (m - p ) lorsque m - p < 0 ( y (m - p ) = y (m - p + N )


convolution cyclique prsente la proprit suivante :

TFD ( x ( p ) * y ( p )) = TFD ( x ( p )).TFD ( y ( p )) , ce qui permet de raliser cette opration de la manire


suivante :

x( p) * y ( p) = TFD 1 (TFD( x( p)).TFD( y ( p)) ) o TFD -1 dsigne la TFD inverse.


Cette dernire galit ntant pas applicable la convolution linaire, une manire de contourner le
problme pour pouvoir utiliser la TFD afin de calculer une convolution linaire est de rajouter N zros
aux signaux x et y. La convolution linaire de deux signaux x et y de N chantillons chacun peut donc
tre calcule de la manire suivante :

x( p) * y ( p) = TFD 1 (X 'Y '

) avec X' et Y' correspondant : X ' = TFD( x + N 0)

Y ' = TFD( y + N 0) Les deux

estimes de lautocorrlation peuvent donc tre calcules de la manire suivante :

((

) )

1
TFD 1 X ' X '* ( p)
N
1
r2 ( p) =
TFD 1 X ' X '* ( p)
Np

r1 ( p) =

((

) )

(4.3)

Ces deux estimes sont obtenus directement sous Matlab grce la fonction xcorr :

[r1, p ] = xcorr ( x, x, ' biased ' )

pour l' estimateur biais

[ r 2, p ] = xcorr ( x, x, ' unbiased ' ) pour l' estimateur non biais

(4.4)

r1 et r2 sont les deux vecteurs renfermant les deux estimes ; p reprsente un vecteur qui contiendra les
valeurs entires allant de (N-1) (N-1) et va servir pour calculer laxe des abscisses ncessaire
reprsenter les autocorrlations. Les valeurs de r(p) pour des valeurs de p ngatives sont obtenues grce
la proprit de priodicit des autocorrlations estimes avec la TFD.

2) Travail demand

a) Autocorrlation d'une sinusode


Ecrivez un fonction que vous nommerez autocor.m et dans laquelle vous gnrez par exemple un signal
sinusodal d'amplitude 1 de frquence 0.1Hz chantillonn une frquence de 1Hz en 50 points en partant
de 0s. Les paramtres dentre seront : lamplitude et la frquence de la sinusode, la frquence
dchantillonnage et le nombre dchantillons. On considrera que le vecteur temps part de 0. Pour traiter
lexemple prcdent, il faudra taper : autocor(1,0.1,1,50).
-

La fonction devra effectuer les calculs et tracs des estimations biases et non biaises de ce
signal par les diffrentes formules donnes auparavant : 4.1, 4.2, 4.3 et 4.4. Vrifier que vous

31

obtenez les mmes rsultats par ces trois mthodes pour les deux estimations. Ne passer pas plus
dune heure sur cette partie car lessentiel du TP nest pas l. Par la suite, on se contentera de
calculer et tracer uniquement les deux estimes obtenues avec linstruction xcorr.
-

Tracer et comparer les estimations biaises et non biaise de lautocorrlation du signal pris
comme exemple auparavant.

Exploiter ces tracs pour retrouver les caractristiques du signal, savoir la puissance moyenne
totale et la frquence.

Sachant que la puissance moyenne totale est donne par la fonction d'autocorrlation en zro,
donnez l'expression de l'estime numrique de la puissance moyenne totale partir des
estimateurs biais et non biais de l'autocorrlation. Calculer l'estime la puissance moyenne
totale du signal et confronter votre rsultat la thorie.

b) Autocorrlation d'un bruit blanc


Sous Matlab comme dans la plupart des langages de programmation, il existe un gnrateur de nombres
alatoires qui permet de modliser un bruit chantillonn. Matlab propose deux types de gnrateur: rand
et randn.
-

En comparant les histogrammes obtenus pour ces deux bruits en tapant hist(rand(1,1000)) et
hist(randn(1,1000)) donnez les diffrences essentielles des deux gnrateurs.

Calculer l'estime de la puissance moyenne totale du signal obtenu partir de l'instruction


randn(1,1000).

Calculer galement l'estime de la valeur moyenne du mme signal.

Comment partir dun ensemble de variables alatoires qui suivent une loi de distribution
gaussienne de moyenne nulle et de variance 1 est-il possible de gnrer un signal alatoire de
moyenne a et de variance b ?

Remplacer dans la fonction autocor le signal sinusodal par un bruit blanc gaussien. Les
paramtres fournir seront la valeur moyenne, la variance du bruit ainsi que le nombre
dchantillons. Par exemple, pour gnrer 100 chantillons d'un bruit blanc gaussien de valeur
moyenne 2 et de variance 3, il faudra taper : autocor(2,3,100). La frquence dchantillonnage
sera prise gale 1Hz dans tous les cas.

Tracer et comparer les estimations biaises et non biaise de son autocorrlation pour lexemple
choisi auparavant.

Expliquer comment utiliser ces tracs pour extraire la valeur moyenne, la puissance moyenne
totale et la valeur efficace du signal.

Recommencer avec 1000 chantillons, commenter lvolution des rsultats.

32

c) Autocorrlation d'un sinus bruit


Rajoutez prsent dans la fonction autocor.m des instructions pour gnrer et tracer un sinus bruit par
un bruit blanc gaussien centr. On prendra comme exemple un sinus damplitude 1 et de frquence 0.1Hz
constitu de 500 chantillons relevs une frquence de 1Hz.
-

Sachant que l'on dsire un rapport signal sur bruit de 0dB, en dduire la variance du bruit blanc.

Commenter le trac du signal bruit, peut-on dterminer lamplitude et la frquence de la fonction


sinus ?

Tracer et commenter les estimations biaises et non biaises de son autocorrlation

Exploiter ces tracs afin de retrouver la puissance moyenne totale du bruit, du sinus et la
frquence du sinus.

33

34

TP 5 : FILTRAGE ANALOGIQUE

But du TP : Il s'agit de voir comment utiliser Matlab pour concevoir et simuler un filtre analogique, ceci
se fera au travers d'une application particulire concernant la modulation bande latrale unique (BLU).

1) Gnralits sur la modulation bande latrale unique


La modulation BLU est utilise par les cibistes, certain radio amateurs, en communication militaire
ainsi quen tlphonie pour concentrer plusieurs voies de manires analogique. Les principaux avantages
de ce mode de transmission sont le faible encombrement spectral et par voie de consquence la faible
puissance ncessaire l'mission.
Rappelons ci-dessous le spectre d'un signal modul en amplitude sans porteuse dans le cas d'un
message sinusodal

m ( t ) de frquence f m . Il est possible de montrer que ce signal peut tre obtenu par

le produit simple de la porteuse Ap cos 2 f p t

) par le signal modulant A

cos ( 2 f mt ) .

Les informations qui caractrisent le message modulant que l'on veut transmettre sont sa frquence f m
et son amplitude Am . Aprs modulation ces informations sont contenues dans les raies situes en f p + f m
et f p f m . En ralit, les raies f p + f m et f p f m contiennent les mmes informations. Ceci veut donc
dire qu'il est inutile de transmettre simultanment les deux raies situes en f p + f m et f p f m ; ces deux
raies constituent dans ce cas particulier ce qu'on appelle plus gnralement les bandes latrales

suprieure et infrieure.
La modulation BLU consiste filtrer le signal modul en amplitude de manire ne transmettre qu'une
seule bande latrale (BLI ou BLS suivant la bande slectionne: Infrieure ou Suprieure respectivement).
Un avantage essentiel est que la bande transmettre est rduite de moiti par rapport aux modulations
AM (avec ou sans porteuse) pour un message donn. On gagne donc un demi bande qui peut servir
transmettre un autre signal. Par contre le signal est plus difficile dmoduler en raison de l'absence de
porteuse.

35

Le schma de principe qui peut s'appliquer la modulation BLU est donc le suivant:

Le travail qui vous est demand est de simuler les signaux moduls, et de concevoir et vrifier le bon
fonctionnement du filtre passe-bande. Nous vous donnerons donc dans un premier temps les principaux
types de filtres analogiques qu'il est possible de concevoir avec Matlab.

2) Caractristiques des filtres analogiques


Nous donnerons dans un premier temps les caractristiques des fonctions de transfert des
diffrents types de filtre pour des passe-bas.

2.1) Filtres de Butterworth


Un filtre de Butterworth d'ordre n de type passe-bas sera dfini par une fonction de transfert H() qui
vrifie l'quation suivante:

H ( ) =

1 +
0

2n

0 reprsentant la pulsation de coupure 3dB.


Ces filtres ne prsentent pas d'ondulations en bande passante ni en bande attnue.

2.2) Filtres de Tchebycheff


Il existe deux types de filtres de Tchebycheff, not type 1 et type 2.
Pour le type 1, la fonction de transfert est donne par lquation :

H( f ) =
2

avec

1
1 + Tn2 ( f )

cos(n arccos( x)) pour x < 1


Tn( x) =
cosh(n arg cosh( x)) pour x > 1

Pour le type deux, la fonction de transfert est donne par :

H( f ) =
2

1
1 + T ( f a ) / Tn2 ( f )

2
n

f a reprsente la frquence de dbut de bande attnue.

36

Les filtres de Tchebycheff prsentent :


- soit une ondulation en bande passante mais pas en bande attnue (filtre de type 1)
-

soit une ondulation en bande attnue mais pas en bande passante (filtre de type 2)

Londulation en bande passante vaut 1 / 1 + . Les caractristiques des filtres de Tchebycheff sont
meilleures en attnuation que celles des filtres de Butterworth.
2

2.3)

Filtres de Cauer ou filtres elliptiques

Ils sont optimaux en terme de bande de transition et ont pour gain :

H( f ) =
2

1
1 + R n2 ( f , L)

Rn est une fonction rationnelle de Tchebycheff et o L caractrise lattnuation. Les filtres de Cauer

prsentent des ondulations en bande passante et en bande attnue. La valeur de londulation en bande
attnue vaut

1/ 1 + 2 .

3) Travail demand
3.1) Simulation et analyse du signal modul en amplitude sans porteuse YAM ( t )
Crez un script que vous nommerez filtanal.m dans lequel vous allez gnrer le signal
correspondant au produit du signal modulant

YAM ( t )

m(t ) = cos(2f m t ) avec la porteuse p (t ) = cos(2f p t ). On

choisit les frquences suivantes: fm=1kHz et fp=100kHz, et le calcul du signal

YAM ( t ) se fera sur un

vecteur temps dfini par:


t=0:te:(N-1)te avec te=4/fm/N et N=5000.
Ce script devra permettre le trac de 2 graphes sur une mme figure :
- le premier correspondant

YAM en fonction de t.

- le second pour le spectre calcul avec l'instruction fft:

YAM en fonction de la frquence.

- Expliquez comment vous gnrez le vecteur des frquences


- Interprter le spectre obtenu en le confrontant ce que prdit la thorie (utilisez le zoom pour bien
visualiser toutes les raies).

3.2) Synthse d'un filtre passe-bande


On fixe le gabarit suivant pour le filtre passe-bande devant slectionner la bande latrale infrieure et
liminer la bande latrale suprieure.

37

Rp=3dB

Rs=30dB

fP1=95kHz

fP2=100kHz

fS2=100.6kHz

fS1=94.4kHz

Utilisez les instructions cheb1ord et cheby1 pour trouver la fonction de transfert du filtre correspondant
au gabarit prcdent. Attention les anglophones appellent frequency ce que nous appelons pulsation et qui
correspond = 2f .
Ne crez pas une nouvelle fonction *.m, rajoutez les instructions ncessaires l'obtention de la fonction
de transfert du filtre dans le fichier filtanal.m. Vrifiez que ce que vous avez obtenu pour le filtre passe
bande rpond bien au gabarit demand en traant le module du gain du filtre (en dB) en fonction de la
frquence en utilisant les instructions freqs et tf.

3.3) Simulation et vrification du fonctionnement du filtre passe-bande.


Pour vrifier prsent le bon fonctionnement du filtre passe-bande, nous allons rajouter certaines
instructions dans le fichier filtanal.m pour tracer dans la mme figure sur 4 axes diffrents les
reprsentations temporelles et frquentielles des signaux

YAM et YBLI .(nous garderons le signal YAM ( t )

simul prcdemment.
Pour gnrer le signal YBLI , utilisez l'instruction lsim.
- Observez et commentez les reprsentations temporelles et frquentielles du signal modul.
- Mme question lorsque vous remplacez le signal modulant

m ( t ) par la somme de 2 fonctions

cosinus de frquences 1 et 2 kHz.


- Interprtez l'volution des rsultats lorsque vous diminuez progressivement le nombre N de valeurs
utilises pour la simulation. Prenez successivement les valeurs N=2000, N=1000 et N=500.

38

39

40

41

42

43

TP 6 : FILTRAGE NUMRIQUE

1) Introduction
La transforme en z est utilise pour modliser les oprations effectues dans le domaine des signaux
chantillonns. Le filtrage numrique peut ainsi se formuler par :

Y ( z) = H ( z) X ( z)

(1)

avec H(z) la fonction de transfert en z du filtre numrique qui peut scrire sous la forme :
N 1

H ( z) =

b
k =0
M

z k

1 + al z

(2)
l

l =1

La formule (1) peut ainsi se ramener une quation aux diffrences :


N 1

k =0

l =1

y ( n) = bk x ( n k ) a l y ( n l )

(3)

On diffrencie principalement deux types de filtre numrique :


-

les filtres rponse impulsionnelle finie (RIF)

les filtres rponse impulsionnelle infinie (RII)

1.1)

Filtres RIF

Ces filtres nont aucun ple, ce qui signifie que tous les coefficients

al pour l suprieur 1 sont nuls. Le

calcul du signal en sortie du filtre y se ramne lexpression :


N 1

y (n) = bk x(n k )

(4)

k =0

y correspond donc au produit de convolution de b par x . x correspond alors la rponse


impulsionnelle du filtre note plus gnralement h . Le nombre de coefficients tant limit, on dit que la
rponse impulsionnelle est finie, do le nom de ce type de filtre.
Les avantages de ces filtres sont :
- la stabilit toujours assure car il ny a pas de ples.
-

la phase qui varie linairement avec la frquence, ce qui introduit un retard constant entre le
signal de sortie et le signal dentre du filtre.

Nous allons prsenter deux manires de calculer les coefficients dun filtre RIF.
a) Synthse dun filtre RIF par srie de Fourier.
On dsire raliser un filtre passe-bas idal de frquence de coupure fc. Etant donn que lon travaille sur
des signaux chantillonns (y(n),h(n),x(n)), les spectres obtenus par transforme de Fourier de ces
signaux seront priodiques de priode gale la frquence dchantillonnage f e . Ce qui explique la forme
donne

H(f ) :

44

Etant donn que

H ( f ) est priodique, on peut calculer son dveloppement en srie de Fourier par :


1
fe

h( n ) =

n
df
H ( f ) exp i 2f
fe / 2
f e

fe / 2

(5)

N.B. : on notera la prsence dun signe + la place dun dans la fonction exponentielle car on passe du
domaine spectral au domaine temporel.

h ( n ) (ou b ( n ) ) pris symtriquement autour de 0, et pour

On se limitera au calcul de N coefficients

rendre le filtre causal, il faut dcaler les indices


donc un dphasage de

n de h ( n ) de manire dmarrer en 0. Ceci introduit

( N 1) fTe et un retard de ( N 1) Te

2 avec Te la priode dchantillonnage (pour

N impair). Pour attnuer leffet GIBBS li la troncature de la rponse impulsionnelle, on utilise


gnralement des fentres de pondration comme celle de Hamming.
b) Echantillonnage en frquence
La mthode prcdente devient difficile appliquer lorsque la forme de
Cette nouvelle mthode permet de fixer nimporte quelle forme pour
N points de

H ( f ) devient plus complique.

H ( f ) . H ( f ) est chantillonne en

f e 2 f e 2 . Les N coefficients h ( n ) sont obtenus par TFD inverse de H ( f ) :

h( k ) =
Le dcalage des indices de

1
N

( N 1) / 2

H (n) exp 2 ik ,
N

n = ( N 1) / 2

k ( N 1) 2, ( N 1) 2

(6)

h ( n ) pour raison de causalit va galement entraner une phase linaire.

Nous allons prsent dfinir les filtres RII.

1.2)

Filtres RII

Les filtres RII sont dfinis par lquation gnrale :


N 1

H ( z) =

b z
k =0
M

1 + al z

(7)
l

l =1

Ce type de filtre peut tre instable si les ples sont situs en dehors du cercle unit. Dautre part la phase
ne varie pas linairement avec la frquence. Par contre, le nombre de coefficients calculer est
relativement faible en comparaison des filtres RIF, ce qui permet de limiter les temps de calcul. Pour
synthtiser un filtre RIF, la mthode la plus simple consiste partir de la fonction de transfert dun filtre

45

analogique (Butterworth, Tchebycheff, Cauer, etc.) et de passer du plan des variables p (ou
des z . La transformation la plus couramment utilise est la transformation bilinaire :

p est remplac par :


avec

k = 2 f e en rgle gnrale.

s ) celui

1 z 1
1 + z 1

2) Travail demand
2.1) Filtres RIF
a) Synthse par srie de Fourier
-

Calculer les valeurs des coefficients de la rponse impulsionnelle dun filtre RIF passe-bas idal de
frquence de coupure 1kHz sachant que fe=8kHz. On limite la rponse impulsionnelle 9 lments.

Grce au programme RIFFOUR, il est possible de vrifier vos calculs.

Commenter les tracs des rponses en frquence. Les deux courbes dans chaque graphe
correspondent lusage de 2 fentres de pondration : la fentre rectangle (ou box-car) et la fentre
de Hamming.

Expliquer en particulier lvolution de la phase avec la frquence

Commenter lvolution de la rponse en frquence du filtre lorsquon augmente le nombre de points


N (prendre successivement 17 et 33).

N.B. : Avant de cliquer sur Rponse en frquence, il faut cliquer sur Rponse impulsionnelle pour
ractualiser celle-ci chaque fois que vous changez un paramtre : fe, fc ou N.
- Commenter les tracs de la rponse un sinus raliss pour diverses frquences de la fonction sinus
(prendre N=33).
-

Expliquer en particulier la raison pour laquelle les premires valeurs en sortie du filtre sont quasi
nulles.

Noter le temps de retard entre les 2 sinusodes et son volution avec la frquence du sinus.

N.B. : il y a possibilit de zoomer certaines parties des graphes.


b) Echantillonnage en frquence

On propose de raliser un filtre RIF bas sur le gabarit suivant pour

H(f ) :

Sur lintervalle de frquence allant de fe/2 fe/2 : (f) = 1 pour f1<f<f1, H(f) = 0 pour f>f2 et f<-f2.

H(f)

-fe/2

f1 f2

fe/2

f
46

Calculer les valeurs de la rponse impulsionnelle dun filtre RIF base sur un tel gabarit avec :
f1=1kHz, f2=1.5kHz, fe=8kHz et N=9.

Grce au programme RIFECH, il est possible de vrifier vos calculs.

Commenter lvolution de la rponse impulsionnelle du filtre lorsque :


- on augmente N (prendre N=17 puis 33).
- N fix (17 par exemple) on dcale la position de f2 (1.1kHz puis 2kHz)

Sachant que les cercles reprsents dans le module de la rponse en frquence sont les points
chantillonns sur

H ( f ) (gabarit donn au dpart), quels commentaires cela vous inspire-t-il ?

2.2) Filtres RII


Dans le but de limiter au maximum la difficult des calculs que vous devez raliser, nous choisissons
comme filtre analogique de dpart un passe-bas de type RC :

R
x(t)

y(t)

R=330, C=470nF
-

Exprimer la fonction de transfert du filtre sous la forme :

H ( p) =

(7)

p
1+
2f c

En donnant les valeurs du gain nominal A et de la frquence de coupure


-

Donner lexpression obtenue pour

fc .

H ( z ) aprs transformation bilinaire (on choisit fe=8kHz). Mettez

H ( z ) sous la forme suivante :


N 1

H ( z) =

b z

a z

k =0
M

l =0

Relevez les coefficients

avec a0=1

(8)

al et bk et comparez vos rsultats ceux fournis par le programme RII (les

valeurs sont donnes pour les valeurs de l et k croissantes en partant de 0).


-

Observez et commentez la rponse en frquence en identifiant les 2 courbes apparaissant dans


chaque graphe et qui correspondent au filtre analogique

H ( p ) et au filtre numrique H ( z ) .

Commentez en particulier lvolution observe lorsquon modifie la frquence dchantillonnage.

47

48

TP 7 : OUTILS POUR LA SYNTHSE DE FILTRES

Introduction :
Loption Signal Processing Toolbox de MATLAB permet de comparer un grand nombre de mthodes de
synthse de filtres numriques. Nous sparerons une fois encore les filtres RII des RIF.

1) Synthse de filtres RIF


Nous avons vu dans le TP prcdent deux mthodes lmentaires de synthse de filtres RIF : la synthse
par srie de Fourier et la mthode dchantillonnage. Ces deux mthodes sont implmentes sous
MATLAB avec les noms fir1 et fir2. En plus de ces mthodes, il existe une mthode doptimisation en
moyenne quadratique firls dont lobjectif est la synthse dun filtre RIF dont la rponse en frquence

H ( f ) approche une fonction donne D ( f ) suivant un critre des moindres carrs. Cette mthode

consiste donc trouver les coefficients du filtre qui minimisent la fonction suivante :

eqm = P ( f )[H ( f ) D ( f )]

P ( f ) est une fonction de pondration ventuelle.

Le problme li aux diffrentes mthodes prsentes jusqu maintenant est le manque de matrise des
oscillations du filtre. Or dans de nombreuses applications, il se rvle intressant dutiliser des filtres
prsentant des ondulations damplitude constante. La mthode de Remez (remez) permet de tenir compte
de cette contrainte supplmentaire sur le gabarit du filtre.

2) Synthse des filtres RII


Pour la conception de filtres RII, nous nous baserons essentiellement sur les filtres analogiques dcrits
dans le TP6, sachez nanmoins quil est possible de faire la synthse de filtre RII sans utiliser les
modles analogiques. Il existe en effet des techniques discrtes itratives qui permettent de calculer
directement les coefficients dun filtre RII partir dun gabarit donn par des mthodes doptimisation
(voir les instructions prony et yulewalk par exemple).

3) Travail demand sous SPTOOL


Lorsque vous tapez sptool sous Matlab, une fentre que lon peut dcomposer en trois parties apparat. La
premire partie Signals sur la gauche de la fentre permet de visualiser avec View des signaux tracs en
fonction du temps gnralement. Il est possible ainsi dimporter des signaux dfinis dans la fentre de
travail Matlab (workspace) en cliquant sur File puis Import. Ensuite ces signaux en plus dtre visualiss
peuvent tre filtrs dans la partie Filters. Il est aussi possible de faire lanalyse spectrale de ces signaux
dans la partie Spectra.
La zone centrale note Filters permet de visualiser les caractristiques dun filtre par View, de lancer une
synthse de filtre par New Design, de modifier les caractristiques dun filtre par Edit Design et enfin
dappliquer un filtre un signal prsent dans la partie Signals par Apply. Dans un premier temps, nous
utiliserons la fonction New Design pour comparer les caractristiques de diffrents types de filtres
numriques synthtiss partir dun gabarit et dun algorithme donn.

49

Exercice1 : comparaison des rsultats obtenus par les mthodes firls et remez.
On fixe la frquence dchantillonnage 1Hz et on dsire synthtiser un passe-bas :
dordre 15 avec fp=0.275 et fs=0.325Hz.
Exercice2 : comparaison des RII.
On donne les spcifications suivantes pour un filtre numrique passe-bas :
Fe=1Hz, fp=0.25Hz, fs=0.26Hz
Ondulation dans la bande passante Rp=3dB, attnuation dans la bande coupe Rs=20.

50

6
SPTool: A Signal
Processing GUI Suite
The following chapter describes the Signal Processing Tool (SPTool) and provides a detailed example
showing how to use this Graphical User Interface.
SPTool: An Interactive Signal Processing
Environment (p. 6-3)

Overview of the tool

Opening SPTool (p. 6-5)

How to start the tool

Getting Context-Sensitive Help (p. 6-7)

How to get help

Signal Browser (p. 6-8)

Viewing signals

Filter Designer (p. 6-11)

Designing filters

Filter Visualization Tool (p. 6-14)

Viewing and analyzing filters

Spectrum Viewer (p. 6-18)

Viewing spectra

Filtering and Analysis of Noise (p. 6-21)

Full example using the tool

Exporting Signals, Filters, and Spectra (p. 6-33) Sending data out of the tool
Accessing Filter Parameters (p. 6-35)

Using MATLAB to access saved filter parameters

Importing Filters and Spectra into SPTool


(p. 6-40)

Bringing data into the tool

Loading Variables from the Disk (p. 6-44)

Bringing data from a disk into the tool

Selecting Signals, Filters, and Spectra in


SPTool (p. 6-45)

Selecting data

Editing Signals, Filters, or Spectra in SPTool


(p. 6-46)

Editing data

Designing a Filter with the Pole/Zero Editor


(p. 6-47)

Using the Pole/Zero Editor

SPTool: A Signal Processing GUI Suite

6-2

Redesigning a Filter Using the Magnitude Plot


(p. 6-50)

Changing the filter design using Magnitude plot

Setting Preferences (p. 6-51)

Customizing the tool

Making Signal Measurements with Markers


(p. 6-53)

Measuring signals

SPTool: An Interactive Signal Processing Environment

SPTool: An Interactive Signal Processing Environment


SPTool is an interactive GUI for digital signal processing that can be used to
Analyze signals
Design filters
Analyze (view) filters
Filter signals
Analyze signal spectra
You can accomplish these tasks using four GUIs that you access from within
SPTool:
The Signal Browser is for analyzing signals. You can also play portions of
signals using your computers audio hardware.
The Filter Designer is for designing or editing FIR and IIR digital filters.
Most of the Signal Processing Toolbox filter design methods available at the
command line are also available in the Filter Designer. Additionally, you can
design a filter by using the Pole/Zero Editor to graphically place poles and
zeros on the z-plane.
The Filter Visualization Tool is for analyzing filter characteristics. See
Filter Visualization Tool on page 6-14.
The Spectrum Viewer is for spectral analysis. You can use the Signal
Processing Toolbox spectral estimation methods to estimate the power
spectral density of a signal. See Spectrum Viewer on page 6-18.

SPTool Data Structures


You can use SPTool to analyze signals, filters, or spectra that you create at the
MATLAB command line.
You can bring signals, filters, or spectra from the MATLAB workspace into the
SPTool workspace using the Import item under the File menu. Signals, filters,
or spectra that you create in (or import into) the SPTool workspace exist as
MATLAB structures. See the MATLAB documentation for more information on
MATLAB structures.

6-3

SPTool: A Signal Processing GUI Suite

When you use the Export item under the File menu to save signals, filters, and
spectra that you create or modify in SPTool, these are also saved as MATLAB
structures.

6-4

Opening SPTool

Opening SPTool
To open SPTool, type
sptool

When you first open SPTool, it contains a collection of default signals, filters,
and spectra. You can specify your own preferences for what signals, filters, and
spectra you want to see when SPTool opens. See Designing a Filter with the
Pole/Zero Editor on page 6-47 for more details.
You can access these three GUIs from SPTool by selecting a signal, filter, or
spectrum and pressing the appropriate View button:
Signal Browser
Filter Visualization Tool
Spectrum Viewer

6-5

SPTool: A Signal Processing GUI Suite

You can access the Filter Designer GUI by pressing the New button to create
a new filter or the Edit button to edit a selected filter. The Apply button applies
a selected filter to a selected signal.
The Create button opens the Spectrum Viewer and creates the power spectral
density of the selected signal. The Update button opens the Spectrum Viewer
for the selected spectrum.

6-6

Getting Context-Sensitive Help

Getting Context-Sensitive Help


To find information on a particular region of the Signal Browser, Filter
Designer, or Spectrum Viewer:
1 Press the Whats this? button,

2 Click on the region of the GUI you want information on.

You can also use the Whats this? menu item in the Help menu to launch
context-sensitive help.

6-7

SPTool: A Signal Processing GUI Suite

Signal Browser
You can use the Signal Browser to display and analyze signals listed in the
Signals list box in SPTool.
Using the Signal Browser you can:
Analyze and compare vector or array (matrix) signals.
Zoom in on portions of signal data.
Measure a variety of characteristics of signal data.
Compare multiple signals.
Play portions of signal data on audio hardware.
Print signal plots.

Opening the Signal Browser


To open the Signal Browser from SPTool:
1 Select one or more signals in the Signals list in SPTool
2 Press the View button under the Signals list

6-8

Signal Browser

The Signal Browser has the following components:


A display region for analyzing signals, including markers for measuring,
comparing, or playing signals
A panner that displays the entire signal length, highlighting the portion
currently active in the display region
A marker measurements area
A toolbar with buttons for convenient access to frequently used functions
Icon

Description

Print and print preview


Play an audio signal
Display array and complex signals

6-9

SPTool: A Signal Processing GUI Suite

Icon

Description

Zoom the signal in and out


Select one of several loaded signals
Set the display color and line style of a signal
Toggle the markers on and off
Set marker types
(See Making Signal Measurements with
Markers on page 6-53)
Turn on the Whats This help

6-10

Filter Designer

Filter Designer
The Filter Designer provides an interactive graphical environment for the
design of digital IIR and FIR filters based on specifications that you enter on a
magnitude or pole-zero plot.

Note You can also use the Filter Design and Analysis Tool (FDATool)
described in Chapter 5, FDATool: A Filter Design and Analysis GUI for filter
design and analysis.

Filter Types
You can design filters of the following types using the Filter Designer:
Bandpass
Lowpass
Bandstop
Highpass

FIR Filter Methods


You can use the following filter methods to design FIR filters:
Equiripple
Least squares
Window

IIR Filter Methods


You can use the following filter methods to design IIR filters:
Butterworth
Chebyshev Type I
Chebyshev Type II
Elliptic

6-11

SPTool: A Signal Processing GUI Suite

Pole/Zero Editor
You can use the Pole/Zero Editor to design arbitrary FIR and IIR filters by
placing and moving poles and zeros on the complex z-plane.

Spectral Overlay Feature


You can also superimpose spectra on a filters magnitude response to see if the
filtering requirements are met.

Opening the Filter Designer


Open the Filter Designer from SPTool by either:
Pressing the New button in the Filters list in SPTool
Selecting a filter you want to edit from the Filters list in SPTool, and then
pressing the Edit button

The Filter Designer has the following components:

6-12

Filter Designer

A pull-down Filter menu for selecting a filter from the list in SPTool
A Sampling Frequency text box
A pull-down Algorithm menu for selecting a filter design method or a
pole-zero plot display
A Specifications area for viewing or modifying a filters design parameters
or pole-zero locations
A plot display region for graphically adjusting filter magnitude responses or
the pole-zero locations
A Measurements area for viewing the response characteristics and stability
of the current filter
A toolbar with the following buttons
Icon

Description

Print and print preview


Zoom in and out
Passband view
Overlay spectrum
Turn on the Whats This help

6-13

SPTool: A Signal Processing GUI Suite

Filter Visualization Tool


You can use the Filter Visualization Tool (fvtool) to analyze the following
response characteristics of selected filters:
Magnitude response
Phase response
Impulse response
Step response
Group delay
Phase delay
Pole and zero locations
Detailed filter information
FVTool also provides features for
Overlaying filter responses
Zooming
Measuring filter responses
Modifying display parameters such as frequency ranges or magnitude units
If you start FVTool by clicking the SPTool Filter View button, that FVTool is
linked to SPTool. Any changes made in SPTool to the filter are immediately
reflected in FVTool. The FVTool title bar includes SPTool to indicate the link.
If you start an FVTool by clicking the New button or by selecting File-->New
from within FVTool, that FVTool is a stand-alone version and is not linked to
SPTool.

Note Every time you click the Filter View button a new, linked FVTool
starts. This allows you to view multiple analyses simultaneously.

Opening the Filter Visualization Tool


You open FVTool from SPTool as follows.

6-14

Filter Visualization Tool

1 Select one or more filters in the Filters list in SPTool.


2 Click the View button under the Filters list.

When you first open FVTool, it displays the selected filters magnitude plot.

Filter Visualization Tool Components


FVTool has the following components:

6-15

SPTool: A Signal Processing GUI Suite

Figure toolbar with the following icons.


Icon

Description

Start a new unlinked FVTool


Print file and print preview
Toggle plot editing, add text, add arrow, and add line
Zoom in, zoom in x only, zoom in y only, and return to
full view
Toggle legend
Toggle grid
Analysis toolbar with the following icons
Icon

Description

Display Magnitude plot


Display Phase plot
Display Magnitude and Phase plot
Display Group Delay plot
Display Phase Delay plot
Display Impulse Response
Display Step Response
Display Pole-Zero plot
Display filter coefficients
Display filter information
A display area for analyzing one or more frequency response plots for the
selected filter(s)

6-16

Filter Visualization Tool

Using Data Markers


In FVTool, you can use data markers to display information on particular
points in the response plot(s). See Data Markers in the FDATool online help
more information.

Analysis Parameters
In the plot area of any filter response plot, right-click and select Analysis
Parameters to display details about the displayed plot. See Analysis
Parameters in the FDATool online help for more information.
You can change any parameter in a linked FVTool, except the sampling
frequency. You can only change the sampling frequency using Sampling
Frequency in the SPTool Edit menu or the SPTool Filters Edit button.

6-17

SPTool: A Signal Processing GUI Suite

Spectrum Viewer
You can use the Spectrum Viewer for estimating and analyzing a signals
power spectral density (PSD). You can use the PSD estimates to understand a
signals frequency content.
The Spectrum Viewer provides the following functionality.
Analyze and compare spectral density plots.
Use different spectral estimation methods to create spectra:
- Burg (pburg)
- Covariance (pcov)
- FFT (fft)
- Modified covariance (pmcov)
- MTM (multitaper method) (pmtm)
- MUSIC (pmusic)
- Welch (pwelch)
- Yule-Walker AR (pyulear)
Modify power spectral density parameters such as FFT length, window type,
and sample frequency.
Print spectral plots.

Opening the Spectrum Viewer


To open the Spectrum Viewer and create a PSD estimate from SPTool:
1 Select a signal from the Signal list box in SPTool.
2 Press the Create button in the Spectra list.
3 Press the Apply button in the Spectrum Viewer.

To open the Spectrum Viewer with a PSD estimate already listed in SPTool:
1 Select a PSD estimate from the Spectra list box in SPTool.
2 Press the View button in the Spectra list.

6-18

Spectrum Viewer

For example:
1 Select mtlb in the default Signals list in SPTool.
2 Press the Create button in SPTool to open the Spectrum Viewer.
3 Press the Apply button in the Spectrum Viewer to plot the spectrum.

The Spectrum Viewer has the following components:


A signal identification region that provides information about the signal
whose power spectral density estimate is displayed
A Parameters region for modifying the PSD parameters
A display region for analyzing spectra and an Options menu for modifying
display characteristics
Spectrum management controls
- Inherit from menu to inherit PSD specifications from another PSD object
listed in the menu
- Revert button to revert to the named PSDs original specifications

6-19

SPTool: A Signal Processing GUI Suite

- Apply button for creating or updating PSD estimates


A toolbar with buttons for convenient access to frequently used functions
Icon

Description

Print and print preview


Zoom the signal in and out
Select one of several loaded signals
Set the display color and line style of a signal
Toggle the markers on and off
Set marker types
Turn on the Whats This help

6-20

Filtering and Analysis of Noise

Filtering and Analysis of Noise


The following sections provide an example of using the GUI-based interactive
tools to:
Design and implement an FIR bandpass digital filter
Apply the filter to a noisy signal
Analyze signals and their spectra
The steps include:
1 Creating a noisy signal in the MATLAB workspace and importing it into

SPTool
2 Designing a bandpass filter using the Filter Designer
3 Applying the filter to the original noise signal to create a bandlimited noise

signal
4 Comparing the time domain information of the original and filtered signals

using the Signal Browser


5 Comparing the spectra of both signals using the Spectrum Viewer

Step 1: Importing a Signal into SPTool


To import a signal into SPTool from the workspace or disk, the signal must be
either:
A special MATLAB signal structure, such as that saved from a previous
SPTool session
A signal created as a variable (vector or matrix) in the MATLAB workspace
For this example, create a new signal at the command line and then import it
as a structure into SPTool:
1 Create a random signal in the MATLAB workspace by typing

randn('state',0);
x = randn(5000,1);
2 If SPTool is not already open, open SPTool by typing

6-21

SPTool: A Signal Processing GUI Suite

sptool

The SPTool window is displayed.


3 Select Import from the File menu in SPTool. The Import to SPTool dialog

opens.

The variable x is displayed in the Workspace Contents list. (If it is not,


select the From Workspace radio button to display the contents of the
workspace.)
4 Select the signal and import it into the Data field:
a Make sure that Signal is selected in the Import As pull-down menu.
b Select the signal variable x in the Workspace Contents list.
c

Click on the arrow to the left of the Data field or type x in the Data field.

d Type 5000 in the Sampling Frequency field.


e

Name the signal by typing noise in the Name field.

Press OK.

At this point, the signal noise[vector] is selected in SPTools Signals list.

6-22

Filtering and Analysis of Noise

Note You can import filters and spectra into SPTool in much the same way as
you import signals. See Importing Filters and Spectra into SPTool on
page 6-40 for specific details.
You can also import signals from MAT-files on your disk, rather than from the
workspace. See Loading Variables from the Disk on page 6-44 for more
information.

Type help sptool for information about importing from the command line.

Step 2: Designing a Filter


You can import an existing filter into SPTool, or you can design and edit a new
filter using the Filter Designer.
In this example:
1 Open a default filter in the Filter Designer.
2 Specify an equiripple bandpass FIR filter.

Opening the Filter Designer


To open the Filter Designer, press the New button in SPTool. This opens the
Filter Designer with a default filter named filt1.

Specifying the Bandpass Filter


Design an equiripple bandpass FIR filter with the following characteristics:
Sampling frequency of 5000 Hz
Stopband frequency ranges of [0 500] Hz and [1500 2500] Hz
Passband frequency range of [750 1250] Hz
Ripple in the passband of 0.01 dB
Stopband attenuation of 75 dB
To modify your filter in the Filter Designer to meet these specifications:

6-23

SPTool: A Signal Processing GUI Suite

1 Change the filter sampling frequency to 5000 by entering this value in the

Sampling Frequency text box.


2 Select Equiripple FIR from the Algorithm list.
3 Select bandpass from the Type list.
4 Set the passband edge frequencies by entering 750 for Fp1 and 1250 for Fp2.
5 Set the stopband edge frequencies by entering 500 for Fs1 and 1500 for Fs2.
6 Type 0.01 into the Rp field and 75 into the Rs field.

Rp sets the maximum passband ripple and Rs sets the stopband attenuation
for the filter.
7 Press the Apply button to design the new filter.When the new filter is

designed, the magnitude response of the filter is displayed with a solid line
in the display region.

6-24

Filtering and Analysis of Noise

The resulting filter is an order-78 bandpass equiripple filter.

Note You can use the solid line in the plot to modify your filter design. See
Redesigning a Filter Using the Magnitude Plot on page 6-50 for more
information.

Step 3: Applying a Filter to a Signal


When you apply a filter to a signal, you create a new signal in SPTool
representing the filtered signal.
To apply the filter filt1 you just created to the signal noise:
1 Select SPTool from the Window menu in the Filter Designer.

6-25

SPTool: A Signal Processing GUI Suite

2 Select the signal noise[vector] from the Signals list and select the filter

(named filt1[design]) from the Filters list.

Press Apply to apply the filter filt1 to the signal noise. The Apply Filter
dialog box is displayed
.

3 Keep the default filter structure selected in the Algorithm list.


4 Name the new signal by typing blnoise in the Output Signal field in this

dialog box.

6-26

Filtering and Analysis of Noise

5 Press OK to close the Apply Filter dialog box.

The filter is applied to the selected signal and the filtered signal
blnoise[vector] is listed in the Signals list in SPTool.

Step 4: Analyzing a Signal


You can analyze and print signals using the Signal Browser. You can also play
the signals if your computer has audio output capabilities.
For example, compare the signal noise to the filtered signal blnoise:
1 Shift+click on the noise and blnoise signals in the Signals list of SPTool to

select both signals.


2 Press the View button under the Signals list.

The Signal Browser is activated and both signals are displayed in the
display region. (The names of both signals are shown above the display
region.) Initially, the original noise signal covers up the bandlimited
blnoise signal.
3 Push the selection button on the toolbar,

, to select the blnoise signal.

The display area is updated. Now you can see the blnoise signal
superimposed on top of the noise signal. The signals are displayed in
different colors in both the display region and the panner. You can change
the color of the selected signal using the Line Properties button on the
toolbar,
.

6-27

SPTool: A Signal Processing GUI Suite

Playing a Signal
When you press the Play button in the Signal Browser toolbar,
signal is played on the computers audio hardware:

, the active

1 To hear a portion of the active (selected) signal


a Use the vertical markers to select a portion of the signal you want to play.

Vertical markers are enabled by the

and

buttons.

b Press the Play button.


2 To hear the other signal
a Select the signal as in step 3 above. You can also select the signal directly

in the display region.


b Press the Play button again.

Printing a Signal
You can print from the Signal Browser using the Print button,

6-28

Filtering and Analysis of Noise

You can use the line display buttons to maximize the visual contrast between
the signals by setting the line color for noise to gray and the line color for
blnoise to white. Do this before printing two signals together.

Note You can follow the same rules to print spectra, but you cant print filter
responses directly from SPTool.

Use the Signal Browser region in the Preferences dialog box in SPTool to
suppress printing of both the panner and the marker settings.
To print both signals, press the Print button in the Signal Browser toolbar.

Step 5: Spectral Analysis in the Spectrum Viewer


You can analyze the frequency content of a signal using the Spectrum Viewer,
which estimates and displays a signals power spectral density.
For example, to analyze and compare the spectra of noise and blnoise:
1 Create a power spectral density (PSD) object, spect1, that is associated with

the signal noise, and a second PSD object, spect2, that is associated with
the signal blnoise.

6-29

SPTool: A Signal Processing GUI Suite

2 Open the Spectrum Viewer to analyze both of these spectra.


3 Print both spectra.

Creating a PSD Object From a Signal


1 Click on SPTool, or select SPTool from the Window menu of any active open

GUI. SPTool is now the active window.


2 Select the noise[vector] signal in the Signals list of SPTool.
3 Press Create in the Spectra list.

The Spectrum Viewer is activated, and a PSD object (spect1) corresponding


to the noise signal is created in the Spectra list. The PSD is not computed
or displayed yet.
4 Press Apply in the Spectrum Viewer to compute and display the PSD

estimate spect1 using the default parameters.


The PSD of the noise signal is displayed in the display region. The
identifying information for the PSDs associated signal (noise) is displayed
above the Parameters region.
The PSD estimate spect1 is within 2 or 3 dB of 0, so the noise has a fairly
flat power spectral density.
5 Follow steps 1 through 4 for the bandlimited noise signal blnoise to create

a second PSD estimate spect2.


The PSD estimate spect2 is flat between 750 and 1250 Hz and has 75 dB
less power in the stopband regions of filt1.

Opening the Spectrum Viewer with Two Spectra


1 Reactivate SPTool again, as in step 1 above.
2 Shift+click on spect1 and spect2 in the Spectra list to select them both.
3 Press View in the Spectra list to reactivate the Spectrum Viewer and

display both spectra together.

6-30

Filtering and Analysis of Noise

Printing the Spectra


Before printing the two spectra together, use the color and line style selection
button,
, to differentiate the two plots by line style, rather than by color.
To print both spectra:
1 Press the Print Preview button,

, in the toolbar on the Spectrum

Viewer.
2 From the Spectrum Viewer Print Preview window, drag the legend out of

the display region so that it doesnt obscure part of the plot.


3 Press the Print button in the Spectrum Viewer Print Preview window.

6-31

SPTool: A Signal Processing GUI Suite

6-32

Exporting Signals, Filters, and Spectra

Exporting Signals, Filters, and Spectra


You can export SPTool signals, filters, and spectra as structures to the
MATLAB workspace or to your disk.
In each case you:
1 Select the items in SPTool you want to export.
2 Select Export from the File menu.

Opening the Export Dialog Box


To save the filter filt1 you just created in this example, open the Export
dialog box with filt1 preselected:
1 Select filt1 in the SPTool Filters list.
2 Select Export from the File menu.

The Export dialog box opens with filt1 preselected.

6-33

SPTool: A Signal Processing GUI Suite

Exporting a Filter to the MATLAB Workspace


To export the filter filt1 to the MATLAB workspace:
1 Select filt1 from the Export List and deselect all other items using

Ctrl+click.
2 Press the Export to Workspace button.

6-34

Accessing Filter Parameters

Accessing Filter Parameters


You can access filter parameters in the following two ways.
Accessing Filter Parameters in a Saved Filter
Accessing Parameters in a Saved Spectrum

Accessing Filter Parameters in a Saved Filter


The MATLAB structures created by SPTool have several associated fields,
many of which are also MATLAB structures. See the MATLAB documentation
for general information about MATLAB structures.
For example, after exporting a filter filt1 to the MATLAB workspace, type
filt1

to display the fields of the MATLAB filter structure. The tf, Fs, and specs
fields of the structure contain the information that describes the filter.

The tf Field: Accessing Filter Coefficients


The tf field is a structure containing the transfer function representation of
the filter. Use this field to obtain the filter coefficients;
filt1.tf.num contains the numerator coefficients.
filt1.tf.den contains the denominator coefficients.
The vectors contained in these structures represent polynomials in descending
powers of z. The numerator and denominator polynomials are used to specify
the transfer function
b(1) + b(2)z 1 + L + b(nb + 1)z m
B(z)
H(z) = ----------- = ----------------------------------------------------------------------------------------A(z)
a(1) + a(2)z 1 + L + a(na + 1)z n
where:
b is a vector containing the coefficients from the tf.num field.
a is a vector containing the coefficients from the tf.den field.
m is the numerator order.
n is the denominator order.

6-35

SPTool: A Signal Processing GUI Suite

You can change the filter representation from the default transfer function to
another form by using the tf2ss or tf2zp functions.

The Fs Field: Accessing Filter Sample Frequency


The Fs field contains the sampling frequency of the filter in hertz.

The specs Field: Accessing other Filter Parameters


The specs field is a structure containing parameters that you specified for the
filter design. The first field, specs.currentModule, contains a string
representing the most recent design method selected from the Filter Designers
Algorithm list before you exported the filter. The possible contents of the
currentModule field and the corresponding design methods are shown below.
Contents of the currentModule field

Design Method

fdbutter

Butterworth IIR

fdcheby1

Chebyshev Type I IIR

fdcheby2

Chebyshev Type II IIR

fdellip

Elliptic IIR

fdfirls

Least Squares FIR

fdkaiser

Kaiser Window FIR

fdremez

Equiripple FIR

Following the specs.currentModule field, there may be up to seven additional


fields, with labels such as specs.fdremez, specs.fdfirls, etc. The design
specifications for the most recently exported filter are contained in the field
whose label matches the currentModule string. For example, if the specs
structure is
filt1.specs
ans
currentModule: 'fdremez'
fdremez: [1x1 struct]

6-36

Accessing Filter Parameters

the filter specifications are contained in the fdremez field, which is itself a data
structure.
The specifications include the parameter values from the Specifications
region of the Filter Designer, such as band edges and filter order. For example,
the filter above has the following specifications stored in
filt1.specs.fdremez:
filt1.specs.fdremez
ans =
setOrderFlag:
type:
f:
m:
Rp:
Rs:
wt:
order:

0
3
[0 0.2000 0.3000 0.5000 0.6000 1]
[6x1 double]
0.0100
75
[3.2371 1 3.2371]
78

Because certain filter parameters are unique to a particular design, this


structure has a different set of fields for each filter design.
The table below describes the possible fields associated with the filter design
specification field (the specs field) that can appear in the exported structure.
Parameter

Description

Beta

Kaiser window parameter.

Contains a vector of band-edge frequencies, normalized so


that 1 Hz corresponds to half the sample frequency.

Fpass

Passband cutoff frequencies. Scalar for lowpass and


highpass designs, two-element vector for bandpass and
bandstop designs.

Fstop

Stopband cutoff frequencies. Scalar for lowpass and


highpass designs, two-element vector for bandpass and
bandstop designs.

6-37

SPTool: A Signal Processing GUI Suite

Parameter

Description

The response magnitudes corresponding to the band-edge


frequencies in f.

order

Filter order.

Rp

Passband ripple (dB)

Rs

Stopband attenuation (dB)

setOrderFlag

Contains 1 if the filter order was specified manually (i.e.,


the Minimum Order box in the Specifications region
was not selected). Contains 0 if the filter order was
computed automatically.

type

Contains 1 for lowpass, 2 for highpass, 3 for bandpass, or


4 for bandstop.

w3db

-3 dB frequency for Butterworth IIR designs.

wind

Vector of Kaiser window coefficients.

Wn

Cutoff frequency for the Kaiser window FIR filter when


setOrderFlag = 1.

wt

Vector of weights, one weight per frequency band.

Accessing Parameters in a Saved Spectrum


The following structure fields describe the spectra saved by SPTool.

6-38

Field

Description

The spectral power vector.

The spectral frequency vector.

Accessing Filter Parameters

Field

Description

confid

A structure containing the confidence intervals data


The confid.level field contains the chosen
confidence level.
The confid.Pc field contains the spectral power
data for the confidence intervals.
The confid.enable field contains a 1 if confidence
levels are enabled for the power spectral density.

signalLabel

The name of the signal from which the power spectral


density was generated.

Fs

The associated signals sample rate.

You can access the information in these fields as you do with every MATLAB
structure.
For example, if you export an SPTool PSD estimate spect1 to the workspace,
type
spect1.P

to obtain the vector of associated power values.

6-39

SPTool: A Signal Processing GUI Suite

Importing Filters and Spectra into SPTool


In addition to importing signals into SPTool, you can import filters or spectra
into SPTool from either the workspace or from a file.
The procedures are very similar to those explained in:
Step 1: Importing a Signal into SPTool on page 6-21 for loading variables
from the workspace
Loading Variables from the Disk on page 6-44 for loading variables from
your disk

Importing Filters
When you import filters, first select the appropriate filter form from the Form
list.

For every filter you specify a variable name or a value for the filters sampling
frequency in the Sampling Frequency field. Each filter form requires different
variables.

Transfer Function
For Transfer Function, you specify the filter by its transfer function
representation:

6-40

Importing Filters and Spectra into SPTool

B(z-)
b(1) + b(2)z 1 + L + b(m + 1)z m
H(z) = ---------= --------------------------------------------------------------------------------------A(z)
a(1) + a(2)z 1 + L + a(n + 1)z n
The Numerator field specifies a variable name or value for the numerator
coefficient vector b, which contains m+1 coefficients in descending powers of
z.
The Denominator field specifies a variable name or value for the
denominator coefficient vector a, which contains n+1 coefficients in
descending powers of z.

State Space
For State Space, you specify the filter by its state-space representation:
x = Ax + Bu
y = Cx + Du
The A-Matrix, B-Matrix, C-Matrix, and D-Matrix fields specify a variable
name or a value for each matrix in this system.

Zeros, Poles, Gain


For Zeros, Poles, Gain, you specify the filter by its zero-pole-gain
representation:
( z z ( 1 ) ) ( z z ( 2 ) )L ( z z ( m ) )
(z)- = k ----------------------------------------------------------------------------------H(z) = Z
--------( z p ( 1 ) ) ( z p ( 2 ) )L ( z p ( n ) )
P ( z)
The Zeros field specifies a variable name or value for the zeros vector z,
which contains the locations of m zeros.
The Poles field specifies a variable name or value for the zeros vector p,
which contains the locations of n poles.
The Gain field specifies a variable name or value for the gain k.

Second Order Sections


For 2nd Order Sections you specify the filter by its second-order section
representation:

6-41

SPTool: A Signal Processing GUI Suite

H(z) =

k=1

H k(z) =

k=1

b 0k + b 1k z 1 + b 2k z 2
---------------------------------------------------------1 + a 1k z 1 + a 2k z 2

The SOS Matrix field specifies a variable name or a value for the L-by-6 SOS
matrix
b 01 b 11 b 21 1 a 11 a 21
b 02 b 12 b 22 1 a 12 a 22
sos =
M
M
M M M
M
b 0L b 1L b 2L 1 a 1L a 2L
whose rows contain the numerator and denominator coefficients bik and aik of
the second-order sections of H(z).

Note If you import a filter that was not created in SPTool, you can only edit
that filter using the Pole/Zero Editor.

Importing Spectra
When you import a power spectral density (PSD), you specify:
A variable name or a value for the PSD vector in the PSD field
A variable name or a value for the frequency vector in the Freq. Vector field
The PSD values in the PSD vector correspond to the frequencies contained in
the Freq. Vector vector; the two vectors must have the same length.

6-42

Importing Filters and Spectra into SPTool

6-43

SPTool: A Signal Processing GUI Suite

Loading Variables from the Disk


To import variables representing signals, filters, or spectra from a MAT-file on
your disk;
1 Select the From Disk radio button and do either of the following:

- Type the name of the file you want to import into the MAT-file Name field
and press either the Tab or the Enter key on your keyboard.
- Select Browse, and then find and select the file you want to import using
the Select File to Open dialog. Press OK to close that dialog.
In either case, all variables in the MAT-file you selected are displayed in the
File Contents list.
2 Select the variables to be imported into SPTool.

You can now import one or more variables from the File Contents list into
SPTool, as long as these variables are scalars, vectors, or matrices.

6-44

Selecting Signals, Filters, and Spectra in SPTool

Selecting Signals, Filters, and Spectra in SPTool


All signals, filters, or spectra listed in SPTool exist as special MATLAB
structures. You can bring data representing signals, filters, or spectra into
SPTool from the MATLAB workspace. In general, you can select one or several
items in a given list box. An item is selected when it is highlighted.
The Signals list shows all vector and array signals in the current SPTool
session.
The Filters list shows all designed and imported filters in the current SPTool
session.
The Spectra list shows all spectra in the current SPTool session.
You can select a single data object in a list, a range of data objects in a list, or
multiple separate data objects in a list. You can also have data objects
simultaneously selected in different lists:
To select a single item, click on it. All other items in that list box become
deselected.
To add or remove a range of items, Shift+click on the items at the top and
bottom of the section of the list that you want to add. You can also drag your
mouse pointer to select these items.
To add a single data object to a selection or remove a single data object from
a multiple selection, Ctrl+click on the object.

6-45

SPTool: A Signal Processing GUI Suite

Editing Signals, Filters, or Spectra in SPTool


You can edit selected items in SPTool by:
1 Selecting the names of the signals, filters, or spectra you want to edit.
2 Selecting the appropriate Edit menu item:

- Duplicate to copy an item in an SPTool list


- Clear to delete an item in an SPTool list
- Name to rename an item in an SPTool list
- Sampling Frequency to modify the sampling frequency associated with
either a signal (and its associated spectra) or filter in an SPTool list
The pull-down menu next to each menu item shows the names of all selected
items.
You can also edit the following signal characteristics by right-clicking in the
display region of the Signal Browser, the Filter Visualization Tool, or the
Spectrum Viewer:
The signal name
The sampling frequency
The line style properties

Note If you modify the sampling frequency associated with a signals


spectrum using the right-click menu on the Spectrum Viewer display region,
the sampling frequency of the associated signal is automatically updated.

6-46

Designing a Filter with the Pole/Zero Editor

Designing a Filter with the Pole/Zero Editor


To design a filter transfer function using the Filter Designer Pole/Zero Editor:
1 Select the Pole/Zero Editor option from the Algorithm list to open the

Pole/Zero Editor in the Filter Designer display.

2 Enter the desired filter gain in the Gain edit box.


3 Select a pole or zero (or conjugate pair) by selecting one of the

(pole) or

(zero) symbols on the plot.


4 Choose the coordinates to work in by specifying Polar or Rectangular from

the Coordinates list.


5 Specify the new location(s) of the selected pole, zero, or conjugate pair by

typing values into the Mag and Angle fields (for angular coordinates) or X
and Y (for rectangular coordinates) fields. Alternatively, position the poles
and zeros by dragging the and
symbols.
6 Use the Conjugate pair check box to create a conjugate pair from a lone pole

or zero, or to break a conjugate pair into two individual poles or zeros.


Design a new filter or edit an existing filter in the same way.

Note Keep the Filter Visualization Tool (FVTool) open while designing a
filter with the Pole/Zero Editor. Any changes that you make to the filter
transfer function in the Pole/Zero Editor are then simultaneously reflected in
the response plots of FVTool.

6-47

SPTool: A Signal Processing GUI Suite

Positioning Poles and Zeros


You can use your mouse to move poles and zeros around the pole/zero plot and
modify your filter design.
Icon

Description

Enable moving poles or zeros by dragging on the plot


Add pole
Add zero
Erase poles or zeros
You can move both members of a conjugate pair simultaneously by
manipulating just one of the poles or zeros.
To ungroup conjugates, select the desired pair and clear Conjugate pair in the
Specifications region on the Filter Designer.

When you place two or more poles (or two or more zeros) directly on top of each
other, a number is displayed next to the symbols (on the left for poles, and on
the right for zeros) indicating the number of poles or zeros at that location (e.g.,
for three zeros). This number makes it easy to keep track of all the poles
and zeros in the plot area, even when several are superimposed on each other

6-48

Designing a Filter with the Pole/Zero Editor

and are not visually differentiable. Note, however, that this number does not
indicate the multiplicity of the poles or zeros to which it is attached.
To detect whether or not a set of poles or zeros are truly multiples, use the zoom
tools to magnify the region around the poles or zeros in question. Because
numerical limitations usually prevent any set of poles or zeros from sharing
exactly the same value, at a high enough zoom level even truly multiple poles
or zeros appear distinct from each other.
A common way to assess whether a particular group of poles or zeros contains
multiples is by comparing the mutual proximity of the group members against
a selected threshold value. As an example, the residuez function defines a pole
or zero as being a multiple of another pole or zero if the absolute distance
separating them is less than 0.1% of the larger pole or zeros magnitude.

6-49

SPTool: A Signal Processing GUI Suite

Redesigning a Filter Using the Magnitude Plot


After designing a filter in the Filter Designer, you can redesign it by dragging
the specification lines on the magnitude plot. Use the specification lines to
change passband ripple, stopband attenuation, and edge frequencies.
In the following example, create a Chebyshev filter and modify it by dragging
the specification lines:
1 Select Chebyshev Type I IIR from the Algorithm menu.
2 Select highpass from the Type menu.
3 Type 2000 in the Sampling Frequency field.
4 Set the following parameters:

- Fp = 800
- Fs = 700
- Rp = 2.5
- Rs = 35
5 Select Minimum Order so the Filter Designer can calculate the lowest filter

order that produces the desired characteristics.


6 Press Apply to compute the filter and update the response plot.
7 Position the cursor over the horizontal filter specification line for the

stopband. This is the first (leftmost) horizontal specification line you see.
The cursor changes to the up/down drag indicator.
8 Drag the line until the Rs (stopband attenuation) field reads 100.

Note The Order value in the Measurements region changes because a


higher filter order is needed to meet the new specifications.

6-50

Setting Preferences

Setting Preferences
Use Preferences from the SPTool File menu to customize displays and certain
parameters for SPTool and its four component GUIs. The new settings are
saved on disk and are used when you restart SPTool from MATLAB.
In the Preferences regions, you can:
Select colors and markers for all displays.
Select colors and line styles for displayed signals.
Configure labels, and enable/disable markers, panner, and zoom in the
Signal Browser.
Configure display parameters, and enable/disable markers and zoom in the
Spectrum Viewer.
Specify FFT length, and enable/disable mouse zoom and grid in the Filter
Designer.
Enable/disable use of a default session file.
Export filters for use with the Control System Toolbox.
Enable/disable search for plug-ins at start-up.

Note You can set MATLAB preferences that affect the Filter Visualization
Tool only from within FVTool by selecting Preferences from the File menu.
You can set FVTool-specific preferences using the Analysis Parameters on
the Analysis menu.

When you first select Preferences, the Preferences dialog box opens with
Markers selected by default.

6-51

SPTool: A Signal Processing GUI Suite

You can:
Change the settings for markers from this panel of the Preferences dialog.
Choose any of the other categories listed to customize its settings.
Click once on any listed category in the left pane of the Preferences dialog to
select it.

6-52

Making Signal Measurements with Markers

Making Signal Measurements with Markers


You can use the markers on the Signal Browser or the Spectrum Viewer to
make measurements on either of the following:
A signal in the Signal Browser
A power spectral density plotted in the Spectrum Viewer
The following marker buttons are included

.
Icon

Description

Toggle markers on/off


Vertical markers
Horizontal markers
Vertical markers with tracking
Vertical markers with tracking and slope
Display peaks (local maxima)
Display valleys (local minima)
To make a measurement:
1 Select a line to measure (or play, if you are in the Signal Browser).
2 Select one of the marker buttons to apply a marker to the displayed signal.
3 Position a marker in the main display area by grabbing it with your mouse

and dragging:

6-53

SPTool: A Signal Processing GUI Suite

a Select a marker setting. If you choose the Vertical, Track, or Slope

buttons, you can drag a marker to the right or left. If you choose the
Horizontal button, you can drag a marker up or down.
b Move the mouse over the marker (1 or 2) that you want to drag.

The hand cursor with the marker number inside it


your mouse passes over a marker.
c

is displayed when

Drag the marker to where you want it on the signal.

As you drag a marker, the bottom of the Signal Browser shows the current
position of both markers. Depending on which marker setting you select,
some or all of the following fields are displayedx1, y1, x2, y2, dx, dy, m.
These fields are also displayed when you print from the Signal Browser,
unless you suppress them.
You can also position a marker by typing its x1 and x2 or y1 and y2 values in
the region at the bottom.

6-54

Vous aimerez peut-être aussi