Sunteți pe pagina 1din 7

LABORATOR 1 TaPDS

A. Semnale deterministe discrete: FFT, filtrare digital


(Recapitulare)

Exemplul 1.1

S se efectueze o suit de comenzi Matlab care s realizeze urmtoarele operaii:


1. Se genereaz dou semnale sinusoidale discrete cu amplitudinile 3 i 6, fazele 0 i
frecvenele 1 kHz i 3 kHz, notate s1 i respectiv s2 , cu n ntre 0 i 1 s, pasul fiind de 1 / f e
(frecvena de eantionare este f e = 10 kHz).

2. Se obin semnalele s3 i s4 , alctuite din primele N = 128 de eantioane ale lui s1 i


respectiv s2 , apoi se formeaz semnalul s( n ) s3 (n ) s4 ( n ) .

3. Se vizualizeaz modulul spectrului discret | S (k ) | pentru semnalul s( n ) , astfel: FFT


n 128 de puncte, calibrarea axei Ox n Hz, folosirea funciei plot pentru o mai bun
interpretare a nfurtoarei spectrului.
4. Se proiecteaz un filtru digital de tip IIR care va trebui s lase s treac doar
frecvenele peste 2 kHz; sinteza va porni de la un filtru analogic Butterworth de ordinul 12, cu
frecvena de tiere f c = 1.6 kHz (frecvena de eantionare este 10 kHz).

5. Se vizualizeaz modulul rspunsului n frecven pentru filtrul sintetizat; afiarea se va


face n Hz, scara pe axa Oy va fi liniar, pe ecran se va afia rastru de linii; graficul va avea scris:
titlul: Filtru digital IIR de ordinul 12
pe axa Ox: Frecventa (Hz)
pe axa Oy: Modulul raspunsului in frecventa
6. Se implementeaz i se testeaz filtrul prin aplicarea la intrare a semnalului s( n ) ; se
va vizualiza modulul spectrului discret pentru semnalul y (n ) obinut dup filtrare (FFT n 128
de puncte, calibrarea axei Ox n Hz, folosirea funciei plot). Interpretare a graficului obinut.
%Exemplul 1.1 - Rezolvare

%1. Se genereaza un semnal format din doua sinusoide cu amplitudinile


%6 si 3, fazele 0 si frecventele 1 kHz si respectiv 3 kHz, notate
%s1 si s2, intre 0 si 1 s, cu pasul de 1/fe; fe = 10 kHz

clear all
close all

fe = 1e4; Te = 1/fe; F1 = 1e3; F2 = 3e3;


t_n = 0:Te:1;
s1 = 6*sin(2*pi*F1*t_n);
s2 = 3*sin(2*pi*F2*t_n);

%2. Se obtin semnalele s3 si s4, din primele N = 128 esantioane


%ale lui s1 si s2. Se face suma s(n) = s3(n) + s4(n)

N = 128;
s3 = s1(1:N);
s4 = s2(1:N);
s = s3+s4;

%3. Vizualizarea modulului spectrului discret pentru s(n);


%FFT in N = 128 de puncte, calibrarea axei Ox in Hz

plot((0:(N-1))/N*fe, abs(fft(s))) %Fig. 1


figure
%varianta - spectrul centrat in origine:
plot((-N/2:N/2-1)/N*fe, abs(fftshift(fft(s)))) %Fig. 2

%Proiectarea filtrului IIR: selectarea frecventelor incepand cu 2 kHz

%4. Sinteza: FTS, fc = 1.6 kHz, fe = 10 kHz; se porneste de la un FTJ


%Butterworth de ordinul 12

[b,a] = butter(12,1600/5000,'high');

%5. Analiza: modulul raspunsului in frecventa, scara liniara pe Oy

[h,w] = freqz(b,a,256,fe); %afisare in Hz


figure
plot(w,abs(h)),grid %Fig. 3
title('Filtru digital IIR de ordinul 12')
xlabel('Frecventa (Hz)')
ylabel('Modulul raspunsului in frecventa')

%Verificarea filtrului prin implementarea sa; trecerea semnalui s(n)


%prin filtru si vizualizarea spectrului semnalului obtinut

y = filter(b,a,s);
figure
plot((0:(N-1))/N*fe, abs(fft(y))) %Fig. 4
figure
%varianta - spectrul centrat in origine:
plot((-N/2:N/2-1)/N*fe, abs(fftshift(fft(y)))) %Fig. 5

2
B. Semnale aleatorii discrete: reprezentri,
parametri statistici

%Exemplul 1.2
%Distributii de probabilitate; valori medii statistice

