Professional Documents
Culture Documents
Matrici
Osnoven element so koj raboti MATLAB e pravoagolna numeri~ka matrica ~ii
{to elementi mo`at da bidat i kompleksni broevi. 1x1 matricite se
interpretiraat kako skalari dodeka matricite so samo edna kolona ili redica se
interpretiraat kako vektori.
Matricite vo MATLAB mo`at da se vnesat na nekolku na~ini:
-
Kreirawe na m-datoteki
_____________________________________________________________________________________
Operatori vo MATLAB
Elementite vo MATLAB osven kako matrici mo`at da se tretiraat i kako poliwa
od broevi. Spored toa MATLAB koristi dva vida aritmeti~ki operatori:
matri~ni operatori i operatori primeneti na poliwa od broevi. Koga
operatorite se primenuvaat na matrici va`at pravilata na linearna algebra.
Koga operatorite se primenuvaat na poliwa od broevi tie deluvaat spored
principot element so element. Ovie operatori se razlikuvaat od matri~nite
operatori po decimalnata to~ka pred operatorot. Na primer, izrazot
[1,2,3,4].*[1,2,3,4] ili izrazot [1,2,3,4].^2 kako rezultat davaat [1,4,9,16]. Proverete.
Operatori vo MATLAB
+
sobirawe na matrici
odzemawe na matrici
mno`ewe na matrici
.*
stepenuvawe
.^
./
pomalo od
>
<=
>=
==
ednakvo
~=
neednakvo
_____________________________________________________________________________________
ili
ne
_____________________________________________________________________________________
Ciklusi
Sli~no kako i vo drugite programski jazici (FORTRAN, C, ...) MATLAB naredbite
se izvr{uvaat po onoj redosled po koj {to se napi{ani. Dokolku e potrebno,
redosledot na izvr{uvawe na naredbite mo`e da se promeni so pomo{ na
funkciite za kontrola na tekot na programata:
For: Go povtoruva izvr{uvaweto na odreden blok naredbi odreden broj pati.
Op{t oblik na ciklusot:
for promenliva = izraz
naredbi
end
pri {to izraz naj~esto e od oblik skalar1:skalar2. Videte go primerot na krajot
od ova poglavje.
If: Uslovno izvr{uvawe na naredbi. Op{t oblik na ciklusot:
if promenliva
naredbi
end
Promenliva e obi~no rezultat od sporedba na dva izraza
izraz relaciski operator izraz
Dokolku rezultatot od sporedbata e vistinito promenlivata dobiva vrednost 1
i naredbite se izvr{uvaat. Od druga strana, koga rezultatot na sporedbata e
4
_____________________________________________________________________________________
_____________________________________________________________________________________
Polinomi
MATLAB koristi ednostavna reprezentacija na polinomite koja e mnogu korisna
za digitalno procesirawe na signali (DSP). Vo DSP ~esto pati se javuva potreba
za pretstavuvawe na drobnoracionalna funkcija, odnos na dva polinoma B(z) i A(z):
1
p
B( z ) b0 b1 z L b p z
A( z ) 1 a1 z 1 L a q z q
conv
mno`ewe na polinomi
deconv
delewe na polinomi
poly
residuez
roots
M - datoteki
Pokraj naredbi od komandna linija, MATLAB mo`e da izvr{uva niza od izrazi
memorirani vo dadeni datoteki. Vakvi datoteki se nare~eni m-datoteki
(datoteki so ekstenzija .m). Toa se tekstualni datoteki kaj koi se definirani
vleznite argumenti, niza na naredbi (procesirawe) i izleznite agrumenti.
Sodr`inata na datotekite mo`e da se vidi so pomo{ na naredbata type
ime_na_datoteka, vnesena od komandnata linija. Prou~uvaweto na m-datotekite
koi {to implementiraat vgradeni MATLAB funkcii e dobar na~in da se dobijat
nekoi idei za efikasno programirawe vo MATLAB.
Postojat dva tipa na m-datoteki: skripti i funkcii.
Skripti: Se sostojat od niza na MATLAB izrazi. Ispi{uvaweto na imeto na
datotekata na komandnata linija }e predizvika izvr{uvawe na site izrazi vo
datotekata. Promenlivite vo skriptata se globalni i mo`at da gi promenat
vrednostite na promenlivite so isto ime vo otvorenata MATLAB sesija.
Funkciski datoteki: Za razlika od skriptite, funkciskite datoteki vo prvata
linija sodr`at izraz od oblik
function [y1, y2, ... ] = ime_na_funkcija(x1,x2, . . . )
po {to sledi niza od MATLAB komandi i izrazi. y1, y2, ... se izlezni argumenti na
funkcijata koga istata }e se povika so nejzinoto ime, ime_na_funkcija, a x1,x2, ...
se vlezni argumenti. Po definicija, promenlivite vo funkciskite datoteki se
lokalni.
_____________________________________________________________________________________
mean(x)
_____________________________________________________________________________________
2-D grafici
MATLAB raspolaga so mo`nost za efikasno grafi~ko prika`uvawe na
podatocite. Nekoi od funkciite za grafi~ko prika`uvawe na podatoci se
pogodni za DSP.
Funkcijata plot prika`uva grafik so linearna podelba na oskite; dokolku x i y
se vektori so ednakva dol`ina, naredbata plot(x,y) crta x-y grafik na
elementite na y vo funkcija od x.
Funkcijata stem ovozmo`uva prika`uvawe na diskretni nizi.
Funkcijata subplot e pogodna za sporedba na pove}e grafici. So istata funkcija
ekranot mo`e da se podeli taka {to pove}e grafici se gledaat istovremeno.
So pomo{ na naredbata help doznajte pove}e za plot,stem i subplot.
Pogolemo vnimanie na ovie funkcii e posveteno vo ve`ba 1.
_____________________________________________________________________________________
VE@BA 1
Vektori kako polinomi
Vo MATLAB polinom se pretstavuva kako vektor ~ii {to elementi se
koeficientite na polinomot (so opa|a~ki stepen na promenlivata). Taka na
primer, polinomot s 3-6s 2-72s-27 mo`e da se pretstavi so vektorot
>> p=[1 -6 -72 -27]
p =
1 6 72 -27
Nulite na polinomot mo`at da se odredat so pomo{ na funkcijata roots.
So naredbata
>> r=roots(p)
r =
12.1229
-5.7345
-0.3884
se dobiva vektor koj gi sodr`i nulite na polinomot.
Obratno, koeficientite na polinomot, ako se poznati negovite nuli, mo`at da se
odredat so funkcijata poly. Na primer,
>> p2=poly(r)
p2 =
1 6 72 27
Ako se dadeni polinomite a(s) = s 2 +2s+3 i b(s) = 4s 2 +5s+6, nivniot proizvod se
dobiva so funkcijata conv
>> a=[1,2,3]; b=[4,5,6];
>> c=conv(a,b)
c =
4 13 28 27 18
Delewe na polinomi se vr{i so funkcijata deconv
>> [g,r]=deconv(c,a)
g =
4 5 6
r =
0 0 0 0
So funkcijata residue (ili funkcijata residuez) se vr{i razlo`uvawe na
drobnoracionalna funkcija na prosti drobnoracionalni funkcii (od prv red).
Oblici na funkcijata
[R,p,C]=residue(b,a)
[b,a]=residue(R,p,C)
_____________________________________________________________________________________
z 1
H ( z)
3 4 z 1 z 2
mo`e da se pretstavi kako suma od prosti drobnoracionalni funkcii so pomo{ na
koeficientite dobieni kako rezultat na slednite naredbi:
>> b=[0,1];
a=[3,-4,1];
>> [R,p,C]=residuez(b,a)
R =
0.5000
-0.5000
p =
1.0000
0.3333
C =
[]
odnosno
H ( z)
1/ 2
1/ 2
0
1
1 z
1 (1 / 3) z 1
10
_____________________________________________________________________________________
naslov na grafikot
xlabel
oznaka na x oskata
ylabel
oznaka na y oskata
gtext
interaktivno-vmetnuvawe na tekst
text
vmetnuvawe na tekst so
specificirani koordinati
11
to~no
_____________________________________________________________________________________
Taka so komandata
>> title(Prostoperiodicna funkcija)
se vmetnuva naslov na grafikot, a so komandite
>> xlabel(n)
>> ylabel(x1[n])
se dodeluvaat oznaki na x i y oskite.
Prika`uvawe na signalot x2 na istiot grafik mo`e da se izvede na dva na~ina.
Prviot na~in e so pomo{ na komandata
>> plot(n,x1,n,x2)
Vtoriot na~in e so pomo{ na naredbata hold. So komandata hold on se
zamrznuva momentniot crte` i novi grafici mo`at da se iscrtaat na nego. Za
vra}awe vo normalen mod na crtawe se koristi komandata hold off.
>>
>>
>>
>>
>>
>>
>>
>>
12
_____________________________________________________________________________________
MATLAB :
>> sound(y,Fs)
y , Fs .
(
4.)
. , sound
.
>> load gong.mat;
% Se vcituvaat y i Fs
>> n = 0: length(y)-1;
>> t = n/Fs;
>> figure, plot(t,y)
>> sound(y, Fs);
.
f = 1KHz .
>> f = 1000;
>> Fs = 44100;
>> t = 0:1/Fs:1;
>> y = cos(2*pi*f*t);
>> figure, plot(t,y);
>> sound(y, Fs);
f = 500 Hz.
sound.
. .
chirp help chirp
.
>> Fs = 44100;
>> t = 0:1/Fs:2;
>> y = chirp(t,0,1.5,7500);
>> sound(y, Fs);
13
_____________________________________________________________________________________
:
1. :
1 3 2
) A 2 3 3
2 2 3
1 2 3 4
C 2 4 6 8
5 10 15 20
A
2
) B
2
0 0 0 1
0 0 0 1
5 6 7
10 12 14
25 30 35
2
2
2
1
1
2.
4. :
) x1 (t ) cos(t ) x2 (t ) cos(4t ) , t 0 : 0.01 : 10
) x1 (t ) e t x2 (t ) sin( 2t ) , t 0 : 0.01 : 10
5.
f. 4
200Hz, 400Hz, 600Hz 1000Hz sound.
>> Fs = 44100;
>> t = 0:1/Fs:1;
>> y = cos(2*pi*f*t);
14
_____________________________________________________________________________________
VE@BA 2
Linearna konvolucija
Daden e impulsniot odziv na eden LTI sistem {h [n] = 0.5n , n = 0, 1, ... 9}. Na negoviot
vlez e primenet signalot x [n] = u [n]-u [n-10]. Da se odredi odzivot na sistemot y[n].
Linearnata konvolucija na nizite x [n] i h [n] }e go dade izlezniot signal y [n].
Implementacija na linearnata konvolucija vo MATLAB mo`e da se izvr{i so
funkcijata conv.
>> n=[0:9]; h=(0.5).^n;
>> x=[ones(1,10)];
>> y=conv(x,h)
15
_____________________________________________________________________________________
Prenosna funkcija
Dadena e prenosnata funkcija na eden kauzalen diskreten sistem
H ( z)
1 0.4 2 z 1
1 0.8 2 z 1 0.64 z 2
H ( z ) {h[n]}
h[n] z n
n 0
16
_____________________________________________________________________________________
C =
[]
Modulot i argumentot na elementite na vektorite R i p mo`at da se odredat so
pomo{ na funkciite abs i angle.
>> MR=abs(R)
% modulot na R
MR =
1.1180
1.1180
>> AR=angle(R)/pi
% agolot na R vo pi edinici
AR =
-0.3524
0.3524
>> Mp=abs(p)
% modulot na polot
Mp =
0.8000
0.8000
>> Ap=angle(p)/pi
Ap =
0.2500
-0.2500
1.118 e 0.3524
H ( z)
1 0.8 e
z 1
1.118 e 0.3524
1 0.8 e
z 1
0.3524 )
17
_____________________________________________________________________________________
>> y=filter(b,a,delta)
Columns 1 through 4
1.0000
1.6971
1.2800
0.3620
-0.5242
-0.1483
Columns 5 through 8
-0.4096
-0.6951
>> n=[0:7];
>> h =(2*1.118*(0.8).^n).*(cos(pi*n/4-0.3524*pi))
Diferencna ravenka
Pokraj pretstavite so impulsniot odziv h[n] ili so prenosnata funkcija H(z), LTI
diskreten sistem mo`e da bide pretstaven i so negovata diferencna ravenka.
Da se odredat prvite 100 primeroci na impulsniot odziv na diskretniot sistem
pretstaven so slednata diferencna ravenka.
H ( z)
Y ( z)
1
1
X ( z ) 1 z 0.9 z 2
18
_____________________________________________________________________________________
:
1. :
n
5
) x[n], n 1,2,..50 h[n] 1, n 1,2,..40
6
) a[n] [1, 3, 5, 7, 9, 10, 13, 16, 19]
b[n] [2, 2, 2, 2, 2, 5, 5, 5, 5, 5, 5]
2. - z :
z 2 4z 3
z 2 2.5 z 1
z2 z 2
) H ( z ) 2
z 3z 2
) H ( z )
3. 50
:
z 2 4z 3
H ( z)
5
1
z2 z
6
6
4. :
H ( z)
z2 z 2
z 2 3z 2
)
n 1,2,..20
1,
n 21,22,...40
x[n] 2,
0, n 1 n 40
filter conv;
) ,
.
19
_____________________________________________________________________________________
VE@BA 3
Frekvenciska karakteristika
Mo`e da se odredi so pomo{ na funkcijata freqz. Op{t oblik na funkcijata e
[H,w]=freqz(b,a,N)
kade {to b i a se vektori ~ii elementi se koeficientite na polinomite vo
broitelot i imenitelot na H(z), respektivno, a N go ozna~uva brojot na to~ki vo
koi se presmetuva frekvenciskata karakteristika.
H e vektor so dol`ina N {to gi sodr`i vrednostite na frekvenciskata
karakteristika za kru`ni frekvencii koi se dadeni vo vektorot w.
Frekvenciskata karakteristika se presmetuva vo N to~ki ednakvo raspredeleni
vo z-ramninata okolu gornata polovina na edini~niot krug, odnosno na -oskata
vo intervalot od = 0 do = .
Drug oblik na funkcijata e sledniot:
H=freqz(b,a,w)
so {to se dobiva frekvenciskata karakteristika za frekvencii specificirani
vo w (pome|u 0 i ).
So naredbite
[H,w]=freqz(b,a,N,whole)
H=freqz(b,a,w,whole)
se dobiva frekvenciska karakteristika za frekvencii od do dadeni vo
vektorot w.
Diskreten sistem e daden so negovata prenosna funkcija
H ( z)
z 2 z 1
(1 0.8 z 1 )(1 0.8 z 1 )
>> H=freqz(b,a,w);
>> A=abs(H);
% Amplitudna k-ka
>> phi=angle(H);
% Fazna k-ka
20
_____________________________________________________________________________________
Polovi i nuli
Za odreduvawe na nulite i polovite na H(z) mo`e da se iskoristi MATLAB
funkcijata roots.
>> z=roots(b)
>> p=roots(a)
So pomo{ na funkcijata zplane, mo`e da se prika`e pol/nula dijagramot.
>> zplane(z,p)
Simbolot o gi pretstavuva nulite, a simbolot x gi pretstavuva polovite. Na
crte`ot kako referenca e prika`an i edini~niot krug.
21
_____________________________________________________________________________________
Imaginary part
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.5
0
Real part
0.5
Amplituda
0.6
0.5
0.4
0.3
0.2
0.1
0
-1
-0.6
-0.4
-0.2
0
0.2
0.4
Frekvencija vo pi edinici
0.6
0.8
-0.8
0.5
0.4
0.3
0.2
0.1
0
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
Frekvencija vo pi edinici
22
0.6
0.8
_____________________________________________________________________________________
Amplituda
0.6
0.5
0.4
0.3
0.2
0.1
0
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
Frekvencija vo pi edinici
0.6
0.8
:
1. :
H ( z)
z 2 2z 1
z 2 0.2
[ , ]
.
100
.
2. -
:
a) H ( z )
z 2 2z 3
z 2 1.55 z 0.3
) H ( z )
z2 z 2
z 2 2.66 z 2.77
) H ( z )
z 2 0.5 z 3
z 2 1.5 z 0.8
3. LTI :
y[n] x[n] 2 x[n 1] x[n 2]
2
1
y[n 1] y[n 2]
2
4
) ;
) ( stem)
:
3
0,
,
,
,
, .
8 4
8
2
) ,
:
10
x[n]
3 cos( 0.25n) , n=0,1,..100
3
23
_____________________________________________________________________________________
VE@BA 4
Diskretizacija na analogni siganali
Za prou~uvawe na procesot na diskretizacija, rekonstrukcija i propratnite
efekti }e go koristime signalot x a (t ) e 1000 |t| . Negovata Furieova
transformacija e
X a ( j)
a (t ) e
jt
dt
0.002
1
1000
1
25 10 5
2(2000 )
G [ m] e
j m t
t t
G [ m] e
j m t
24
_____________________________________________________________________________________
Analogen signal
1
0.8
xa(t)
0.6
0.4
0.2
0
-5
-4
-3
-2
-1
0
t vo msec.
Furieova transformacija
2
Xa(jW)*1000
1.5
0.5
0
-2
-1.5
-1
-0.5
0
0.5
Frekvencija vo KHz
1.5
25
_____________________________________________________________________________________
x1(n)
0.8
0.6
0.4
0.2
0
-5
-4
-3
-2
-1
0
t in msec.
0.4
0.6
0.8
X1(w)
8
6
4
2
0
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
Frekvencija vo pi edinici
x[n] sinc[ f
s (t
nTs )]
26
_____________________________________________________________________________________
x a (mt )
n2
x[n] sinc[ f
s ( mt
nTs )],
t1 mt t 2
n n2
% proverka
>> error = max(abs(xa - exp(-1000*abs(t))))
% Prikaz
>> plot(t*1000,xa); hold on
>> xlabel('t in msec.'); ylabel('xa(t)')
>> title('Reconstruiran signal od x1(n) so pomos na sinc funkcijata');
_____________________________________________________________________________________
:
1. xa (t ) cos( 2t ) 2 sin( 15t ) , t (0, 10) ,
: f s 10
/, x1[n] ,
f s 20 /,
x2 [n] .
) xa (t ) x1[n] ;
) xa (t ) x2 [n] ;
) x1[n] x2 [n]
T [ , ] ,
;
) x1 (t ) x2 (t )
x1[n] x2 [n] ;
28
_____________________________________________________________________________________
VE@BA 5
N 1
x[ n ] W
nk
k 0, 1, ... , N 1
(4.1)
n 0
1
N
N 1
X [ k ]W
nk
n 0, 1, ... , N 1
(4.2)
k 0
W = exp(-j*2*pi/N);
% jadro na transformacijata
nk = n'*k;
T = W.^ nk;
Xk = xn *T;
% DFT koeficienti
nk = n'*k;
T = W .^ (-nk);
xn = (Xk * T)/N;
% IDFT koeficienti
29
_____________________________________________________________________________________
Ako e dadena nizata {x [n], n = 0, 1, 2, 3} = {1, 1, -1, -1} nejzinata DFT mo`e da se
presmeta so slednata niza naredbi:
>> x=[1,1,-1,-1]; N=4;
>> X=dft(x,N)
X =
0
2.0000 - 2.0000i
2.0000 + 2.0000i
2.8284
2.8284
-45.0000
45.0000
phi =
% x[n]=delta[n],
x2=ones(1,8);
% x[n]=u[n]
x3=[1,-1,1,-1,1,-1,1,-1];
% x[n]=(-1)^n;
x4=[0,0,0,0,1,0,0,0];
% x[n]=delta[n-4]
x5=exp(2i*pi/8*3*(0:7));
% Kompleksna eksponencijalna
% funkcija so omega=3*pi/4;
30
_____________________________________________________________________________________
:
1.
x[n] [1, 1, 1, 1, 1, 1, 1, 1, 0, 0] T [0, ] .
DFT 20 x[n ] , DFT
.
2. DFT, 40
x[n ] (
), T [0, ] .
31
_____________________________________________________________________________________
VE@BA 6
k 0
k 0
f [k ] g[n k ] f [n k ] g[k ],
n 0,1,..., N L 2
N 1
N 1
m 0
m 0
n 0,1,..., N 1
32
_____________________________________________________________________________________
>> y2=cikconvf(x2,h,6);
>> y3=cikconvf(x3,h,6);
Kone~no, se otfrlaat prvite Nh 1= 2 primeroci od sekoja dobiena podniza yi i se
formira nizata y koja pretstavuva linearna konvolucija na x i h
>> y= [y1(3:6) y2(3:6) y3(3:6)]
y =
1
10
10
33
_____________________________________________________________________________________
_____________________________________________________________________________
function [y] = prvlez(x,h,N)
% Linearna konvolucija na dolga niza
% po metodot na preklopeni vlezovi
% ---------------------------------------% [y] = prvlez(x,h,N)
% y = izlezna niza
% x = vlezna niza
% h = impulsen odziv
% N = dolzina na ciklicnata konvolucija
%
Lenx = length(x); M = length(h);
M1 = M-1; L = N-M1;
h = [h zeros(1,N-M)];
x = [zeros(1,M1), x, zeros(1,N-1)];
K = floor((Lenx+M1-1)/(L));
Y = zeros(K+1,N);
% Konvolucija na sekoja podniza so h
for k=0:K
xk = x(k*L+1:k*L+N);
Y(k+1,:) = cikconvt(xk,h);
end
Y = Y(:,M:N)';
% otfrlanje na prvite (M-1) primeroci
% od sekoja podniza
y = (Y(:))';
% formiranje na izleznata niza
10
:
1.
{x[n]} i {h[n]}.
34
_____________________________________________________________________________________
VE@BA 7
Dizajn na FIR filtri so metod na prozorci
Impulsniot odziv na digitalen filter za niski frekvencii so (idealna)
frekvenciska karakteristika
1
H d (e jT )
0
p
p
nZ .
35
_____________________________________________________________________________________
>> N=ceil(6.6*pi/opseg)+1
% procenka na dolzinata N
>> wc = (wq+wp)/2
>> h=fir1(N,wc/pi);
% koeficienti na filterot
>> [H,w]=freqz(h,1,1000,whole);
>> H=(H(1:1:501)); w=(w(1:1:501));
>> A=abs(H);
%amplitudna karakteristika
>> Adb=-20*log10((A+eps)/max(A));
% max slabeenje vo
% propusniot opseg
36
_____________________________________________________________________________________
>> wp = 0.2*pi;
wq = 0.3*pi;
Amax = 0.25;
Amin = 50;
% tezinska f-cija
% koeficienti na filterot
37
_____________________________________________________________________________________
:
1. Parks-McClellan-
:
0 H (e j ) 0.01
0 0.2
0.95 H (e j ) 1.05
0.35 0.65
0 H (e j ) 0.03
0.75
38