Documente Academic
Documente Profesional
Documente Cultură
IN MATLAB
STUDENTI:
POPESCU DRAGOS- ANDREI
GRIGORE STELIAN- MIHAI
1
Cuprins:
1. INTRODUCERE
2. Notiunea de semnal
2
1. INTRODUCERE
Domenii de utilizare:
Matematică şi calcul numeric
Dezvoltarea algoritmilor
Modelare, simulare şi testarea prototipurilor
Analiza şi vizualizarea datelor
Grafica inginerească şi din ştiinţele aplicate
Dezvoltarea de aplicaţii, inclusiv GUI
MATLAB = sistem interactiv care are ca element de bază tabloul, matricea, ceea ce
permite rezolvarea problemelor de calcul numeric, în special cele care necesită
prelucrarea de vectori sau matrici.
MATLAB-ul a evoluat:
- în mediul universitar unde este pachetul standard pentru cursurile introductive şi
avansate de matematică, inginerie şi ştiinţe
- în industrie, unde este utilizat pentru cercetarea de înalt randament, dezvoltare şi
producţie
Ghid Matlab
In Matlab se pot utiliza doar semnale cu suport finit, in variabile de tip vector;
adoptam conventia ca acesti vectori sa fie de tip linie. Pentru exemplificare vom
considera suportul
>> n = 0:M
de lungime
>> L = length(n)
Semnalele definite in aceasta sectiune, i.e. impuls unitate (1.1), treapt˘a unitate (1.3),
sinusoida reala (1.5), exponent¸ial (1.8) se introduc simplu astfel
>> imp_unit = eye(1,L) % impuls unitate
>> tr_unit = ones(1,L) % treapta unitate
>> sin_real = sin(w*n + phi) % sinusoida reala
>> j = sqrt(-1)
>> sin_compl = exp( j*(w*n + phi)) % sinusoida complexa
3
>> e = ones(1,L) >> e(2:end) = alfa
>> e = cumprod(e) % semnal exponential
Desigur, inainte de executarea instructiunile de mai sus, variabilele w, phi, alfa au
primit valori numerice adecvate. Graficul unui semnal real se poate face cu functia
plot; tipica pentru semnale discrete este insa functia stem (cu care au fost trasate
graficele din aceast˘a sect¸iune), apelat˘a e.g. astfel
>> stem(n, sin_real)
Pentru a ilustra operat¸iile cu semnale, consider˘am ca x1 ¸si x2 cont¸in doua semnale
cu acela¸si suport. Atunci, suma lor se scrie:
>> xs = x1 + x2
modulatia in timp (produsul la nivel de element) este:
>> xm = x1 .* x2
iar convolut¸ia lor este:
>> xc = conv(x1,x2)
Atentie, semnalul xc obtinut prin convolutie are alt suport decat x1 ¸si x2; de
exemplu, daca x1 ¸si x2 au suport 0 : M, atunci xc are suport 0 : 2M.
2. Notiunea de semnal
Sistem dinamic Semnalele se pot aplica unor circuite sau, mai general, unor sisteme
dinamice. Fie u(t) semnalul aplicat la intrarea unui sistem şi y(t) semnalul obţinut la
ieşirea acestuia, numit şi răspuns al sistemului la semnalul de intrare (fig. 1.1).
Sistemele dinamice realizează prelucrarea semnalelor, conform cu funcţiunile
realizate de echipamentele electronice în care sunt înglobate.
Exemplificăm câteva operaţii uzuale de prelucrare a semnalelor: integrarea unui
semnal, derivarea acestuia, filtrarea (extragerea unor componente spectrale ale
semnalului sau, după caz, eliminarea componentelor parazite), modulaţia semnalelor,
etc. De fapt, cele mai multe echipamente electronice sunt formate din lanţuri de
sisteme dinamice, care realizează prelucrări consecutive ale semnalelor, conform unei
„tehnologii” care determină funcţiunile realizate de echipamentul respectiv.
4
Semnalele numerice pot fi generate de echipamente numerice sau se pot obţine din
cele analogice prin două operaţii:
• eşantionarea semnalului, adică discretizarea timpului t cu un pas Te, numit perioadă
de eşantionare. Semnalul cu timp discret, ( ) ex kT , este notat adesea cu ( ) x k , unde
k reprezintă timpul discret, adică pasul curent de eşantionare;
• cuantizarea semnalului, adică discretizarea amplitudinii eşantioanelor ( ) x k . Se
alege un pas de cuantizare, ∆, iar rezultatul operaţiei de cuantizare este un număr
întreg, q, astfel încât produsul q⋅∆ să fie cât mai apropiat de amplitudinea eşantionului
cuantizat.
CONVERSIE
xa(t) SISTEM CONVERSIE ya(t)
A/D x[ n] y[n]
(numeric) D/A
-eşantion xa(nT)
în timp discret (+filtrare)
-cuantizare
0 0.5
-2 0
0 0.01 0.02 0.03 -4000 -2000 0 2000 4000
timp [s] Frecventa [Hz]
Semnalul esantionat cu Fe=2KHz Spectru semnal esantionat
2 1
0 0.5
-2 0
0 0.01 0.02 0.03 -4000 -2000 0 2000 4000
timp [s] Frecventa [Hz]
Semnalul numeric Spectru semnal numeric
2 1
0 0.5
-2 0
0 20 40 60 -2 -1 0 1 2
esantioane Frecventa normata
5
4. Modelarea matematică a sistemelor numerice
SN Liniar
Dacă:
x1 [n ]→ y1 [n ]= N{x1 [n ]}
x2 [n ]→ y2 [n ]= N{x 2 [n ]}
SN Invariant
SN Cauzal
SN Stabil
δ [n ]→ N { }→ h[n ] = N {δ [n]}
Datorită principiului invariaţiei, rezultă că:
h[n − k]= N {δ [n − k]}
Deoarece o secvenţă oarecare se poate reprezenta prin :
x[n] = ∑ x[k ]⋅δ [n − k ]
(k)
rezultă că răspunsul SNLI la o secvenţă oarecare x[n] este dat de relaţiile:
Deoarece : 1
u[n ]= ∑∞k=0 δ [n − k] n
-2 -1 0 1 2 3 4 5
g[n ] = N {∑ ∞
k=0 }
δ [n − k] = ∑∞k=0 N {δ [n − k]}= ∑∞k=0
Cum :
δ [n]= u[n]− u[n −1]
Exemple de SN simple:
Circuitul de întârziere este caracterizat în domeniile analogic şi numeric
de relaţiile:
x(t) y(t)=x(t-T) x [n] x[n-1]
Y ( z )
H(z)= X ( z ) = z−
1
jω
|H(e )| Caracteristica de faza
0
1
Faza [grade]
-100
1
-200
1 0.1 0.2 0.3 0.4 0.5 Frecventa 0 0.1 0.2 0.3 0.4 0.5 Frecventa
0 normata normata
d x (nT)-x(nT-T)
x(t) d y(t)= x (t) =
dt y [n]=x [n]-x[n-1]
dt
t=nT T=1
Corespunzător relaţiilor:
Y ( z )
H ( z ) = X ( z ) = 1 − z−1 = 1− cosω + j sinω
Secvenţa în Matlab:
num=[1 -1];
den=1;
[H,W]=freqz(num,den);
subplot(121);
plot(W/(2*pi),abs(H));grid
title('|H(e^{j\omega})|');
ylabel('amplitudine');
xlabel('Frecventa normata');
subplot(122);
plot(W/(2*pi),angle(H)*180/pi);grid;
title('Caracteristica de faza');
ylabel('Faza [grade]');
xlabel('Frecventa normata');
jω
|H(e )| Caracteristica de faza
2 100
1 50
Faza [grade]
amplitudine
0 0.1 0.2 0.3 0.4 0.5 0 00.1 0.2 0.3 0.4 0.5 Frecventa
Frecventa normata normata
x (t ) y(t)= x(t)dt
deoarece:
d
x ( t ) = y ( t ) = y ( nT ) − y (nT − T )
dt T
rezulta ca:
x[ n ] = y [n]− y [n −1]
astfel ca:
X ( z ) = Y ( z ) − z−1Y ( z )
Functia de transfer a unui circuit de integrare este:
1
Y(z) 1 →
H(z)= = 2− 2cosω
X(z) 1 − z−1 z = e jω
Secvenţa în Matlab:
num=[1];
den=[1 -1];
[H,W]=freqz(num,den);
subplot(121);
plot(W/(2*pi),abs(H));grid;
title('|H(e^{j\omega})|');
ylabel('amplitudine');
xlabel('Frecventa normata');
subplot(122);
plot(W/(2*pi),angle(H)*180/pi);grid;
title('Caracteristica de faza');
ylabel('Faza [grade]');
xlabel('Frecventa normata');
jω
|H(e )| Caracteristica de faza
200 0
Faza [grade]
amplitudine
100 -50
0 -100
0 0.1 0.2 0.3 0.4 0.5 Frecventa 0 0.1 0.2 0.3 0.4 0.5 Frecventa
normata normata
Variabilele PCDSP
Variabilele de bază ale PCDSP sunt secven ţele. O secvenţă constă dintr -o
listă de numere reale sau complexe, care constituie eşantioane ale unui semnal. O
astfel de secvenţă este identificată printr-un nume (pana la 8 caractere alfa-
numerice lungime, începând neapărat cu o literă). Numele variabilelor sunt
insenzitive la tipul literei (mare sau mică). Lungimea maximă a unei secvenţe este
de 4096 de valori. Numărul total al tuturor valorilor pentru toate secvenţele (aflate
la un moment dat în memorie) nu trebuie să depăşească 16000 de numere reale. La
un moment dat se pot utiliza maximum 50 de denumiri de secvenţe.
Ferestre în PCDSP
4. Aplicaţii
−1
H ( z ) = Y ( z ) = 0.334 + 0.334z
−1
X(z) 1 − 0.334z
clear;
b=[0.334,0.334]; a=[1.0,-0.334];
figure(1) ;
% se afiseaza polii si zerourile folosind functia zplane
% care are ca parametrii coeficientii numaratorului
% si numitorului
zplane(b,a) ;
figure(2) ;
% se reprezinta grafic in modul si faza functia de
% transfer folosind functia freqz
freqz(b,a);
Implementarea cu PCDSP:
- se introduce num = [0.334; 0.334] şi den = [1; -0.334] de la tastatură;
- se determină H ca şi în exemplee anterioare;
- pentru a determina polii şi zerourile se foloseşte Analyze din
submeniul IIR-filters pentru H şi tipul de analiză va fi Z;
- se calculează automat polii şi zerourile.
a)
clear; N = 40;
num=[2.2403 2.4908 2.2403];
den= [1 -0.4 0.75];
% functia pondere se determina folosind functia impz ce
% are ca parametri coeficientii functiei de transfer si
% numarul de puncte in care sa se calculeze functia
y = impz(num,den,N); figure stem(y);xlabel('Index
temporal n'); ylabel('Amplitudine');
title('Functia pondere'); grid;
Implementare cu PCDSP:
- se introduc de la tastatură num şi den, folosind funcţia Read;
- se determină H: se selectează IIR-filters din meniul Filter, mai
departe se selectează External. La Numerator se introduce variabila
num, la Denominator se introduce variabila den, iar numele va fi H;
- se selectează Analyze, mai departe se păstrează numele H, tipul de
analiză se selectează Impulse Response şi se afişează grafic.
b)
clear;[b,a]=butter(5,0.5);h=impz(b,a,50);
figure(1);subplot(211);stem(h); grid;
title('butterworth ') subplot(212);
[H,W]=freqz(b,a); plot(W/(2*pi),
abs(H));grid; title('Caracteristica de
transfer'); figure(2);subplot(211);
[b,a]=ellip(5,1,20,0.5);h=impz(b,a,50);
stem(h); grid; title('cauer ')
subplot(212);[H,W]=freqz(b,a);
plot(W/(2*pi), abs(H));grid;
title('Caracteristica de transfer');
cauer
0.5
-0.50 5 10 15 20 25 30 35 40 45 50
Caracteristica de transfer
1
0.5
0 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
−1
1 − 0.8z
−1 −2
H(z) = 1 +1.5z + 0.9z
este stabil.
Pentru a determina dacă un sistem numeric este stabil există două variante:
• Se demonstrează că răspunsul la impuls tinde la zero;
• Dacă toţi polii sistemului numeric se află în interiorul cercului
unitate, atunci sistemul numeric este stabil.
clear; num = [1 -0.8]; den = [1 1.5
0.9]; N = 200; h =
impz(num,den,N+1); parsum = 0;
for k = 1:N+1;
parsum = parsum + abs(h(k));
if abs(h(k)) < 10^(-6),
break,
end
end
figure
n = 0:N;stem(n,h); grid;
xlabel('Index temporal n');
ylabel('Amplitudine'); figure
zplane(num,den); dsp('Sum =');disp(abs(h(k)));
−1
6. a) Fie sistemul reprezentat prin funcţia de transfer H ( z ) = 1− 0.5z
( jω ) la
prezentând un singur zerou la z = 0.5 . Să se studieze variaţia lui H e
apropierea zeroului de cercul unitate.
b)
a(1,1:2)=[1 -0.5];a(2,1:2)=[1 -0.6];
a(3,1:2)=[1 -0.7];a(4,1:2)=[1 -0.8];
figure;hold on
for k=1:4
H=freqz(1,a(k,:));plot(abs(H),tipcul(k,:))
end
axis([0 512 0 5.5]);grid on;
legend('pol=.5','pol=.6','pol=.7','pol=.8');
title('Influenta polilor asupra functiei de transfer');
Teorema lui Plancherel
x1(n) = 2n − 1, n ∈[1,9]
x2 (n) = 1, −2, 3, −2, 1, 0, 0, ...
w = -pi:2*pi/255:pi;
x1 = [1 3 5 7 9 11 13 15 17];x2 = [1 -2 3 -2
1]; y = conv(x1,x2);H1 = freqz(x1, 1, w);
H2 = freqz(x2, 1, w);Hp = H1.*H2;H3 = freqz(y,1,w);
subplot(2,2,1);
plot(w/(2*pi),abs(Hp));grid;
title('Produsul spectrelor de amplitudine');
subplot(2,2,2);
plot(w/(2*pi),abs(H3));grid;
title('Spectrul de amplitudine a rezultatului
convolutiei');
subplot(2,2,3);
plot(w/(2*pi),angle(Hp));grid;
title('Suma spectrelor de faza');
subplot(2,2,4);
plot(w/(2*pi),angle(H3));grid;
title('Spectrul de faza a rezultatului convolutiei') ;
x=[1,2]; h=[3,4];
X=fft(x);H=fft(h);Y=X.*H;
y=abs(ifft(Y))