%Observatii:
%1."Zgomot alb" = semnal aleatoriu cu toate esantioanele complet
%necorelate; poate avea orice distributie de probabilitate.
%2. Prin definitie, un "semnal aleatoriu Gaussian" (cu distributie de
%probabilitate normala) este stationar in sens larg, are valoarea
%medie zero si varian sigma^2.
%3. "Zgomot alb Gaussian" (WGN - "White Gaussian Noise") = un semnal
%de tip zgomot alb, cu distributie Gaussiana (medie zero, varian
%sigma^2).
%4. functia Matlab randn() genereaza un "zgomot alb Gaussian standard"
%(mai exact, o secventa pseudoaleatorie), cu medie zero si varian 1.

%a) Se genereaza doua secvente de tip zgomot alb Gaussian (WGN)


%folosind randn, cu 101 esantioane; se vizualizeaza in aceeasi
%fereastra grafica

close all
clear all

n = 0:100;
x1 = randn(size(n)); %help randn
x2 = randn(size(n));
%Comentariu - variante de scriere:
%x = randn(1,101);
%x = randn(1,length(n));

subplot(2,1,1)
stem(n,x1,'filled')
title('Doua secvente de tip zgomot alb Gaussian (WGN)')
subplot(2,1,2)
stem(n,x2,'filled') %Fig. 1

%b) Se pune in evidenta alura curbei ce caracterizeaza o distributie


%Gaussiana, prin realizarea unor histograme (10000 si 1001 de puncte).

figure
hist(randn(1,10000),50) %help hist Fig. 2
title('Histograma unui WGN (10000 puncte)')

figure
n1 = 0:1000;
x11 = randn(1,1001);
x22 = randn(1,1001);
subplot(2,2,1)

3
stem(n1,x11,'filled')
subplot(2,2,2)
hist(x11,50)
subplot(2,2,3)
stem(n1,x22,'filled')
subplot(2,2,4)
hist(x22,50) %Fig. 3

%Comentariu: cu cat numarul de esantioane ale secventei aleatorii este


%mai mic, cu atat alura curbei se abate mai mult de la caracteristica
%ideala (se compara histograma din Fig. 2 cu cele din Fig.3).

%c) Sa se verifice corectitudinea histogramei din Fig. 2, desenand pe


%acelasi grafic curba ce defineste teoretic densitatea de
%probabilitate pentru o distributie Gaussiana: pentru o variabila
%aleatorie x,
%p(x) = (1 / (sigma*sqrt(2*pi)) * exp(- ((x-m)^2 / (2*sigma^2)),
%unde m = valoarea medie, sigma^2 = variana.
%Cerinte: curba teoretica va avea culoarea rosie si grosimea liniei =
%2; histograma va avea culoarea albastra

figure
[h,x] = hist(randn(1,10000),50);
m = 0 ; sigma = 1;
p = (1/(sigma*sqrt(2*pi)))*exp(-((x-m).^2)/(2*sigma^2));
h1 = (h/max(h))/(sigma*sqrt(2*pi)); %pentru scalare
bar(x,h1,'b'), grid
hold on
plot(x,p,'r','linewidth',2) %Fig. 4
title('Distributie Gaussiana teoretica si histograma simulata pentru
un WGN')
hold off

%d) Pornind de la secventa x1, sa se genereze o secventa aleatorie x3


%cu valoarea medie 4 si variana 9; se vizualizeaza in aceeasi
%fereastra grafica cu x1.
%Observatie - vom folosi urmatoarea proprietate statistica:
%"Multimplicarea unei variabile aleatorie cu o constanta conduce la o
%varian care este patratul acestei constante inmultita cu variana
%variabilei".

x3 = 4 + 3*x1;
figure
subplot(2,1,1)
stem(n,x1,'filled')
subplot(2,1,2)
stem(n,x3,'filled') %Fig. 5

%e) Se calculeaza si se afiseaza in fereastra de comanda valoarea


%medie, variana si deviatia standard (SD - "Standard Deviation")
%pentru secventele x1 si x2 create anterior; comparati cu valorile
%teoretice - interpretare!
%De asemenea, se vor verifica aceste marimi pentru secventa x3

4
media_x1 = mean(x1) %help mean
var_x1 = var(x1) %help var
SD_x1 = std(x1) %help std
media_x2 = mean(x2)
var_x2 = var(x2)
SD_x2 = std(x2)

media_x3 = mean(x3)
var_x3 = var(x3)
SD_x3 = std(x3)

%f) Se genereaza o secventa de tip zgomot alb cu distributie uniforma


