Matlab
Prise en main
1
Généralités
MATLAB: contraction de MATRIX LABORATORY
Première version crée en 1970 par Cleve Moler
500 000 utilisateurs répartis dans l'industrie, les
administrations et les établissements scolaires
utilisé dans de nombreux domaines d’application:
Traitement du signal,
Traitement d' images,
Conception de systèmes de contrôle,
Instrumentation
Sciences de la terre et de la vie,
Finances, économie
architecture ouverte facilitant l'utilisation de MATLAB et
de ses produits compagnons pour explorer des données
et créer des outils personnalisés fournissant des aperçus
rapides
2
Généralités
Environnement de programmation pour le calcul
scientifique
Outil pour le calcul numérique, la visualisation de
graphiques
Permet d’élaborer rapidement des schémas de solution
numérique.
Langage interprété
Outils inclus dans MATLAB
acquisition de données
analyse et exploration de données
visualisation et traitement d'images
prototypage et développement d'algorithmes
modélisation et simulation
programmation et développement d'applications
3
L’environnement MATLAB
Entièrement configurable
Menus
Fenêtres graphiques
Barre Command Window
d’outils
Current directory
Command history
Workspace
Help
Workspace Barres de menus
File
Edit
View
Go
Favorites
Debug
Desktop
Window
Help
barres d’outils
Icônes : fichiers,
copier/coller, Simulink,
Help…
Current directory
Command history 4
Help Command Window
Prise en main de MATLAB
Utilisation de MATLAB en calculette
Dans la fenêtre de commande (command window)
exemples
» 4/5
» 4/5;
» [1,8]
» [1 3;2 9]
» pi
» sin(pi)
» sin pi
» [Link]
» 7:-2:-6
» pi
» format short
» pi
5
Prise en main de Matlab
Utilisation en ligne de commande (variables)
exemples
» a=2/3
» b=2/3
» c=[1 3;2 5.2]
» d=a*c
» e=[Link]
» who
» whos
Utilisation des aides
exemples
helpwin
help sin
lookfor sin
6
Éléments de langage
Variables
Nom : débute par une lettre (différence entre Majuscules et minuscules)
Pas de noms de variables réservés prudence !
PAS de déclaration de type ou de taille des variables utilisées : le type
est établi automatiquement à partir des valeurs affectées à la variable
4 types de données
Réels
Complexes
Caractères
Logiques
Exemple
>> clear;
>> a=5.1;b=1+i;voyelles= ‘aeiouy’;
>> whos ;
Name Size Bytes Class
a 1x1 8 double array
b 1x1 16 double array(complex)
voyelles 1x6 12 char array
Grand total is 8 elements using 36 bytes
7
Éléments de langage
Les types de données (help datatypes)
Les réels
Représentés par des nombres flottants ;
Pas de différence entre entier, « entiers longs », réels, « réels longs »
Notation décimale (+1234.5678, -1234.5678) ou scientifique (±1234e±5678)
les complexes (complex)
Constante désignant l’imaginaire i (i2 =-1) : i ou j (Attention aux noms des
indices de boucles) ;
Ecriture : a+ib , a+i*b , r*exp(iT) , r*exp(i*T) …
Fonctions utiles : imag , real , abs , angle ;
les chaînes de caractères (char)
Suites de caractères, encadrées par des apostrophes (') ;
Interprétées comme des tableaux de caractères (de composantes, chaque
caractère de la chaîne) ;
Fonctions utiles : voir manipulation de tableaux
Le type Logique (logical)
0 pour FAUX / 1 pour VRAI ;
8
Eléments de langage
Vecteurs et matrices
Définition : liste des éléments entre crochets ([…] )
Séparation des éléments d’une même ligne par , ou espace
Séparation des lignes par ; ou retour chariot
Extraction de sous-matrices :
A(i,j) : élément de la iiéme ligne et jième colonne de A
A(:,j) : jième colonne de A
A(i,:) : iiéme ligne
A(idébut:ifin,j) : éléments des lignes idébut à ifin de la jième colonne
diag(A) : éléments de la diagonale de A
Création de matrices particulières
eye(n ) : matrice identité de taille n
ones(n,m ) : matrice de taille (n,m), de composantes 1
zeros(n,m ) : matrice de taille (n,m), de composantes 0
rand(n,m ) : matrice de taille (n,m), de composantes aléatoires (entre 0 et 1)
diag(v ) : matrice diagonale, de diagonale égale au vecteur v
9
Éléments de langage
Extraction de sous-vecteurs
v(k) : kième élément du vecteur v
Création de vecteurs particuliers
linspace(a,b,N) : crée un vecteur de taille N, de composantes
a+(k-1)(b-a)/(N-1)
a:h:b : vecteur de composantes a, a+h, a+2h, …,a+Kh avec a+Kh≤b
10
Eléments de langage
Polynômes
Définition :
un polynôme de degré n, p(x) = anxn+ an-1xn-1+…+ a1x + a0 est défini par le
vecteur p = [an,an-1,…,a1,a0 ] ;
Fonctions utiles
polyval : évaluation du polynôme p en des points donnés
poly : représentation canonique d ’un polynôme à partir de ses racines
roots : racines d’un polynôme
Variables spéciales et constantes (help elmat)
ans : résultat le plus récent
pi=3.1415926535897
i (ou j ) : unité imaginaire
eps : précision numérique relative
realmin : plus petit nombre flottant
realmax : plus grand nombre flottant
inf : infini, obtenu pour les expressions excédant realmax
NaN : Not A Number, obtenu dans les opérations d ’indétermination
Attention !
le nom des constantes n ’est pas réservé
11
Éléments de langage
Opérateurs (help ops)
Opérations matricielles : + , - , * , / , ^
\ ( division à gauche (x=a\b est la solution de ax=b)
Opérations terme à terme sur les tableaux : .* , ./ , .^
Opérateurs relationnels : == , ~= , < , > , <= , >=
Opérateurs logiques : & , | , ~ , xor
Fonctions opérant sur des Scalaires (help elfun ) :
entiers
rem : division entière
lcm : plus petit multiple commun
gcd :plus grand multiple commun
factor :décomposition en facteurs premiers
complexes
conj :conjugué
abs : module
angle : phase
real : partie réelle
imag : partie imaginaire
12
Éléments de langage
Fonctions mathématiques
log, log10, exp, sqrt, abs, sign, cos, acos, cosh, acosh, …
Fonctions d ’arrondi
round : arrondi à l’entier le plus proche
floor : arrondi par défaut
ceil : arrondi par excès
fix : arrondi par défaut (resp. excès) pour un réel positif (resp. négatif)
Fonctions opérant sur des vecteurs
cross : produit vectoriel
dot : produit scalaire
sum , prod , max , min , mean : somme, produit, maximum, minimum
et moyenne des éléments
sort : tri par ordre croissant
any : 1 si au moins un des éléments du vecteur est non nul, et 0 sinon
all : 1 si tous les éléments du vecteur sont non nuls, et 0 sinon
13
Éléments de langage
Fonction opérant sur des matrices (help matfun )
A’ : transposée de la matrice A
inv : inverse de la matrice
det : déterminant de la matrice
rank : rang de la matrice
norm : norme euclidienne de la matrice
eig : valeurs propres et vecteurs propres de la matrice
size : taille de la matrice A
poly : polynôme caractéristique d ’une matrice
trace : trace
expm : exponentielle de matrice
any / all : même fonctionnement que pour les vecteurs, mais travail par
colonnes (par défaut) ou par lignes
14
Les structures d’enchaînement
boucle FOR
Répétition d’une action un nombre déterminé de fois
Syntaxe
for variable = expression
instruction
...
instruction
End
Exemple
m=5;n=3;
for i = 1:m
for j = 1:n
H(i,j) = 1/(i+j);
end
end
15
Les structures d’enchaînement
boucle WHILE
Exécution “a priori” un nombre de fois inconnu.
Peut boucler de manière infinie
Incrémentation à la charge de l'utilisateur.
Initialisation nécessaire
Permet des conditions de test booléennes de bouclage complexes
Syntaxe
while test
instruction
...
instruction
end;
Le booléen test est la négation de la condition d'arrêt
16
Les structures d’enchaînement
Test
Réalisation d’une action sous condition
Syntaxe
if expression1
instructions1
elseif expression2
instructions2
else
instructions3
end
Exemple
if a<b
min=a
else
min=b
end
17
Les structures d’enchaînement
Branchement à choix multiples
Syntaxe
switch expression
case valeur_1
instructions1;
case valeur_2
instructions2;
case {valeur_3,valeur_4,...,valeur_n}
instructions3;
otherwise
instruction4;
end;
18
Matlab
Fichiers de commandes
19
Fichiers de commandes
Matlab permet d’exécuter facilement une séquence de commandes (script)
enregistrées dans un fichier
langage de programmation
Avantages évidents pour :
• la sauvegarde du travail
• sa mise au point
• la rapidité d’exécution
Les fichiers qui contiennent les instructions Matlab sont appelés « M-
files » et comportent une extension .m (ou .mex)
Ils consistent en une succession de commandes telles qu’elles seraient
entrées sous l’interpréteur Matlab
On peut les créer, à l’aide de l’éditeur de Matalab ou de n’importe quel
éditeur de texte, puis les utiliser de la même manière que toutes les
autres commandes de Matlab
20
L’éditeur de texte de Matlab
Lancement
À partir du menu File/New/M-file
Au clavier : CTRL + N
En cliquant sur l’icône
21
La fenêtre d’édition
Barres d’outils
Barre de menus
Exécution
Point d’arrêt Suppression des
points d’arrêt
Numéros des lignes
Onglet de sélection
22
La fenêtre d’édition
Fonctionnalités de l’éditeur
Création et modification de fichiers textes
Indentation
Reconnaissance des éléments syntaxiques et mise en couleur
Contrôle des parenthèses, crochets, accolades…
Possibilité d’atteindre rapidement une ligne donnée (Edit/Go to line ou
CTRL+G)
Marque-pages pour atteindre rapidement un endroit donné (Edit/Set/clear
bookmark, previous bookmark, next bookmark)
Recherche et remplacement de texte (Edit/Find and replace ou CTRL + F)
Sauvegarde et impression
Exécution et mise au point
Lancement (icône exécution ou Debug/Run ou F5)
Points d’arrêt (menu Breakpoints)
Exécution en pas à pas (Debug/Step, Step in, Step out)
23
Exemple de programme
Fichier de script exemple.m Exécution
% programme d'exemple : calcul dans la fenêtre de commande
% matriciel
% >> exemple
v1=[2 -1 4]
v2=[1:4] dans l’éditeur
v3=v2'
A1=[1 2;3 4] cliquer sur le bouton
A1(1,:) d’exécution ou F5 …
A1(:,2)
A2=[2 -1 0;3 4 3]
A2(1:2,1:2)
eye(4)
zeros(5,2)
M1=diag(2:4)
M2=diag(1:2,1)
M3=diag([-1 -2],-1)
M4=M1+M3-diag(3:4,1)
% indique une ligne de commentaire
24
Fichiers de fonctions
Script
Suite de commandes MATLAB (les mêmes que celles de la ligne
commande)
Pas d'arguments d'entrée et de sortie
Variables utilisées : celles de l'espace de travail
Fichier de fonction
Fichier permettant de programmer des fonctions avec des
arguments d'entrée et de sortie
Passage des arguments par valeur
Syntaxe
function [ret1,…,retN] = nom_fonction (arg1,…,argP)
Bloc d'instructions impliquant les arguments (d'entrée), et au
moins une assignation aux arguments de retour
arg1, arg2,..., argP : valeurs fournies à la fonction comme données
d'entrée (appelées arguments d'entrée)
ret1, ret2,..., retN : arguments de retour (ou de sortie) des
résultats des opérations effectuées à l'intérieur de la fonction,
et pouvant être assignés à une variable ou à plusieurs variables
à l'extérieur de la fonction
25
Exemple
Calcul de la surface d’un cylindre :
Arguments d’entrée : le rayon et la hauteur du cylindre ;
Variable de sortie : la surface, égale à 2 fois le rayon par la hauteur.
Fichier aire.m
Appel
>> R = 1.2
R =
1.2000
>> H = 12.14
H =
12.1400
>> S = aire(R,H)
S =
91.5334
>> aire(3,10)
ans =
188.4956
26
Matlab
Graphiques
27
Fenêtre graphique
L’ouverture d’une fenêtre graphique se fait à l’aide de la commande figure
figure ouvre une nouvelle fenêtre
figure(2) ouvre la figure N°2 ou l'active si elle existe déjà
Les menus et boutons permettent de modifier interactivement tous les
attributs du graphique (style, couleurs, rendu, point de vue…). Ils peuvent
aussi être définis par le programme.
Modification Ajout d’éléments
de tous les graphiques:
attributs de la Sélection des légendes, titre, flèches…
figure barres d’outil
Sauvegarde, (couleurs,…) Zoom, rotation,…
impression …
rotation
zoom
Outils texte, flèche,
ligne
28
Tracé de graphes multiples
La fenêtre graphique peut être subdivisée en plusieurs zones de tracé
par :
subplot(m,n,p) m:lignes
n: colonnes
p:graphe courant, p [1,nxm]
Exemple
figure(1)
subplot(3,1,1);
fplot('sin(x)',[0,2*pi])
subplot(3,1,2);
fplot('cos(x)',[0,2*pi])
subplot(3,1,3);
fplot('sin(x)*cos(x)',[0,2*pi])
29
Tracé de graphes multiples
Plusieurs graphes peuvent être superposés dans la même zone de tracé
par :
hold on
Pour effacer le graphe précédent lors d’un nouveau tracé, on emploie :
hold off
Exemple
figure(1)
subplot(2,1,1);
fplot('sin(x)',[0,2*pi])
hold on;
fplot('cos(x)',[0,2*pi],'r');
hold off;
subplot(2,1,2);
fplot('sin(x)*cos(x)',[0,2*pi])
30
Les types de graphiques
Matlab permet une grande variété de représentations 2D ou 3D
Courbes 2D
plot(X,Y) X,Y: vecteurs de coordonnées
et aussi
stem, stairs, semilogx, semilogy,
loglog, plotyy, errorbar,polar,…
exemples
figure figure
x=0:0.01:2 a=-6:0.3:6
y=x.^0.5 b=sinc(a)
plot(x,y) stem(a,b)
31
Les types de graphiques
Courbes 3D
plot3(X,Y,Z) X,Y,Z: vecteurs de coordonnées
exemple
figure
tetha=0:pi/50:20*pi
y=sin(tetha).*tetha
x=cos(tetha).*tetha
z=tetha
plot3(x,y,z)
grid
32
Les types de graphiques
Tracé de fonctions
fplot('fonction', bornes)
et aussi
ezplot('fonction')
ezpolar('fonction')
ezplot3(‘fonction’)
exemples:
ezplot('atan(x^2)')
ezplot('y^2-cos(x^2+y)')
33
Les types de graphiques
Histogrammes
bar, bar3, area
voir aussi :
rose
Rubans
ribbon
Nuages de points 2D
scatter, scatter3
34
Les types de graphiques
Champs de vecteurs 2D
quiver,compass,feather
Champs de vecteurs 3D
coneplot
Maillages et surfaces
mesh,surf,…
Pour des fonctions :
ezmesh,ezsurf,…
35
Les types de graphiques
isocontours (courbes de niveau)
contour, contourf, ezcontour,…
et ezcontourf
isocontours 3D
contour3
Images
imagesc, imshow
Données volumiques
36
Propriétés du graphique
axes titres et légendes
Modification des bornes du Titre
tracé title('chaîne de caractères')
axis([xmin xmax ymin ymax]) Légende d'axe
axis([xmin xmax ymin ymax xlabel('chaîne de caractères')
zmin zmax])
ylabel('chaîne de caractères')
axis auto
Texte n'importe où dans la
Suppression des axes fenêtre
axis off text(x,y,'chaîne de
axis on caractères')
Rapport x/y Légende
axis square legend('chaîne de caractères',
axis equal 'chaîne de caractères',…)
axis normal
Ajout d’un quadrillage
grid on
grid off
37
Propriétés du graphique
Couleurs, styles de lignes et marqueurs
Certains attributs du graphique peuvent être spécifiés dans les tracés 2D.
syntaxe
plot(x,y,'couleur_style_marqueur')
couleurs
'c' 'm' 'y' 'r' 'g' 'b' 'w' 'k'
cyan magenta yellow red green blue white black
styles de lignes
marqueurs
38
Matlab
Entrées-sorties
39
Entrées-sorties
Le transit de données (‘entrées’ ou ‘sorties’) avec Matlab peut se faire
de 3 façons différentes:
Opérations interactives à travers l’utilisation du clavier (entrées) et de l’écran
(sorties)
Lecture ou écriture d’un fichier de données
Sauvegarde de variables par l'utilisation des fonctions save et load
40
Entrées-sorties interactives
Lecture en mode interactif (clavier)
n=input(‘Entrez la valeur de l’entier: ’)
Affiche au clavier la chaîne de caractères :
‘Entrez la valeur de l’entier: ’
et attend que l’utilisateur entre la valeur. Ensuite, la donnée est stockée dans
la variable n
Ecriture à l'écran avec fprintf
exemple : fprintf(‘Le volume est: %12.5f.\n',vol)
Chaîne de format
Chaîne de format :
• \n spécifie un passage à la ligne suivante Code de format Descriptif Exemple
• % spécifie l’endroit dans la chaîne de c Caractère a
sortie où doit être écrit la variable d ou i entier décimal, signé -392
e Notation scientifique, avec e 3.9265e2
• 12.5 écriture avec 5 chiffres après la E Notation scientifique, avec E 3.9265E2
virgule. Réserve 12 espaces pour f réel sans exposant 392.65
écrire, et met des blancs si pas g le plus court de %e ou %f 392.65
utilisés. G le plus court de %E ou %f 392.65
• f spécifie le format d’affichage. o Octal signé 610
y a d’autres codes d’affichage s Chaîne de caractères pipoule
u Entier décimal non signé 7235
x Entier hexadécimal non signé 7fa
X Entier hexadécimal non signé (capitales) 7FA
p adresse B800:0000
41
Fichiers formatés
Ouverture du fichier
fid=fopen(nom,mode)
fid,Message]=fopen(nom,mode)
fid : entier constituant un identifiant "poignée", qui permettra l’utilisation du
fichier après ouverture (entier positif si succès, -1 sinon)
Message : message d ’erreur renvoyé si l ’ouverture n ’a pas pu se faire
nom : nom sur disque du fichier
Mode : chaîne pouvant prendre les valeurs suivantes :
‘ r ’ : pour la lecture
‘ w ’ : pour l’écriture (création si nécessaire)
‘ a ’ : pour l’ajout (création si nécessaire)
Fermeture du fichier
val = fclose(fid)
fid : identifiant correspondant au fichier à fermer
val : égal à 0 en cas de succès ou -1 en cas d ’échec
42
Lecture et écriture formatée dans un fichier
Ecriture
fprintf(fid,chaîne_de_format,arg1,arg2,…)
même fonctionnement que pour un affichage à l’écran
Lecture
[a,compteur]= fscanf(fid,chaîne_de_format,taille)
fid : identificateur du fichier à lire (qui doit avoir été ouvert par fopen)
a : matrice dans laquelle se trouve le résultat de la lecture
compteur (optionnel) : retourne le nombre d ’éléments lus avec succès
taille (optionnel) :
si taille n ’est pas précisé, le fichier est lu entièrement
si taille = n, n éléments sont lus et mis dans un vecteur colonne a
si taille = [m,n], les mxn premiers éléments sont mis dans une matrice a
de taille mxn, avec remplissage colonne par colonne.
chaîne_de_format: chaîne de caractères permettant de préciser le mode de
conversion utilise le caractère % suivi de caractères de conversion :
d : décimal ;
f : flottant fixe [-][Link] ;
e, : flottant scientifique [-][Link][+/-]xxxx ;
c : caractère ;
s : chaîne de caractères. 43
Lecture et écriture binaire
Ecriture
compteur = fwrite(fid,a)
fid : identificateur du fichier à lire (qui doit avoir été ouvert par fopen)
a : matrice à écrire dans le fichier
compteur (optionnel) : retourne le nombre d ’éléments écrits avec succès
Lecture
[a,compteur]= fread(fid,taille)
fid : identificateur du fichier à lire (qui doit avoir été ouvert par fopen)
a : matrice dans laquelle se trouve le résultat de la lecture
compteur (optionnel) : retourne le nombre d ’éléments lus avec succès
taille (optionnel) :
si taille n ’est pas précisé, le fichier est lu entièrement
si taille = n, n éléments sont lus et mis dans un vecteur colonne a
si taille = [m,n], les mxn premiers éléments sont mis dans une matrice a
de taille mxn, avec remplissage colonne par colonne.
44
Lecture et écriture de variables
Ecriture
save fich_sauv a b c
save fich_sauv.txt a b c -ascii
fich_sauv : nom du fichier (fich_sauv.mat pour des fichiers binaires)
a, b, c : variables à sauvegarder
- ascii : option pour créer un fichier ascii lisible par d’autres applications
Lecture
load fich_sauv
load fich_sauv a c
load fich_sauv.txt
45
Matlab
Fonctions utiles en traitement du signal
46
Signaux utiles
Porte
rectpuls
1.5
Exemple 1
Te=0.01 0.5
t=-2:Te:2 0
x = rectpuls(t)
-0.5
y = 1.25*rectpuls(t,3) -2 -1.5 -1 -0.5 0 0.5 1 1.5 2
plot(t,x,t,y)
Impulsion triangulaire
tripuls 1.5
1
Exemple
0.5
t=-10:Te:10 0
x = tripuls(t,12)
-0.5
plot(t,x) -10 -5 0 5 10
47
Signaux utiles
Sinus cardinal
sinc
Exemple 1
Te=0.01
0.5
t=-10:Te:10
x = sinc(t) 0
plot(t,x)
-0.5
-10 -5 0 5 10
Signaux périodiques
sin, cos - signaux sinusoidaux
Exemple
1
0.5
x = sin(2*pi*t)
0
y = cos(pi*t)
-0.5
plot(t,x,t,y)
-1
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
48
Signaux utiles
Signaux périodiques
square - signal carré
Exemple 1.5
1
x=square(2*pi*t) 0.5
y=1.25*square(2*pi*t, 30) 0
-0.5
plot(t,x,t,y,':') -1
-1.5
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
sawtooth -signal en dents de scie
Exemple 1.5
1
x = sawtooth(2*pi*t) 0.5
y = 1.25*sawtooth(2*pi*t,30) 0
-0.5
plot(t,x,t,y,':') -1
-1.5
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
49
Représentation fréquentielle
Transformations
fft - transformée de Fourier discrète
fftshift - permutation des hautes fréquences vers les
fréquences négatives
ifft - transformée de Fourier discrète inverse
Exemple
S=fft(s);
S2=fftshift(S);
subplot(211)
plot(f,abs(S))
subplot(212)
plot(f2,abs(S2))
50
Représentation fréquentielle
Fenêtres de pondération
boxcar - fenêtre rectangulaire
triang - fenêtre triangulaire
hamming - fenêtre de Hamming
hann - fenêtre de Hanning
kaiser - fenêtre de Kaiser
bartlett - fenêtre de Bartlett
blackman - fenêtre de Blackman
51
Représentation fréquentielle
Exemple
>> N=25;
>> k=-(N-1)/2:(N-1)/2;
>> s=hamming(N);
>> stem(k,s)
52
Filtrage numérique
Filtres à réponse impulsionnelle infinie
Synthèse des filtres
butter - filtre de Butterworth
cheby1 - filtre de Tchebycheff de type I
(ondulation dans la bande passante)
ellip - filtre elliptique
calcul de l’ordre
buttord - ordre pour un filtre de Butterworth
cheb1ord - ordre pour un filtre Tchebycheff de type I
ellipord - ordre pour un filtre elliptique
53
Filtrage numérique
Exemple
Wp=0.5; % fréquences normalisée
Ws=0.8;
Rp=3;
Rs=40;
[N, Wn] = buttord(Wp, Ws, Rp, Rs) %ordre et fréquence de
coupure
[b,a]=butter(N,Wn) % coefficients
Résultats
N=5
Wn = 0.5642
b = 0.0849 0.4247 0.8494 0.8494 0.4247 0.0849
a = 1.0000 0.6325 0.7735 0.2281 0.0776 0.0063
54
Filtrage numérique
Filtrage
filter
filtrage d’un signal. Le filtre est défini par les coefficients
an et bm de la fonction de transfert en z, en supposant
a0=1
N M
y(k ) an .y(k n) bm .x(k m)
n 1 m 0
y(k ) b0 x(k ) b1x(k 1) bM x(k M)
a1y(k 1) aN y(k N)
55
Filtrage numérique
exemple : filtrage d’un signal aléatoire large bande
Wp=0.3; Ws=0.5;Rp=3;Rs=40;N=1024;
t=(0:N-1);f=(0:N-1)/N;f=(-N/2:(N-1)/2)/N;
[n, Wn] = buttord(Wp, Ws, Rp, Rs)
[b,a]=butter(n,Wn)
s=randn(N,1)
v=filter(b,a,s);
S=fftshift(fft(s));
V=fftshift(fft(v));
subplot(211)
plot(f,abs(S))
subplot(212)
plot(f,abs(V))
56
Filtrage numérique
Calcul de la réponse impulsionnelle
impz
Renvoie la réponse impulsionnelle du filtre. Le filtre est
défini par les coefficients an et bm de la fonction de
transfert en z, en supposant a0=1
Remarque
>>h=impz(b,a,N)
est équivalent à :
>>imp=[1, zeros(1,N-1)];
>>h=filter(b,a,imp)
57
Filtrage numérique
Calcul de la réponse en fréquence
freqz
Renvoie la réponse fréquentielle du filtre. Le filtre est défini par
les coefficients an et bm de la fonction de transfert en z, en
supposant a0=1
Remarque
>>[S,f]=freqz(b,a,N,Fe);
est équivalent à :
>>f=(0:N-1)*Fe/N;
>>v=impz(b,a,2*N)
>>S=fftshift(fft(v));
>>S=S(N+1:2*N)
58