100% ont trouvé ce document utile (1 vote)
280 vues14 pages

TP1 Numérisation Sous Matlab

Transféré par

Aziz Mansouri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
280 vues14 pages

TP1 Numérisation Sous Matlab

Transféré par

Aziz Mansouri
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Compte rendu

TP1 : Numérisation sous


Matlab

Réaliser par :
Fadi Boubakri
Med El Mehdi Cherif
I. Echantillonnage :
Vecteur temps :
Sous MATLAB, pour créer un vecteur y ligne contenant toutes les valeurs entre début et fin
avec un pas de pas, on peut utiliser :
y = debut:pas:fin;
% Exemples d'utilisation :
x1 = 0:0.1:1; % Vecteur ligne 0, 0.1, 0.2, ...
x2 = 3:8; % Vecteur ligne 3, 4, 5, ...
x3 = (0:5)'/2; % Vecteur colonne 0 1/2 1, ...
Si la valeur de pas n’est pas spécifiée, MATLAB la fixe automatiquement à 1.
1-On considère un signal contenant N échantillons et échantillonné à une fréquence Fe.
Ecrire son vecteur temps sous forme d’équation puis sous forme de commande MATLAB :
Si un signal contient N échantillons et est échantillonné à une fréquence Fe, la durée de
chaque échantillon est 𝑇𝑒 = 1 / Fe
Le vecteur temps peut être exprimé comme :
t=[0,Te,2Te,…,(N−1)Te]
En MATLAB, cela se traduit par :
N = 1000; % par exemple
Fe = 1000; % fréquence d'échantillonnage en Hz
Te = 1 / Fe; % période d'échantillonnage
t = (0:N-1) * Te; % vecteur temps
2- On souhaite enregistrer d secondes d’un signal échantillonné à une fréquence Fe. Ecrire
son vecteur temps sous forme d´équation puis sous forme de commande MATLAB :
Si l'on souhaite enregistrer un signal pendant d secondes à une fréquence Fe, le nombre
d'échantillons N est donné par N=Fe×d.

Le vecteur temps peut être exprimé comme : t=[0,1/Fe,2/Fe,…,N−1/Fe]

En MATLAB, cela se traduit par :


d = 5; % durée d'enregistrement en secondes
Fe = 1000; % fréquence d'échantillonnage en Hz
N = Fe * d; % nombre d'échantillons
t = (0:N-1) / Fe; % vecteur temps

II. Exercice : Signal Numérique :


Un signal à numériser doit d’abord être échantillonné. D’après Shannon, la fréquence
d’échantillonnage doit être égale au moins au double de la fréquence maximale du signal à
échantillonné.
Commençons par créer un signal échantillonné. Il est composé de N échantillons et formé
par la somme de trois sinusoïdes de fréquences égales respectivement à 1khz, 2khz et 4khz.
La fréquence d’échantillonnage est de 20khz. Les amplitudes maximales de ces trois
sinusoïdes sont respectivement 2.0, 1.2, et 0.75.
Est-ce que la condition de Shannon est respectée ? :
-La condition de Shannon impose que : fe≥2×fmax
Puisque fe=20 kHz≥2×fmax =2x4=8 kHz, la condition de Shannon est respectée.
Supposons que le nombre d’échantillons à avoir dépend de la fréquence
Est-ce que la condition de Shannon est respectée ? :
Supposons que le nombre d’échantillons à avoir dépend de la fréquence maximale du signal
et aussi de la fréquence d’échantillonnage en utilisant l’expression suivante :
𝑁 = 2 *(𝑓𝑒/𝑓𝑚𝑎𝑥)
-Oui, la condition de Shannon est respectée dans ce cas puisque fe=20 kHz≥2×fmax =8 kHz.
La condition de Shannon est indépendante de la valeur de N.
Tâches :
1. Calcule de nombre d’échantillons N :
𝑁 = 2 *(𝑓𝑒/𝑓𝑚𝑎𝑥) =2*(20/4) = 10 échantillons.
2. Calcule de puissance moyenne de signal échantillonné :
X = [3.950000000000000,3.104696171621455,1.382091636218621,0.197987365553799,-
0.121023658718831,-0.450000000000000,-1.357091636218620,-2.153153643616093,-
1.853976341281169,-0.699529893559162]
1
P=𝑁 ∑𝑁−1 2
𝑖=0 𝑋[𝑖] = 3.77223 W
3. Écriture et exécution de ce script :