%folosind functia Matlab rand() - valori intre 0 si 1, valoare medie
%0.5 si varian 1/12 (101 esantioane). Se calculeaza si se afiseaza
%in fereastra de comanda valoarea medie, variana si deviatia standard
%pentru aceasta secventa.
%Se realizeaza apoi histograma pentru o secventa de 10000 de
%esantioane

figure
x4 = rand(size(n)); %help rand
stem(n,x4,'filled') %Fig. 6
title('Zgomot alb cu distributie uniforma')

media_x4 = mean(x4)
var_x4 = var(x4)
SD_x4 = std(x4)

figure
hist(rand(1,10000),40) %Fig. 7
title('Histograma unui zgomot alb cu distributie uniforma (10000
puncte)')

%Observatie: programul se va rula de mai multe ori, succesiv;


%se va observa comportarea marimilor statistice calculate si
%vizualizate

5
%Exemplul 1.3
%Functiile de autocorelatie si intercorelatie; aplicatii

close all
clear all

%a) Se estimeaza functiile de autocorelatie pentru doua secvente


%de tip zgomot alb Gaussian (100 si respectiv 100000 de esantioane)
%si se afiseaza in doua moduri de reprezentare

%versiuni deplasate ("biased"), fara scalare:


x1 = randn(1,100);
x2 = randn(1,10000);
R_x1x1 = xcorr(x1); %help xcorr
n1 = 0:198; %explicatie!
subplot(2,1,1) %Fig. 1
stem(n1,R_x1x1,'filled')
R_x2x2 = xcorr(x2);
n2 = 0:19998;
subplot(2,1,2)
plot(n2,R_x2x2)
%Observatie: desi este vorba tot despre o secventa discreta, pentru
%graficul al doilea s-a folosit plot pentru o afisare "mai putin
%incarcata" in fereastra grafica

%versiuni centrate in origine:


figure
[A,lags1] = xcorr(x1);
[B,lags2] = xcorr(x2);
subplot(2,1,1) %Fig. 2
stem(lags1,A,'filled')
subplot(2,1,2)
plot(lags2,B)

%Comentariu: cu cat numarul de esantioane al secventei aleatorii


%este mai mare, cu atat estimatul functiei de autocorelatie este
%mai corect (teoretic, R_xx difera de zero doar in origine!)

%b) Se estimeaza funtia de intercorelatie intre doua secvente


%de tip zgomot alb Gaussian

figure
x3 = randn(1,200);
x4 = randn(1,200);
R_x3x4 = xcorr(x3,x4);
n3 = 0:398;
stem(n3,R_x3x4,'filled') %Fig. 3
%Se observa ca secventele x3 si x4 sunt practic necorelate!

%c) Se estimeaza functia de autocorelatie pentru un semnal periodic -


%versiune nedeplasata ("unbiased"), centrata in origine;
%se va utiliza un semnal sinusoidal de amplitudine 1, faza 0
%si frecventa 300 Hz, frecventa de esantionare 8 kHz

6
fe = 8e3; Te = 1/fe; F1 = 300;
t_n = 0:Te:1;
s1 = sin(2*pi*F1*t_n);
s = s1(1:100);
figure
n = 0:99;
stem(n,s,'filled') %Fig. 4
figure
[C,lags3] = xcorr(s,'unbiased');
stem(lags3,C,'filled') %Fig. 5
%Interpretati graficul obtinut!

%d) Se estimeaza functia de autocorelatie pentru un semnal periodic


%acoperit de zgomot de banda larga (de tip WGN); se vor utiliza
%semnalele x1 si s, create anterior

x = s+x1;
figure
R_xx = xcorr(x);
%versiune deplasata (nescalata)
stem(n1,R_xx,'filled') %Fig. 6
%Interpretati graficul obtinut!

figure
[D,lags4] = xcorr(x,'unbiased');
%versiune nedeplasata, centrata in origine
stem(lags4,D,'filled') %Fig. 7

%Comentariu: ultimele doua puncte pot fi explicate simplu tinand


%cont de doua proprietati fundamentale ale functiei de autocorelatie:
%1. Autocorelatia unui semnal periodic este o functie periodica,
%cu aceeasi perioada cu cea a semnalului.
%2. Autocorelatia sumei a doua semnale complet necorelate este suma
%autocorelatiilor celor doua semnale.
%Aceste proprietati sugereaza una din aplicatiile importante ale
%functiei de autocorelatie: posibilitatea punerii in evidenta a unor
%periodicitati sau unor evenimente repetitive intr-un semnal
%aleatoriu (de exemplu zgomot de banda larga, ca la punctul d).