Interprétations :
1. Les résultats obtenus :
t= [0,1,2,3,4,5,6,7,8,9]
T= [0,5.000000000000000e-05,1.000000000000000e-04,1.500000000000000e-
04,2.000000000000000e-04,2.500000000000000e-04,3.000000000000000e-
04,3.500000000000000e-04,4.000000000000000e-04,4.500000000000000e-04]
x=[3.950000000000000,3.104696171621455,1.382091636218621,0.197987365553799,-
0.121023658718831,-0.450000000000000,-1.357091636218620,-2.153153643616093,-
1.853976341281169,-0.699529893559162]
Plot :

E= 3.78125
2. Que représente la valeur de E calculée dans ce script ?
E représente la puissance moyenne de ce signale
3. Quelle est la formule utilisée dans le programme pour calculer E ?
𝑋[𝑘]2 1
E=(x*x’)/N=∑𝑁−1
𝑘=0 = ∑𝑁−1
𝑘=0 𝑋[𝑘]
2
𝑁 𝑁

4. Comparaison entre le calcul pratique et le calcul théorique de l'énergie :


Eth=3.77223 W égale au Ep=3.78125 W
Le résultat est presque la même puisque on a suréchantillonné le signal alors la puissance du
signal échantillonnée se rapproche de puissance de signal analogique.
5. Reprendre le même script en multipliant par 4 le nombre de points du vecteur t (le pas au
lieu de 1 doit être de 0.25). Y a-t-il un changement ? Pourquoi ?
-Résultat :

Oui, il y a un changement. La forme du signal se semble plus au signal analogique parce que le
fait de multiplier par 4 le nombre de point de vecteur t, On a augmenté le nombre d’échantillon
N=10 à N=37 cela améliore la qualité de signale échantillonné.
Travail à effectuer :
Refaire la même chose, en utilisant successivement les deux cas pour le vecteur t, mais avec un
signal généré composé de quatre sinusoïdes. Les trois premières comme pour l'exemple
précédent. La quatrième possède une fréquence égale à 12 kHz et une amplitude égale à -0.5.
Sinusoïde 1 : A1=2.0 f1=2khz Sinusoïde 2 : A2=1.2 f2=1khz Sinusoïde 3 : A3=0.75 f3=4khz
Sinusoïde 4 : A4=-0.5 f1=12khz
-Cas ou t = [0:1:N-1] :
1. Calcule de nombre d’échantillons N :
𝑁 = 2 *(𝑓𝑒/𝑓𝑚𝑎𝑥) =2*(20/12) =3.333 ≈ 4 échantillons.
2. Calcule de puissance moyenne de ce signal :
X = [3.450000000000000,3.509204668808928,1.227583139031147,0.043478868366326]
1
P=𝑁 ∑𝑁−1 2
𝑖=0 𝑋[𝑖] = 2.57258 W

3. Nouvelle script d’exécution :


f1 = 1000; %La fréquence de la première sinusoïde
f2 = 2000; %La fréquence de la deuxième sinusoïde
f3 = 4000; %La fréquence de la troisième sinusoïde
f4 = 12000;%La fréquence de la quatrième sinusoïde
fe = 20000; %La fréquence d’échantillonnage
N = 4; % Dans cet exemple on va prendre le nombre d’échantillons qui dépend de
la fréquence maximale
t = [0:1:N-1]; %Nous générons un vecteur normé
T = t / fe; %Vecteur de temps [Te 2*Te 3*Te ... (N-1)*Te]
x = 2*cos(2*pi*f1*T) + 1.2*cos(2*pi*f2*T) + 0.75*cos(2*pi*f3*T)-
0.5*cos(2*pi*f4*T); %x est donc un vecteur de N points représentant un cosinus
échantillonné
plot(T, x, '-+') %On trace la courbe
title('Echantillonnage d''un signal périodique')
xlabel('Temps (s)')
ylabel('Amplitude')
E =(x*x')/N;

Interprétations :
1. Les résultats obtenus :
t= [0,1,2,3]
T= [0,5.000000000000000e-05,1.000000000000000e-04,1.500000000000000e-04]
x=[3.450000000000000,3.509204668808928,1.227583139031147,0.043478868366326]
Plot :

Ep= 6.4315 W
2. Comparaison entre le calcul pratique et le calcul théorique de l'énergie :
Eth=2.57258 W différent de Ep=6.4315 W
Le résultat est different puisque on a souséchantillonné le signal alors la puissance du signal
échantillonnée n’est pas la même de signal analogique.
3. Reprendre le même script en multipliant par 4 le nombre de points du vecteur t (le pas
au lieu de 1 doit être de 0.25). Y a-t-il un changement ? Pourquoi ?
-Résultat :

Oui, il y a un changement. La forme du signal se semble plus au signal analogique parce que le
fait de multiplier par 4 le nombre de point de vecteur t, On a augmenté le nombre d’échantillon
N=4 à N=13 cela améliore la qualité de signale échantillonné.
4. Échantillonnage de signal (fichier audio) :
Script de programme d’échantillonnage :
% Charger le fichier son
[signal, fe] = audioread('QQ.wav'); % Remplacez par le nom de votre fichier
son
% Limiter la durée du signal à 1 seconde pour éviter les tableaux trop grands
duree = 0.02; % durée en secondes
signal_portion = signal(1:min(duree*fe, length(signal))); % Portion de signal
% Normaliser le signal
signal_portion = signal_portion / max(abs(signal_portion));
% Taille de la portion de signal à analyser
N = length(signal_portion);
% Vecteur de temps associé
t = (0:N-1) / fe;
% Calcul de l'énergie avec le sous-échantillonnage
E1= sum(signal_portion.^2) /N;
%cas 1 :sous-échantillonnage avec nombre de points complets :
figure;
plot(t, signal_portion,'-+')
title('Signal audio sous-échantillonné 1');
xlabel('Temps (s)');
ylabel('Amplitude');
% Cas 2 : Sous-échantillonnage pour réduire le nombre de points
pas = 4; % Exemple : sous-échantillonnage par un facteur de 4
signal_echant2 = signal_portion(1:pas:end); % Sous-échantillonnage
t2 = t(1:4:end); % Vecteur temps correspondan
% Calcul de l'énergie avec le sous-échantillonnage
E2 = sum(signal_echant2.^2) / length(signal_echant2);
disp(['Energie du signal audio avec sous-échantillonnage : ', num2str(E2)])
% Tracé du signal sous-échantillonné
figure;
plot(t2, signal_echant2,'-+')
title('Signal audio sous-échantillonné 2');
xlabel('Temps (s)');
ylabel('Amplitude');
Interprétation :
1. Les résultats obtenus :
Pour d=0.02 s et N=882 échantillons
E=0.051829448307485 W
Fe=44100 Hz
Figure :
Pour d=0.02s et N=221 échantillons
E=0.051705042553992 W
Fe=44100 Hz
Figure :

Remarque :
En diminuant le nombre d’échantillon pris, le signal trouver ne se semble plus au signal d’origine
5. Conclusion :
-Lorsque on respecte le critère de Shannon (fe>2fmax) et on sur-échantillonne le signal. Alors le
signal échantillonné trouver représente entièrement le signal original.
-Lorsque on ne respecte pas le critère de Shannon (fe<2fmax) et on sous-échantillonne le signal.
Alors le signal échantillonné trouver ne représente plus le signal original.
III. Spectre d'un signal échantillonné :
Travail à effectuer :
1. Figure de spectre du signal x avec les trois sinusoïdes :
Script de programme de spectre de signal :
% Paramètres
f1 = 1000; %La fréquence de la première sinusoïde
f2 = 2000; %La fréquence de la deuxième sinusoïde
f3 = 4000; %La fréquence de la troisième sinusoïde
Fs = 20000; % Fréquence d'échantillonnage de 1000 Hz
N = 2 * fe / f3; % Nombre d'échantillons
% Vecteur temps
t = (0:N-1) / fe;
signal = 2*cos(2*pi*f1*t) + 1.2*cos(2*pi*f2*t) + 0.75*cos(2*pi*f3*t); %signal
est donc un vecteur de N points représentant un cosinus échantillonné

% Tracer le signal
figure;
plot(t, signal);
title('Signal temporel');
xlabel('Temps (s)');
ylabel('Amplitude');
grid on;

% Tracer le spectre
plot_spectrum(signal, Fs);

% Fonction pour tracer le spectre


function plot_spectrum(signal, Fs)
% Calculer la FFT
L = length(signal); % Longueur du signal
Y = fft(signal); % Calcul de la FFT
P2 = abs(Y/L); % Spectre double face
P1 = P2(1:L/2+1); % Spectre à une face
P1(2:end-1) = 2*P1(2:end-1); % Correction des amplitudes
f =Fs*(0:(L/2))/L ; % Vecteur de fréquences

% Tracer le spectre
figure;
plot(f, P1);
title('Spectre du signal');
xlabel('Fréquence (Hz)');
ylabel('Amplitude');
grid on;
end
Résultat :

2. Figure de spectre du signal x avec les quatre sinusoïdes :


Script de programme de spectre de signal :
% Paramètres
f1 = 1000; %La fréquence de la première sinusoïde
f2 = 2000; %La fréquence de la deuxième sinusoïde
f3 = 4000; %La fréquence de la troisième sinusoïde
f4 = 12000; %La fréquence de la quatrième sinusoïde
Fs = 20000; % Fréquence d'échantillonnage de 1000 Hz
N = 4; % Nombre d'échantillons
% Vecteur temps
t = (0:N-1) / fe;
signal = 2*cos(2*pi*f1*t) + 1.2*cos(2*pi*f2*t) + 0.75*cos(2*pi*f3*t)-
0.5*cos(2*pi*f4*t) ; %signal est donc un vecteur de N points représentant un
cosinus échantillonné
% Tracer le signal
figure;
plot(t, signal);
title('Signal temporel');
xlabel('Temps (s)');
ylabel('Amplitude');
grid on;
% Tracer le spectre
plot_spectrum(signal, Fs);
% Fonction pour tracer le spectre

function plot_spectrum(signal, Fs)


% Calculer la FFT
L = length(signal); % Longueur du signal
Y = fft(signal); % Calcul de la FFT
P2 = abs(Y/L); % Spectre double face
P1 = P2(1:L/2+1); % Spectre à une face
P1(2:end-1) = 2*P1(2:end-1); % Correction des amplitudes
f =Fs*(0:(L/2))/L ; % Vecteur de fréquences

% Tracer le spectre
figure;
plot(f, P1);
title('Spectre du signal');
xlabel('Fréquence (Hz)');
ylabel('Amplitude');
grid on;
end
Résultat :

3. Commentaire :
On remarque que pour le signal a 3 sinusoïde ou fe > 2*fmax les motifs sont disjoints et éloignés
les uns des autres. La récupération du spectre du signal analogique est possible par un simple
filtrage passe –bas.
On remarque que pour le signal a 4 sinusoïde ou fe<2*fmax il ya un repliement de spectre et on
ne peut plus dans ce cas retrouver le spectre du signal analogique.

Vous aimerez peut-être aussi