37
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________ 1 Upatstvo za laboratoriski ve`bi po predmetot Osnovi na Digitalno Procesirawe na Signali Voved vo MATLAB Celta na ova upatstvo e studentite da se zapoznaat so nekoi osnovni naredbi i funkcii vo MATLAB (MATrix LABoratory), kako bi mo`ele da gi izveduvaat laboratoriskite ve`bi po predmetot Osnovi na Digitalno Procesirawe na Signali. Matrici Matrici Matrici 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: - Direktno vnesuvawe na elementite - Generirawe so pomo{ na vgradeni funkcii i izrazi vo MATLAB - Kreirawe na m-datoteki - V~ituvawe od nadvore{ni datoteki (.mat datoteki) Na primer, so slednite izrazi: >> A=[1 2 3; 4 5 6; 7 8 9] i >> A=[1 2 3 4 5 6 7 8 9] se vnesuva 3x3 matrica koja se dodeluva na promenlivata A. Elementite na edna redica se odvoeni so prazno mesto ili so zapirka. Krajot na sekoja redica se ozna~uva so ; (to~ka-zapirka). Po pritiskawe na ENTER na ekranot se pojavuva A = 1 2 3 4 5 6 7 8 9 Elementot na matricata mo`e da bide definiran na pove}e na~ini. Na primer >> B=[1.5*sqrt(2) 2.5^2; 2/3 7] Poedine~ni elementi na matricata mo`at da se povikaat so pomo{ na nivnite indeksi. Na primer, A(2,3) go ozna~uva elementot vo vtorata redica, treta kolona na matricata A. Indeksite na elementite na matricite vo MATLAB se pozitivni celi broevi. Negativni indeksi i 0 ne se dozvoleni vo MATLAB.

upatstvo

Embed Size (px)

DESCRIPTION

Matlab l

Citation preview

Page 1: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

1

Upatstvo za laboratoriski ve`bi po predmetot

Osnovi na Digitalno Procesirawe na Signali

Voved vo MATLAB

Celta na ova upatstvo e studentite da se zapoznaat so nekoi osnovni naredbi i funkcii vo MATLAB (MATrix LABoratory), kako bi mo`ele da gi izveduvaat laboratoriskite ve`bi po predmetot Osnovi na Digitalno Procesirawe na Signali.

MatriciMatriciMatriciMatrici

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:

- Direktno vnesuvawe na elementite

- Generirawe so pomo na vgradeni funkcii i izrazi vo MATLAB

- Kreirawe na m-datoteki

- V~ituvawe od nadvoreni datoteki (.mat datoteki)

Na primer, so slednite izrazi:

>> A=[1 2 3; 4 5 6; 7 8 9]

i

>> A=[1 2 3

4 5 6

7 8 9]

se vnesuva 3x3 matrica koja se dodeluva na promenlivata A. Elementite na edna redica se odvoeni so prazno mesto ili so zapirka. Krajot na sekoja redica se ozna~uva so ; (to~ka-zapirka). Po pritiskawe na ENTER na ekranot se pojavuva

A =

1 2 3

4 5 6

7 8 9

Elementot na matricata mo`e da bide definiran na povee na~ini. Na primer

>> B=[1.5*sqrt(2) 2.5^2; 2/3 7]

Poedine~ni elementi na matricata mo`at da se povikaat so pomo na nivnite indeksi. Na primer, A(2,3) go ozna~uva elementot vo vtorata redica, treta kolona na matricata A. Indeksite na elementite na matricite vo MATLAB se pozitivni celi broevi. Negativni indeksi i 0 ne se dozvoleni vo MATLAB.

Page 2: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

2

Nekoi vgradeni funkcii so koi mo`at da se generiraat specijalni matrici se: zeros, ones, eye, diag, rand, magic.

Taka na primer so zeros(m,n) se dobiva mxn matrica ~ii elementi se nuli, a so zeros(n) se dobiva nxn matrica so nuli. So ones(m,n) se dobiva mxn matrica ~ii elementi se edinici.

So pomo na naredbata help (na primer help zeros) proverete to davaat pogore spomenatite funkcii.

Matrici mo`at da se generiraat i od povee blokovi. Na primer, ako A e 3x3 matrica izrazot

>> [A, zeros(3,2); zeros(2,3), ones(2)]

e generira 5x5 matrica. Probajte.

Operatori vo Operatori vo Operatori vo 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

.* mno`ewe “element so element”

^ stepenuvawe

.^ stepenuvawe “element so element”

\ delewe na matrici od levo

/ delewe na matrici od desno

./ delewe “element so element”

Relaciski operatori vo MATLAB

< pomalo od

> pogolemo od pomalo od ili ednakvo

<= pomalo od ili ednakvo

>= pogolemo od ili ednakvo

= = ednakvo

~ = neednakvo

Page 3: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

3

Logi~ki operatori vo MATLAB

& i

| ili

~ ne

MATLAB izrazi i promenlivi izrazi i promenlivi izrazi i promenlivi izrazi i promenlivi

MATLAB izrazite naj~esto se javuvaat vo slednata forma:

promenliva = izraz, ili ednostavno

izraz

Izrazite obi~no se formiraat od operatori, funkcii i imiwa na promenlivi. Rezultatot na izrazite se matrici koi se pojavuvaat na ekranot i se dodeluvaat na promenlivata za ponatamono koristewe. Dokolku se isputat imeto na promenlivata i znakot =, avtomatski se kreira promenliva ans na koja i se dodeluva vrednosta na izrazot.

Dokolku na krajot na izrazot ima znak ; (to~ka-zapirka) rezultatot ne se ispiuva na ekran. Ova e od posebno zna~ewe koga ne e potrebno ispiuvawe na me|urezultatite. Isputaweto na znakot ; ne e problem ako se raboti za naredba od oblik

>> A=[1 2 3]

me|utoa e golem problem ako naredbata e na primer,

>> A=[1:10000]

Dokolku se zaboravi znakot ; mo`e da se pritisne ctrl-C so cel da se izbegne ispiuvaweto na ekranot. Komandata ctrl-C ne go prekinuva presmetuvaweto tuku samo go stopira prika`uvaweto na ekran.

MATLAB e case-sensitive (razlikuva mali i golemi bukvi) vo imiwata na naredbite, funkciite i promenlivite. Taka na primer, randint ne e isto so randINT.

So pomo na komandata who mo`at da se vidat site promenlivi koi to se koristeni vo momentnata MATLAB sesija. Del od ovie promenlivi mo`at da se izbriat so komandata clear ime_na_promenliva. Samo clear e gi izbrie site promenlivi.

So pomo na komandata save, site ili del od promenlivite mo`at da se memoriraat vo .mat datoteki. Nivno povikuvawe mo`e da se izvri so komandata load. So pomo na komandata help videte kako funkcioniraat load i save.

Operator : (dve to~ki)Operator : (dve to~ki)Operator : (dve to~ki)Operator : (dve to~ki)

Se koristi za generirawe vektori ili matrici so konstanten ~ekor i za indeksirawe na matrici. Na primer, vektor koj gi sodr`i broevite od 1 do 5 (so edine~en ~ekor) se generira na sledniot na~in:

>> x=1:5

x =

1 2 3 4 5

Dokolku ~ekorot e razli~en od edinica, negovata vrednost se vmetnuva pome|u vrednostite na najmaliot i najgolemiot element na vektorot. Na primer, vektor

Page 4: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

4

koj gi sodr`i broevite od 1 do 3 so konstanten ~ekor 0.5 se dobiva so slednata naredba

>> y=1:0.5:3

y =

1.0000 1.5000 2.0000 2.5000 3.0000

Operatorot : mo`e da se iskoristi i za izdvojuvawe na vektor redica, ili vektor kolona, ili elementi od dadena matrica. Na primer:

A(1:4,3)

e vektor kolona koj se sostoi od prvite ~etiri elementi na tretata kolona na matricata A, dodeka

A(2,1:3)

e vektor redica koj se sostoi od prvite tri elementi na vtorata redica.

A(1:4,:) e matrica sostavena od prvite ~etiri redici na matricata A.

So izrazot

A(:,[2 4 5]) = B(:,1:3)

kolonite 2, 4 i 5 na matricata A se zameneti so prvite tri koloni na matricata B.

Vo mnogu situacii operatorot : ovozmo`uva izbegnuvawe na ciklusi, to e objasneto na krajot na narednoto poglavje.

CiklusiCiklusiCiklusiCiklusi

Sli~no kako i vo drugite programski jazici (FORTRAN, C, ...) MATLAB naredbite se izvruvaat po onoj redosled po koj to se napiani. Dokolku e potrebno, redosledot na izvruvawe na naredbite mo`e da se promeni so pomo na funkciite za kontrola na tekot na programata:

For: Go povtoruva izvruvaweto na odreden blok naredbi odreden broj pati.

Opt 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 izvruvawe na naredbi. Opt 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 izvruvaat. Od druga strana, koga rezultatot na sporedbata e

Page 5: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

5

“nevistinito” promenlivata dobiva vrednost 0 i naredbite ne se izvruvaat. So kombinirawe na if so else i elseif mo`no e poveekratno razgranuvawe.

Proverete to raboti slednata programa:

>>for i=1:n

for j=1:n

if i==j

a(i,j)=2

elseif i==1

a(i,j)=1

else

a(i,j)=0

end

end

end

>> a

While: Povtoruva izvruvawe na blok naredbi neodreden broj pati se dodeka dadeniot uslov e zadovolen.

Opt oblik na naredbata

While promenliva

naredbi

end

Naredbite se izvruvaat se dodeka promenlivata e “vistinito”. Na primer, za daden broj a slednata programa go presmetuva i ispiuva najmaliot nenegativen cel broj n taka to 2^n >= a.

>> n=0;

>> while 2^n <a

n=n+1;

end

>> n

Izbegnuvajte ciklusi sekade kade to toa e mo`no. Istite vo golema mera go usporuvaat izvruvaweto na programata. Na primer, generirawe na funkcijata sinus mo`e da se izvri na sledniot na~in

>> for i=0:999 x(i+1)=sin(2*pi*i/1000);

>> end;

Me|utoa ova e mnogu pobavno otkolku

>> x=sin(2*pi*(0:999)/1000);

Vo opt slu~aj, podobro e celi vektori da se procesiraat vo isto vreme otkolku da se koristat ciklusi, bideji najgolem broj MATLAB funkcii operiraat so vektori isto kako i so skalari.

Page 6: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

6

PolinomiPolinomiPolinomiPolinomi

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):

q

q

pp

zaza

zbzbb

zA

zB−−

−−

+++

+++=

L

L

11

110

1)(

)(

Vo MATLAB polinomite B(z) i A(z) se pretstaveni so vektori b i a koi gi sodr`at nivnite koeficienti. Taka a = [1 –1.5 0.99] go pretstavuva polinomot

A(z) = 1 – 1.5 z –1

+ 0.99 z – 2

.

Del od funkciite za rabota so polinomi koi to se koristat vo DSP se dadeni vo slednata tabela:

conv mno`ewe na polinomi

deconv delewe na polinomi

poly odreduvawe na koeficienti na polinom

residuez razvoj vo prosti dropki

roots odreduvawe na nuli na polinom

So pomo na naredbata help proverete kako funkcioniraat ovie funkcii. Pogolemo vnimanie na ovie funkcii e posveteno vo ve`ba 1.

M M M M ---- datoteki datoteki datoteki datoteki

Pokraj naredbi od komandna linija, MATLAB mo`e da izvruva 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. Ispiuvaweto na imeto na datotekata na komandnata linija e predizvika izvruvawe 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.

Page 7: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

7

Ovie funkciski datoteki mu ovozmo`uvaat na korisnikot da kreira novi funkcii koi imaat ist status kako i drugite funkcii vo MATLAB. Primer za ednostavna funkcija:

function y = mean(x)

% MEAN Avarage or mean value

% For vectors, MEAN(X) returns the mean value

% For matrices, MEAN(X) is a row vector containing

% the mean value of each column

[m,n]=size(x);

if m==1

m=n;

end

y=sum(x)/m;

Ovaa funkcija e smestena vo datotekata mean.m. Nejzinata upotreba e ista kako i upotrebata na sekoja druga MATLAB funkcija. Na primer, neka generirame vektor koj gi sodr`i celite broevi od 1 do 99

>> z=1:99;

Srednata vrednost se presmetuva so naredbata

>> mean(z)

to kako rezultat dava

ans =

50

Nekolku zabeleki vo odnos na dadenata funkcija:

- Prvata linija gi deklarira imeto na funkcijata, vleznite argumenti i izleznite argumenti. Bez ovaa linija datotekata bi pretstavuvala skripta.

- Simbolot % ozna~uva deka se raboti za komentar i ostatokot od linijata se ignorira pri izvruvawe na funkcijata.

- Liniite koi po~nuvaat so % ja dokumentiraat m-datotekata i se prika`uvaat na ekranot pri izvruvawe na naredbata help mean.

- Prvata linija so % e vklu~ena vo datotekata Contents.m vo soodvetniot direktorium. Komandata lookfor se referencira na ovaa linija pri izvruvaweto.

- Promenlivite m, n i y se lokalni za funkcijata mean i ne se pojavuvaat vo MATLAB sesijata po izvruvaweto na funkcijata (ili, ako postoele prethodno, ostanuvaat nepromeneti).

- Pri izvruvaweto na naredbata ne bee neophodno da se smestat celite broevi od 1 do 99 vo promenliva so ime x. Fakti~ki, mean go koristevme so promenlivata z. Vektorot z koj gi sodr`i celite broevi od 1 do 99 bee prosleden vo mean i postana lokalna promenliva so ime x.

Page 8: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

8

2222----D grafici grafici grafici 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 povee grafici. So istata funkcija ekranot mo`e da se podeli taka to povee grafici se gledaat istovremeno.

So pomo na naredbata help doznajte povee za plot,stem i subplot.

Pogolemo vnimanie na ovie funkcii e posveteno vo ve`ba 1.

Page 9: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

9

VE@BA 1VE@BA 1VE@BA 1VE@BA 1

Vektori kako polinomiVektori kako polinomiVektori kako polinomiVektori 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 vri so funkcijata deconv

>> [g,r]=deconv(c,a)

g =

4 5 6

r =

0 0 0 0

So funkcijata residue (ili funkcijata residuez) se vri 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)

Page 10: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

10

So opcijata [R,p,C]=residue(b,a) se dobivaat koeficientite na razvojot, polovite i slobodnite ~lenovi (R, p, C) pri razlo`uvaweto na drobno-racionalnata funkcija na prosti faktori.

So opcijata [b,a]=residue(R,p,C) so tri vlezni i dva izlezni argumenti se vri inverzna operacija na prethodnata.

Primenata na ovaa funkcija e ilustrirana so sledniot primer. Funkcijata

21

1

43)(

−−

+−=

zz

zzH

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) % Koga polinomite se dadeni

% so negativni stepeni se

% koristi funkcijata residuez

R =

0.5000

-0.5000

p =

1.0000

0.3333

C =

[]

odnosno

0)3/1(1

2/1

1

2/1)(

11+

−−

−=

−−zz

zH

Vektori kako signaliVektori kako signaliVektori kako signaliVektori kako signali

Vo MATLAB diskretni signali (nizi) mo`at da se pretstavat so vektor ~ii to elementi se soodvetnite vrednosti na signalot (nizata). Pri toa mora da se vnimava na interpretacijata na indeksite. Vo MATLAB, indeksite na site vektori po~nuvaat so 1.

Generirawe na nekolku elementarni nizi:

1. Edini~en impuls δ [n] mo`e da se generira so pomo na funkcijata zeros(1,N). Na primer so

>> delta=[1 zeros(1,30)]

se implementira δ [n] na kone~en interval n = 0, 1, ... , 30.

2. Edini~en skok u[n]. Funkcijata ones(1,N) mo`e da se iskoristi za generirawe na u[n] na kone~en interval. Na primer

>> u=[ones(1,30)]

generira edini~en skok so dol`ina 30.

Page 11: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

11

3. Ekponencijalen signal f [n] = an, 0≥n .

Na primer, f1 [n] = 0.9n za n = 0, 1, ... 50 se generira na sledniot na~in:

>> n=[0:50];

>> f1=(0.9).^n

4. Prostoperiodien signal f [n] = A cos (θ n+α) , Zn ∈ , mo`e da se generira so pomo na cos (sin) funkcijata od MATLAB. Taka na primer, signalite

x1 [n] = 3 cos (2π n/20 +π /3) i x2 [n] = sin (2π n/20) za n = 0, 1, ... 20, se dobivaat so

>> n=[0:20];

>> x1=3*cos(2*pi*n/20+pi/3)

>> x2=sin(2*pi*n/20)

Grafi~ko pretstavuvawe na signaliGrafi~ko pretstavuvawe na signaliGrafi~ko pretstavuvawe na signaliGrafi~ko pretstavuvawe na signali

Vo ovoj del od ve`bata pogore definiranite signali treba grafi~ki da se prika`at. So komandata who mo`e da se potsetite na site signali (vektori) koi dosega bea definirani, dodeka so komandata whos mo`at da se vidat i nivnite dimenzii.

Za prika`uvawe na signalite e gi koristime funkciite plot i stem. So pomo na komandata help doznajte povee za ovie dve funkcii.

Najnapred prika`ete go signalot x1 vo funkcija od indeksot n, so pomo na slednata komanda

>> plot(n,x1)

Vraawe na komandnata linija (vo MATLAB Command Window) mo`e da se izvede so pritiskawe na bilo koe kop~e od tastaturata. Grafikot mo`e da se povika povtorno so pomo na funkcijata shg ili so pritiskawe na gluv~eto na samiot grafik.

Ponekoga e potrebno vo evidencija da se stavi periodot na diskretizacija T, t.e. od indeksot n da se pomine na vremenskiot interval nT. Taka na primer, ako se

saka signalot x1[nT], so T = 10 msec, da se prika`e vo intervalot 2.00 ≤≤ t , mo`e da se generira vremenska niza so t = 0; 0.01; ... ; 0.2 so komandata

>> t=[0:0.01:0.2];

i potoa da se nacrta x1 vo funkcija od t so

>> plot(t,x1)

Mre`a na crte`ot mo`e da se dodade so komandata grid. Mre`ata mo`e da bide korisna pri procenka na oddelni parametri na signalot.

Na grafikot mo`at da se dodadat naslov, oznaka na x i y oskite, i tekst na koe bilo mesto na grafikot so pomo na slednite funkcii:

title naslov na grafikot

xlabel oznaka na x oskata

ylabel oznaka na y oskata

gtext interaktivno-vmetnuvawe na tekst

text vmetnuvawe na tekst so to~no specificirani koordinati

Page 12: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

12

Site ovie funkcii koristat stringovi kako argumenti.

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 vraawe vo normalen mod na crtawe se koristi komandata hold off.

• Najnapred so komandata figure otvorete nov grafi~ki prozorec, a potoa so pomo na naredbata hold nacrtajte gi x1 i x2 na ist grafik.

I pokraj toa to x1 i x2 se diskretni signali nivnite grafici prika`ani so funkcijata plot ostavaat vpe~atok deka se raboti za kontinuirani signali. Vsunost so funkcijata plot se prika`uva “anvelopata” na diskretniot signal. Probajte to e se dobie so slednata niza naredbi:

>> t=[0:7];

>> x=sin(2*pi*t/8);

>> plot(t,x)

Zna~i, od dobieniot grafik ne e jasno deka se raboti za sinusna funkcija. Za prika`uvawe diskretni nizi se koristi funkcijata stem. Funkcijata stem ima isti argumenti kako i funkcijata plot.

• So pomo na funkcijata stem da se nacrtaat signalite u i f1.

I pokraj faktot to signalite vo MATLAB sekoga se diskretni signali, vo oddelni slu~ai podobro e istite da se prika`at kako kontinuirani signali. Toa ne e problem ako ne se zaboravi deka se raboti za diskretni signali. Proverete to e se dobie so slednata niza naredbi:

>> n=[0:0.01:100];

>> x=sin(2*pi*n/100);

>> stem(n,x)

So pomo na naredbata subplot ekranot se deli taka da povee grafici se gledaat istovremeno. So help subplot videte kako funkcionira ovaa naredba.

• Proverete to e se dobie so slednata niza od naredbi:

>> subplot(2,2,1); stem(0:length(x1)-1,x1);

>> title(‘Prostoperodicen signal’);

>> subplot(2,2,2); stem(0:length(f1)-1,f1);

>> title(‘Eksponencijalen signal’);

>> subplot(2,2,3); stem(0:length(delta)-1,delta);

>> title(‘Edinicen impuls’);

>> subplot(2,2,4); stem(0:length(u)-1,u);

>> title(‘Edinicen skok’);

Page 13: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

13

Задачи:

1. Да се генерираат следните матрици:

а)

=

322

332

231

A б)

=

11000

11000

22

22

22

A

B в)

=

3530252015105

1412108642

7654321

C

2. Да се пресмета производот на сигналите

=nnx ],[1 0, 1, 2, ..., 8 = [3, 5, 8, 1, 2, 3, 7, 8, 1] и

=nnx ],[2 0, 1, 2, ..., 8 = [2, 1, 0, 4, 0, 5, 4, 3, 3]

3. Да се генерираат и графички да се претстават сигналите:

а) ,32][ 2 +⋅= nnx ,2=n 5, 8, 11, 14, ..., 35

б) 2][201.0 −= +

⋅− nenx n , =n 3, 4, 5, 6, ... 13

в) ),34cos()( −⋅= − tetx t 4:001.0:0=t

г) )2sin()23cos()( tttx ⋅+= , 15:01.0:0=t

4. Да се претстават на ист график сигналите:

а) )cos()(1 ttx = и )4cos()(2 ttx = , 10:01.0:0=t

б) tetx −=)(1 и )2sin()(2 ttx = , 10:01.0:0=t

Page 14: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

14

VE@BA 2VE@BA 2VE@BA 2VE@BA 2

Linearna konvolucijaLinearna konvolucijaLinearna konvolucijaLinearna 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 izvri so funkcijata conv.

>> n=[0:9]; h=(0.5).^n;

>> x=[ones(1,10)];

>> y=conv(x,h)

• So pomo na funkcijata size proverete kolkava e dol`inata na izlezniot signal y. Potoa, so pomo na funkciite subplot i stem prika`ete gi signalite x,h i y na ist grafik.

Grafi~ka interpretacija na linearnata konvolucija mo`e da se dobie so ispiuvawe na naredbata dconvdemo na komandnata linija. Kako rezultat na izvruvawe na naredbata na ekranot e se pojavi sledniot prozorec.

So pritiskawe na kop~eto Get x[n], se otvora nov prozorec so prika`an pravoagolen impuls. Po `elba, drug signal mo`e da se izbere od listata vo gorniot del od prozorecot, a parametrite na signalot mo`at da se promenat so

Page 15: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

15

kontrolnite kop~iwa od desnata strana. Potoa se pritiska na OK i izbraniot signal e prika`an vo Input prozorecot vo gorniot desen agol.

Na sli~en na~in se izbira i impulsniot odziv h[n] so pritiskawe na kop~eto Get

h[n], po to h[n] se pojavuva vo prozorecot Impulse Response....

Vo gorniot lev prozorec vlezniot signal x[n] e prika`an so plava boja i presvrtenata verzija na impulsniot odziv e prika`ana so crvena boja.

Vo sredniot prozorec e prika`an rezultatot od mno`eweto “primerok po primerok” na dvata signala prika`ani vo gorniot prozorec. Ovoj prozorec mo`e da bide i prazen.

Vo dolniot prozorec e prika`an izlezniot signal, koj pretstavuva linearna konvolucija na x[n] i h[n].

Linearna konvolucija vo realno vreme: Postavete go gluv~eto nad oznakata ↑ n , i e se pojavi eden simbol vo oblik na raka. So dvi`ewe na rakata levo ili desno, so pomo na gluv~eto, mo`e da se menuva vrednosta na indeksot n. Pri toa presvrteniot impulsen odziv vo gorniot prozorec se pomestuva zaedno so n, a sodr`inata na sredniot prozorec se menuva vo zavisnost od relativnoto poklopuvawe na vlezniot signal i presvrteniot impulsen odziv. Za odredeno n vo dolniot prozorec e istaknat eden primerok od izlezniot signal. Ovoj primerok se dobiva so sobirawe na site primeroci za toa n od sredniot prozorec.

• Sledeji ja gore navedenata postapka grafi~ki prika`ete ja linearnata konvolucija na dva pravoagolni impulsa so ednakva i so razli~ni dol`ini.

Prenosna funkcijaPrenosna funkcijaPrenosna funkcijaPrenosna funkcija

Dadena e prenosnata funkcija na eden kauzalen diskreten sistem

21

1

64.028.01

24.01)(

−−

+−

+=

zz

zzH

Treba da se odredi negoviot impulsen odziv.

Bideji

∑∞=

=

−=Ζ=n

n

nznhnhzH

0

][][)(

problemot se sveduva na odreduvawe inverzna z-transformacija na H(z). Za taa cel mo`e da se iskoristi funkcijata residuez. So residuez, H(z) mo`e da se razlo`i na prosti drobnoracionalni funkcii po to ostanuva da se primeni tablicata na z-transformacii za da se dobie h[n].

>> b=[1,0.4*sqrt(2)]; a=[1, -0.8*sqrt(2),0.64];

>> [R,p,C]=residuez(b,a)

R =

0.5000-1.0000i

0.5000+1.0000i

p =

0.5657+0.5657i

0.5657-0.5657i

Page 16: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

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 % agolot na polot vo pi edinici

Ap =

0.2500

-0.2500

[to zna~i, H(z) mo`e da se razlo`i na sledniot na~in

14

3524.0

14

3524.0

8.01

118.1

8.01

118.1)(

−−

+

=

ze

e

ze

ezH

jjπ

π

π

π

Koristeji ja tablicata za z-transformacija za h[n] se dobiva:

)3524.04

cos()8.0(118.12][ ππ

−⋅⋅= nnhn

Funkcijata filter mo`e da se iskoristi za verifikacija na dobieniot rezultat. So istata, ako se dadeni vlezniot signal i prenosnata funkcija na diskretniot sistem, mo`e da se odredi izlezniot signal. Opt oblik na funkcijata

y=filter(b,a,x)

kade to b = [b0, b1,...bp] i a = [a0, a1,...aq] se vektori ~ii elementi se koeficientite na polinomite vo broitelot i imenitelot na H(z), a x e vlezna niza. Dol`inata na izleznata niza y e ista so dol`inata na vleznata niza x.

Ako x[n]=δ [n], izleznata niza go pretstavuva implusniot odziv na sistemot. Prvite osum primeroci na impulsniot odziv, dobieni numeri~ki (so pomo na funkcijata filter) se:

>> delta=[1 zeros(1,7)];

Page 17: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

17

>> y=filter(b,a,delta)

Columns 1 through 4

1.0000 1.6971 1.2800 0.3620

Columns 5 through 8

-0.4096 -0.6951 -0.5242 -0.1483

• Dobienite vrednosti sporedete gi so prvite osum primeroci na impulsniot odziv, dobieni analiti~ki:

>> n=[0:7];

>> h =(2*1.118*(0.8).^n).*(cos(pi*n/4-0.3524*pi))

Diferencna ravenkaDiferencna ravenkaDiferencna ravenkaDiferencna 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.

][]2[9.0]1[][ nxnynyny =−+−−

So z-transformacija na gornata ravenka, koristeji ja osobinata na translacija, se dobiva

21 9.01

1

)(

)()(

−− +−==

zzzX

zYzH

Prvite 100 primeroci na impulsniot odziv i grafi~ki prikaz na istiot se dobivaaat so slednata niza naredbi:

>> b=[1]; a=[1 –1 0.9]; n=[0:99];

>> delta=[1 zeros(1,99)];

>> h=filter(b,a,delta);

>> subplot (2,1,1); stem(n,h)

>> title(‘Impulsen odziv’); xlabel(‘n’); ylabel(‘h(n)’)

Indicioniot odziv na sistemot mo`e da se odredi so pomo na funkcijata za kumulativna suma cumsum.

>> ai=cumsum(h);

>> subplot(2,1,2); stem(n,ai)

>> title(‘Indicionen odziv’); xlabel(‘n’); ylabel(‘a(n)’)

• Od graficite procenete dali dadeniot sistem e stabilen.

Page 18: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

18

Задачи:

1. Да се пресмета линеарната конволуција на сигналите:

а)

n

nnx

==

6

550,..2,1],[ и 40,..2,1,1][ == nnh

б) ]19,16,13,10,9,7,5,3,1[][ =na и

]5,5,5,5,5,5,2,2,2,2,2[][ =nb

2. Да се разложат следните функции во прости дробно-рационални изрази од z :

а) 15.2

34)(

2

2

+−

+−=

zz

zzzH

б) 23

2)(

2

2

++

−+=

zz

zzzH

3. Да се пресметаат и графички да се претстават првите 50 примероци од

импулсниот и индициониот одзив на системот:

6

1

6

5

34)(

2

2

++

+−=

zz

zzzH

4. Даден е дискретен систем со преносна функција:

23

2)(

2

2

+−

−−=

zz

zzzH

а) Да се одреди и графички да се претстави излезниот сигнал ако на влез се

донесе сигналот

>∪<

=

=

=

401,0

40,...22,21,2

20,..2,1,1

][

nn

n

n

nx

со користење на наредбите filter и conv;

б) Да се претстави графички индициониот одзив на системот, и од графикот да

се процени дали системот е стабилен.

Page 19: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

19

VE@BA 3VE@BA 3VE@BA 3VE@BA 3

FrFrFrFreeeekvenciska karakteristikakvenciska karakteristikakvenciska karakteristikakvenciska karakteristika

Mo`e da se odredi so pomo na funkcijata freqz. Opt 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

)8.01)(8.01()(

11

12

−−

−−

−+

+=

zz

zzzH

Amplitudnata i faznata karakteristika na sistemot mo`at da se dobijat na sledniot na~in:

>> b=[0,1,1]; a=poly([0.8,-0.8]);

>> w=[0:1:500]*pi/500; % (0-pi) oskata se deli na 501

% tocka vo koi se presmetuva H

>> H=freqz(b,a,w);

>> A=abs(H); % Amplitudna k-ka

>> phi=angle(H); % Fazna k-ka

>> subplot(2,1,1); plot(w/pi, A); grid

>> xlabel(‘Frekvencija vo pi edinici’); ylabel(‘Amplituda’)

>> title(‘Amplitudna karakteristika’)

>> subplot(2,1,2); plot(w/pi, phi/pi); grid

>> xlabel(‘Frekvencija vo pi edinici’);

>> ylabel(‘Faza vo pi edinici’)

>> title(‘Fazna karakteristika vo pi edinici’)

Page 20: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

20

PoloPoloPoloPolovi i nuli vi i nuli vi i nuli vi 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.

• Od pol/nula dijagramot procenite dali diskretniot sistem pretstaven so gornata prenosna funkcija e stabilen.

Vlijanie na polovite i nulite na frekvenciskata karakterVlijanie na polovite i nulite na frekvenciskata karakterVlijanie na polovite i nulite na frekvenciskata karakterVlijanie na polovite i nulite na frekvenciskata karakteristikaistikaistikaistika

Vlijanieto na polovite i nulite na frekvenciskata karakteristika mo`e da se ispita so pomo na Pole-Zero Editor-ot. Istiot se startuva so naredbata pezdemo. Pole-Zero Demo: Od levata strana se nao|a Z-ramninata vo koja se vnesuvaat polovite i nulite. So objektite vo Z-ramninata mo`e da se manipulira na ednostaven na~in: nulite i polovite mo`at da se selektiraat i da se premestat od edna na druga lokacija. Vo gorniot del ima povee komandni kop~iwa so koi mo`at da se vnesuvaat polovi i nuli vo Z-ramninata. Se kliknuva na PP ili ZZ kop~eto, a potoa so pomo na gluv~eto se selektira lokacijata vo Z-ramninata za noviot pol (nula). Osnovna help informacija za sekoja operacija se pojavuva vo desniot dolen agol na prozorecot.

Page 21: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

21

Vo ostanatite prozorci se prika`ani impulsniot odziv, amplitudnata i faznata karakteristika na diskretniot sistem pretstaven so izbranite polovi i nuli.

Taka na primer, so sledniot raspored na polovite i nulite

se dobiva slednata amplitudna karakteristika

• So pomo na ~etiri nuli i ~etiri polovi obidete se da ja dobiete slednata amplitudna karakteristika.

-1 -0.5 0 0.5 1

-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

Real part

Imagin

ary

part

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Frekvencija vo pi edinici

Am

plit

uda

Amplitudna karakteristika

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Frekvencija vo pi edinici

Am

plit

uda

Amplitudna karakteristika

Page 22: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

22

• So pomo na tri nuli i dva pola obidete se da ja dobiete slednata amplitudna karakteristika.

Задачи:

1. Да се пресмета фреквенциската карактеристика на системот:

2.0

12)(

2

2

+

++=

z

zzzH

за фреквенции од опсегот ],[ ππ− со чекор 100

π.

Да се прикажат графички амплитудната и фазната карактеристика на системот.

2. Да се прикаже пол-нула дијаграмот и од него да се процени стабилноста на

следните дискретни системи:

a) 3.055.1

32)(

2

2

+−

+−=

zz

zzzH б)

77.266.2

2)(

2

2

+−

−+=

zz

zzzH в)

8.05.1

35.0)(

2

2

++

−+=

zz

zzzH

3. За LTI системот зададен со следната диференцна равенка:

]2[4

1]1[

2

2]2[]1[2][][ −−−−−+−−= nynynxnxnxny

а) Да се одреди дали е стабилен системот;

б) Да се пресмета и графички (со stem) да се прикаже амплитудната

карактеристика на системот за следните фреквенции:

30, , , , ,

8 4 8 2

π π π πω π

=

.

в) Да се одреди и графички да се прикаже одзивот, ако на влез на системот се

донесе сигналот:

)25.0cos(33

10][ nnx π+= , n=0,1,..100

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Frekvencija vo pi edinici

Am

plit

uda

Amplitudna karakteristika

Page 23: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

23

VE@BA 4 VE@BA 4 VE@BA 4 VE@BA 4

Diskretizacija na analogni siganaliDiskretizacija na analogni siganaliDiskretizacija na analogni siganaliDiskretizacija na analogni siganali

Za prou~uvawe na procesot na diskretizacija, rekonstrukcija i propratnite

efekti e go koristime signalot ||1000)( ta etx

−= . Negovata Furieova

transformacija e

2

10001

002.0)()(

Ω+

==Ω ∫∞

∞−

Ω−dtetxjX

tjaa

Striktno gledano so MATLAB ne mo`at da se analiziraat analogni signali. Me|utoa, dokolku se zemat primeroci od analogniot signal vo mnogu mali

vremenski intervali ∆t (∆t ne treba se mea so periodot na diskretizacija Ts), so nizata )(][ tmxmx aG ∆= mo`e da se simulira analogniot signal.

Za numeri~ko presmetuvawe na Xa (jΩ) najprvo mora da se aproksimira xa(t) so

kone~na niza xG [m]. Koristeji ja aproksimacijata 05 ≈−e , mo`e da se zabele`i

deka xa(t) mo`e da se aproksmira so signal so kone~no traewe so interval 005.0005.0 ≤≤− t , (ili vo intervalot [-5,5] msec.). Sli~no,

0)( ≈ΩjX a za )2000(2π≥Ω . Spored toa so izbor na

55 1025)2000(2

1105 −− ×=<<×=∆t

mo`e da se dobie xG [m] i da se presmeta negoviot spektar. Sega relacijata za Furieovata transformacija mo`e da se aproksimira na sledniot na~in:

∑∑ ∆Ω−∆Ω− ∆=∆≈Ωm

tj

G

m

tj

Gamm emxttemxjX ][][)(

i mo`e da se presmeta so slednata niza na naredbi:

% Analogen Signal

>> Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t));

>> Wmax = 2*pi*2000; K = 500; k = 0:1:K; W = k* Wmax/K;

>> Xa = xa * exp(-j*t'*W) * Dt; Xa=real(Xa);

>> W = [-fliplr(W), W(2:501)];

>> Xa = [fliplr(Xa), Xa(2:501)];

>> subplot(2,1,1)

>> plot(t*1000,xa)

>> xlabel('t vo msec.'); ylabel('xa(t)')

>> title('Analogen signal')

>> subplot(2,1,2)

>> plot(W/(2*pi*1000), Xa*1000);

>> xlabel('Frekvencija vo KHz'); ylabel('Xa(jW)*1000')

>> title('Furieova transformacija')

Page 24: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

24

Da go vidime efektot na diskretizacija vrz frekvenciskite karakteristiki na signalot e izvrime diskretizacija na xa(t) so frekvencija na diskretizacija fs =

5000 prim/sec. Bideji najvisokata fekvencija vo spektarot na xa(t) e 2000 Hz,

Nyquist-ovata frekvencija e 4000 sam/sec, to e pomalku od dadenata frekvencija na diskretizacija. Vo ovoj slu~aj preklopuvawe nema da postoi.

% Analogen signal

>> Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t));

% Diskretiziran signal

>> Ts = 0.0002; n = -25:1:25; x1 = exp(-1000*abs(n*Ts));

% Spektar na diskretniot signal

>> K = 500; k = 0:1:K; w = pi*k/K;

>> X1 = freqz(x1,1,w); X1 = abs(X1);

>> w = [-fliplr(w) w(2:K+1)];

>> X1 = [fliplr(X1) X1(2:K+1)];

% prikaz

>> subplot(2,1,1); plot(t*1000,xa);

>> xlabel('t in msec.'); ylabel('x1(n)')

>> title('Diskreten signal (Ts = 0.2 msec)'); hold on

>> stem(n*Ts*1000,x1); hold off

>> subplot(2,1,2); plot(w/pi,X1);

>> xlabel('Frekvencija vo pi edinici'); ylabel('X1(w)')

>> title('Spektar na diskretniot signal')

-5 -4 -3 -2 -1 0 1 2 3 4 50

0.2

0.4

0.6

0.8

1

t vo msec.

xa(t

)

Analogen signal

-2 -1.5 -1 -0.5 0 0.5 1 1.5 20

0.5

1

1.5

2

Frekvencija vo KHz

Xa(jW

)*1000

Furieova transformacija

Page 25: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

25

So cel da se prika`e postapkata na diskretizacija na slikata se prika`ani diskretniot signal x1[n] i analogniot sihnal xa(t). Spekarot na diskretniot

signal X1(ejω

) e skalirana verzija (skaliran so fs = 5000) na spektarot na

analogniot signal X (jΩ). O~igledno e deka nema preklopuvawe.

• Da se izvri diskretizacija na analogniot signal xa(t) so frekvencija na diskretizacija fs = 1000 prim/sec. Da se odredi i nacrta spektarot na diskretiziraniot signal x2[n]. Da se diskutira dobieniot rezultat.

So startuvawe na demoto con2dis mo`e da se dobie jasna slika za diskretizacijata i preklopuvaweto to pritoa mo`e da se javi.

RekonstrukcijaRekonstrukcijaRekonstrukcijaRekonstrukcija

Matemati~ki rekonstrukcijata na analogniot signal xa(t) od negovata disktretna verzija x[n] mo`e da se opie so slednata relacija za ekstrapolacija:

∑∞

−∞=

−=n

ssa nTtfnxtx )]([sinc ][)(

Kade to xxx ππ /)(sin)(sinc = e ekstrapolaciska funkcija. Vakvata idealna

ekstrapolacija ne e prakti~no ostvarliva, bideji celiot sistem e nekauzalen, a so toa i fizi~ki neostvarliv. Vo praksa se koristat ekstrapolatori od kone~en red. Zaradi ednostavno nie e gi razgledame ekstrapolatorite od red nula i eden.

Vo MATLAB ekstrapolacija pome|u primerocite mo`e da se ostvari na nekolku na~ini. Funkcijata sinc(x), so koja se generira funkcijata xx ππ /)(sin mo`e da se

iskoristi za rekonstrukcija na signal so kone~na dol`ina. Ako e daden x[n] i ako

sakame da izvrime ekstrapolacija na mnogu fina rezolucija, so interval ∆t, toga gornata relacija postanuva:

-5 -4 -3 -2 -1 0 1 2 3 4 50

0.2

0.4

0.6

0.8

1

t in msec.

x1(n

)

Diskreten signal (Ts = 0.2 msec)

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10

2

4

6

8

10

Frekvencija vo pi edinici

X1(w

)

Spektar na diskretniot signal

Page 26: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

26

21 ,)]([sinc ][)(2

2

ttmtnTtmfnxtmx

n

nn

ssa ≤∆≤−∆≈∆ ∑=

Od primerocite x1[n] e izvrime rekonstrukcija na signalot xa(t), so slednata niza na naredbi:

% Diskreten signal x1(n)

>> Ts = 0.0002; Fs = 1/Ts; n = -25:1:25; nTs = n*Ts;

>> x1 = exp(-1000*abs(nTs));

% Rekonstrukcija na analogniot signal

>> Dt = 0.00005; t = -0.005:Dt:0.005;

>> xa = x1*sinc(Fs*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));

% 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');

>> stem(n*Ts*1000,x1); hold off

Maksimalnata greka pome|u rekonstruiraniot i originalniot analogen signal e relativno mala i e rezultat na faktot to xa(t) ne e so ograni~en spektar (kako i poradi kone~niot broj na primeroci).

• Da se izvri rekonstrukcija na analogniot signal xa(t) od primerocite na signalot x2[n]. Da se diskutira dobieniot rezultat.

Drug na~in kako mo`e da se izvri rekonstrukcija vo MATLAB e so pomo na funkciite stairs i plot, koito simuliraat esktrapolacija od nula i prv red. Zna~i so ovie funkcii ne se presmetuva xa(t), tuku samo se prika`uva negoviot oblik dobien od primerocite na x[n].

%Rekonstrukcija so koristenje na stairs i plot funkciite

% Diskreten signal x1(n) : Ts = 0.0002

>> Ts = 0.0002; n = -25:1:25; nTs = n*Ts;

>> x1 = exp(-1000*abs(nTs));

% Reconstrukcija so koristenje na stairs funkcijata

>> subplot(2,1,1); stairs(nTs*1000,x1); hold on

>> xlabel('t in msec.'); ylabel('xa(t)')

>> title('Rekonstruiran signal od x1(n) so ekstrapolator od red

nula');

>> stem(n*Ts*1000,x1); hold off

Page 27: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

27

% Reconstrukcija so koristenje na plot funkcijata

>> subplot(2,1,2); plot(nTs*1000,x1);

>> xlabel('t in msec.'); ylabel('xa(t)')

>> title('Rekonstruiran signal od x1(n) so ekstrapolator od red

eden'); hold on

>> stem(n*Ts*1000,x1); hold off

Od dobienite grafici mo`e da se vidi deka rekonstrukcijata so ekstrapolacijata od red nula e gruba i deka e neophodna dopolnitelno procesirawe na analogniot signal. Ektrapolacijata od red eden poka`uva mnogu podobri rezultati. Generalno, dokolku frekvencijata na diskretizacija e mnogu pogolema od Nyquist-ovata frekvancija, so ekstrapolatorot od prv red se ostvaruvaat zadovolitelni rekonstrukcii na analogniot signal.

Задача:

1. Сигналот )15sin(2)2cos()( tttxa ππ −= , дефиниран во интервалот )10,0(∈t , е

два пати дискретизиран: еднаш со фреквенција на дискретизација 10=sf

примероци/секунда, со што е добиен дискретниот сигнал ][1 nx , и втор пат со

фреквенција на дискретизација 20=sf примероци/секунда, со што е добиен

дискретниот сигнал ][2 nx .

а) Да се претстават на ист график сигналите )(txa и ][1 nx ;

б) Да се претстават на ист график сигналите )(txa и ][2 nx ;

в) Да се нацрта амплитудниот спектар на сигналите ][1 nx и ][2 nx во интервалот

],[ ππω −∈T , и од графиците да се одреди дали постои преклопување на

спектрите;

г) Да се нацртаат сигналите )(1 tx и )(2 tx кои се добиени со реконструкција од

сигналите ][1 nx и ][2 nx со користење на екстраполатор од нулти ред;

Page 28: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

28

VE@BA 5VE@BA 5VE@BA 5VE@BA 5

Diskretna Furieova transformacija (Diskretna Furieova transformacija (Diskretna Furieova transformacija (Diskretna Furieova transformacija (DFT)

DFT na niza od N elementi x[n], n = 0, 1, … , N-1, e definirana so kone~na suma

1,...,1,0,][][1

0

−==∑−

=

NkWnxkXN

n

nk (4.1)

kade W = e-j2π / Ν pretstavuva jadro na transformacijata.

Od dobienata niza X[k], k = 0, 1, … , Ν −1 originalot x[n] se rekonstruira so

1,...,1,0,][1

][1

0

−== ∑−

=

−NnWkX

Nnx

N

k

nk (4.2)

Implementacija na DFT (4.1) e mo`na na nekolku na~ini. Pri direktna implementacija na relacijata 4.1, za presmetuvawe na sekoj primerok od X[k] potrebno e sumirawe vo eden for . . . end ciklus. Za presmetuvawe na site DFT koeficienti potreben e ute eden for . . . end ciklus. Vo MATLAB, vakvata implementacija so dva for . . . end ciklusa ne e efikasna. Za efikasna implementacija vo MATLAB potrebno e relaciite 4.1 i 4.2 da se pretstavat vo matri~en oblik. Ako x i X se vektori koloni koi gi sodr`at koeficientite na x[n] i X[k], respektivno, toga relaciite 4.1 i 4.2 mo`at da se napiat vo matri~en oblik:

X = T x (4.3) i

x = T-1

X (4.4)

kade T = [W i j

]; i, j = 0,1, . . . , N-1 e matrica na transformacijata, a T −−−−1 = (1/ N) T

*.

So slednite MATLAB funkcii se imlementiraat relaciite 4.3 i 4.4.

____________________________________________________________

function [X] = dft(xn,N)

% Presmetuva diskretna Furieova transformacija

% na konecna niza xn so dolzina N

n = [0:N-1]; % vektor za indeksite n

k = [0:N-1]; % vektor za indeksite k

W = exp(-j*2*pi/N); % jadro na transformacijata

nk = n'*k; % NxN matrica so elementi nk

T = W.^ nk; % matrica na transformacija

Xk = xn *T; % DFT koeficienti

function [xn] = idft(Xk,N)

% Presmetuva inverzna diskretna Furieova transformacija

n = [0:1:N-1]; % vektor za indeksite n

k = [0:1:N-1]; % vektor za indeksite k

W = exp(-j*2*pi/N); % jadro na transformacijata

nk = n'*k; % NxN matrica so elementi nk

T = W .^ (-nk); % inverzna matrica na transformacija

xn = (Xk * T)/N; % IDFT koeficienti

Page 29: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

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 0 2.0000 + 2.0000i

Amplitudite i aglite na X[k] se

>> A=abs(X), phi=angle(X)*180/pi

A =

0 2.8284 0 2.8284

phi =

0 -45.0000 0 45.0000

• Dadena e diskretna niza so dol`ina N =12

x[n], n = 0, 1, … , 11 = 1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1

So pomo na funkcijata freqz odredete gо i nacrtajte gо amplitudniot spektar na nizata x[n].

So pomo na funkcijata dft odredete gо i nacrtajte ја (koristete ja funkcijata stem) amplitudata na DFT koeficientite X[k].

Obidete se da gi nacrtate gornite grafici (koristete ja funkcijata hold) na eden grafik. Poka`ete deka DFT koeficientite pretstavuvaat primeroci od spektarot na signalot za to~no opredeleni frekvencii. Odredete gi tie frekvencii.

• Da se presmeta DFT na slednite nizi.

x1=[1,zeros(1,7)]; % 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;

Da se prika`at amplitudite na DFT koeficientite.

• Generirajte ja nizata x[n] = cos(0.48 π n)+cos(0.52 π n), 150 ≤≤ n , so dol`ina 16. Presmetajte ja nejzinata DFT i prika`ete gi amplitudite na DFT

koeficientite. Prodol`ete ja nizita so nuli do dol`ina 64 i povtorno prika`ete gi amplitudite na DFT koeficientite.

Povtorno generirajte ja nizata x [n] no sega so dol`ina 64 i nacrtajte gi amplitudite na DFT koeficientite. Sporedete gi dobienite grafici i objasnete gi razlikite.

Page 30: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

30

Brza Furieova transformacija (Brza Furieova transformacija (Brza Furieova transformacija (Brza Furieova transformacija (FFT)

Brzata Furieova transformacija e algoritam za brzo presmetuvawe na DFT. Vo MATLAB, eden brz algoritam za presmetuvawe na DFT na kone~na niza e implementiran so funkcijata fft. Opt oblik na funkcijata

X=fft(x,N)

so to se dobiva DFT na nizata x presmetana vo N to~ki. Ako dol`inata na nizata x e pomala od N, nizata x se dopolnuva so nuli do dol`ina N. Ako argumentot N se

isputi, toga dol`inata na DFT e ista so dol`inata na nizata x. Funkcijata fft e vgradena funkcija (ne e dostapna kako m-datoteka) i spored toa se izvruva mnogu brzo. Ako N e stepen so osnova 2, pri izvruvaweto na funkcijata se primenuva brz FFT algoritam. Ako N ne e stepen so osnova 2, N se razlo`uva na prosti faktori, i se primenuva neto pobaven FFT algoritam. Kone~no ako N e prost broj, FFT se sveduva na presmetuvawe na DFT po definicija.

Inverznata DFT se presmetuva so funkcijata ifft, koja ima isti karakteristiki kako i fft.

• Generirajte ja nizata x[n]=cos (π n/99), 990 ≤≤ n . So pomo na parot naredbi tic i toc, presmetajte go vremeto potrebno za presmetuvawe na DFT (so pomo na funkciite dft i fft) na nizata vo N =512 i N = 514 to~ki. Komentirajte go dobieniot rezultat.

Upotreba na tic/toc naredbata:

>> tic; naredbi (funkcii); toc

Задачи:

1. Да се претстави графички амплитудниот спектар на низата

]0,0,1,1,1,1,1,1,1,1[][ =nx за фреквенции во интервалот ],0[ πω ∈T . Да

се одреди DFT во 20 точки на низата ][nx , и да се прикаже модулот на DFT

коефициентите на ист график со амплитудниот спектар.

2. Со користење на DFT, да се пресметаат и графички да се прикажат 40

примероци од амплитудниот и фазниот спектар на низата ][nx (од претходната

задача), во интервалот [0, ]Tω π∈ .

Page 31: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

31

VE@BA 6VE@BA 6VE@BA 6VE@BA 6

Linearna i cikli~na konvolucijaLinearna i cikli~na konvolucijaLinearna i cikli~na konvolucijaLinearna i cikli~na konvolucija

Linearna konvolucija na dve kone~ni kauzalni nizi x[n] i g[n] so dol`ini N i L, respektivno, e kauzalna niza so dol`ina N+L-1

∑∑==

−+=−=−=n

k

n

k

LNnkgknfkngkfns00

2,...,1,0],[][][][][

Implementacija na linearnata konvolucija vo MATLAB mo`e da se izvri so funkcijata conv.

Za dve kone~ni nizi x[n] i g[n] so ista dol`ina N, cikli~nata konvolucija e kone~na niza c[n] so dol`ina N definirana so

∑∑−

=

=

−=−=−=1

0

1

0

1,...,1,0],[)][()][(][][N

m

N

m

Nnmgmnfmngmfnc

kade to so (n-m) e ozna~eno n-m mod N.

Funkcijata cikconvt (ne e standardna MATLAB funkcija) mo`e da se iskoristi za presmetuvawe na cikli~nata konvolucija.

• Dadeni se dve nizi x1[n]=1,2,2,1,2,2,1,2,2,1 i x2[n]=1,2,3,4,5,6,7,8,9,10 so ista dol`ina N = 10.

Da se presmeta nivnata linearna konvolucija s[n].

Da se presmeta nivnata cikli~na konvolucija c[n].

Da se presmeta cikli~nata konvolucija taka da bide ednakva so linearnata konvolucija.

Grafi~ka interpretacija na linearnata i cikli~nata konvolucija mo`e da se dobie so ispiuvawe na naredbata dconvdemo na komandnata linija. Po izvruvawe na naredbata e se otvori prozorecot Discrete Convolution Demo. Vo Plot Options menito odberete ja opcijata Show Circular Convolution i od levata strana e se pojavi ute eden prozorec vo koj se prika`uva cikli~nata konvolucija na dvate izbrani nizi.

• Da se presmeta DFT na nizite x1[n] i x2[n] definirani pogore. Da se presmeta IDFT na proizvodot X1[k] X2[k]. Dobieniot rezultat da se sporedi so nivnata cikli~na konvolucija c[n].

• So pomo na DFT da se presmeta linearna konvolucija na nizite x1[n] i x2[n].

Page 32: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

32

Konvolucija na dolga nizaKonvolucija na dolga nizaKonvolucija na dolga nizaKonvolucija na dolga niza

Postojat dva metoda na koi, koristeji cikli~na konvolucija dobiena so pomo na DFT mo`e da se presmeta linearna konvolucija na dolga niza. Vo sledniot primer e ilustriran metodot na prekolopeni vlezovi. Treba da se presmeta linearna konvolucija na nizite x[n] = (n+1), 90 ≤≤ n i h[n] = 1, 0, -1, so pomo na cikli~na konvolucija vo N = 6 to~ki.

Najprvin nizata x[n] se deli na podnizi so dol`ina Nx = N – Nh +1 = 4, so to se dobivaat 3 podnizi. Bideji dol`inata na pokratkata niza e Nh = 3, sekoja podniza

e se preklopuva so prethodnata so Nh −1= 3 −1 = 2 primeroci i Nh −1= 2 nuli se dodavat na po~etokot na prvata podniza. Taka podnizite e bidat:

>> x1=[0,0,1,2,3,4];

>> x2=[3,4,5,6,7,8];

>> x3=[7,8,9,10,0,0];

Bideji se presmetuva cikli~na konvolucija vo 6 to~ki poslednata podniza e prodol`ena so dve nuli.

Potoa se presmetuva cikli~na konvolucija na sekoja podniza so h[n]:

>> h=[1 0 –1 0 0 0];

>> y1=cikconvf(x1,h,6); % cikconvf presmetuva ciklicna

>> y2=cikconvf(x2,h,6); % konvolucija so pomos na DFT

>> 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 2 2 2 2 2 2 2 2 2 –9 –10

Istiot rezultat se dobiva i ako linearnata konvolucija se presmeta so pomo na funkcijata conv:

>> y=conv(x,h)

y =

1 2 2 2 2 2 2 2 2 2 –9 –10

So funkcijata prvlez e implementirana pogore opianata postapka za procesirawe na dolgi nizi po metodot na preklopeni vlezovi.

Page 33: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

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)]; % se dodavaat (M-1) nuli

% pred prvata niza

K = floor((Lenx+M1-1)/(L)); % broj na sekcii (podnizi)

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

So slednata niza naredbi mo`e da se izvri verifikacija na rabotata na funkcijata prvlez:

>> n=0:9; x=n+1; h=[1,0,-1]; N=6;

>> y=prvlez(x,h,N)

y =

1 2 2 2 2 2 2 2 2 2 –9 –10

Pogolema efikasnosta na funkcijata prvlez mo`e da se dobie ako delot vo koj se presmetuva cikli~nata konvolucija se realizira so FFT. Ova podobruvawe e izvedeno vo funkcijata prvlezf (help prvlezf). Dol`inata na cikli~nata konvolucija e sekoga stepen so osnova 2.

Задача:

1. Со методот на преклопени излези да се пресмета линеарна конволуција на

истите низи x[n] i h[n].

Page 34: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

34

VE@BA 7VE@BA 7VE@BA 7VE@BA 7

Dizajn na Dizajn na Dizajn na Dizajn na FIR filtri so metod na prozorci filtri so metod na prozorci filtri so metod na prozorci filtri so metod na prozorci

Impulsniot odziv na digitalen filter za niski frekvencii so (idealna) frekvenciska karakteristika

>

≤=

p

pTjd eH

ωω

ωωω

0

1)(

e so beskone~no traewe i ne e kauzalen:

hd [n] = sin(nω pT)/nπ, Zn ∈ .

Bideji negovata prakti~na realizacija ne e mo`na, nu`no e da se ograni~i traeweto na impulsniot odziv so presekuvawe (mno`ewe so pravoaglen prozorec). Taka na primer, usvojuvaji dol`ina na prozorecot N = 51, grani~na frekvencija

na idealniot filter ω p= 0.4 π, T=1sec, so komandata

>> h=0.4*sinc(0.4*(-25:25));

se dobiva impulsen odziv na nekauzalniot FIR filter so linearna faza. Prozorecot kojto ovde e primenet e pravoagolen prozorec (boxcar). Amplitudnata karakteristika na filterot mo`e da se vidi so:

>> w=[0:1:500]*pi/500;

>> H=freqz(h,1,w);

>> plot(w/pi,abs(H)), grid

• Zgolemete ja dol`inata na prozorecot na N = 91 i nacrtajte ja frekvenciskata karakteristika na dobieniot filter. Komentirajte go vlijanieto na dol`inata N na frekvenciskata karakteristika.

Efektot na Gibbs mo`e da se namali so izbor na drug vid prozorec. Primenuvaji Hamming-ov prozorec so dol`ina 51 na istiot filter, so komandata

>> h=h.*hamming(51)’;

>> H=freqz(h,1,w);

>> hold on, plot(w/pi,abs(H)), grid

jasno se gleda namaluvaweto na efektot na Gibbs po cena na zgolemuvawe na preodniot opseg.

MATLAB sodr`i nekolku prozorci koi se koristat za dizajn na filtri: boxcar, triang, hanning, hamming, blackman i kaiser.

MATLAB funkciite fir1 i fir2 za proektirawe na filtri so kone~en impulsen odziv se zasnovani na metodot so prozorci. Funkcijata fir1 se koristi za filtri so eden propusten opseg, dodeka fir2 ovozmo`uva filterot da ima povee propusni opsezi. Povee za funkciite fir1 i fir2 doznajte so naredbata help.

So pomo na slednata skripta prika`ana e postapkata za dizajn na FIR filter za niski frekvencii po metodot so prozorci, so slednite parametri:

- grani~na frekvencija na propusniot opseg ω p= 0.2 π;

- grani~na frekvencija na nepropusniot opseg ω q= 0.3 π;

- maksimalno slabeewe vo propusniot opseg 0.25 dB;

- minimalno slabeewe vo nepropusniot opseg 50 dB.

Page 35: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

35

Najprvin za dadenite parametri se izbira prozorecot i dol`inata na istiot. I so Hamming-oviot i so Blackman-oviot prozorec mo`e da se obezbedi slabeewe pogolemo od 50 dB vo nepropusniot opseg. Bideji Hamming-oviot prozorec obezbeduva potesno preodno podra~je, a so toa ima i pomala dol`ina go izbirame Hamming-oviot prozorec. Iako maksimalnoto slabeewe vo propusniot opseg ne se koristi vo procesot na dizajnirawe potrebno e da se proveri dali istoto e vo dozvolenite granici na tolerancija.

>> wp=0.2*pi; wq=0.3*pi;

>> opseg=wq–wp; % sirocina na preodniot opseg

>> N=ceil(6.6*pi/opseg)+1 % procenka na dolzinata N

>> wc = (wq+wp)/2 % granicna frekvencija na idealnoit LP

>> 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)); %slabeenje vo odnos na max(A)

>> delta_w = 2*pi/1000;

>> Amax= max(Adb(1:1:wp/delta_w+1)) % max slabeenje vo

% propusniot opseg

>> Amin= min(Adb(wq/delta_w+1:1:501))) % min slabeenje vo

% nepropusniot opseg

>> plot(w/pi,-Adb);title('Amplitudna karakteristika vo dB');grid

>> axis([0 1 -100 10]);

>> xlabel('frekvencija vo pi edinici'); ylabel('dB')

Zna~i, za dol`ina N=67, minimalnoto slabeewe vo nepropusniot opseg e 52.92 dB, a maksimalnoto slabeewe vo propusniot opseg e 0.0364 dB so to se zadovoleni zadadenite specifikacii.

• [to e se promeni vo dizajnot ako dol`inata na prozorecot e N = 61?

Dizajn na ednakvobranovi filtriDizajn na ednakvobranovi filtriDizajn na ednakvobranovi filtriDizajn na ednakvobranovi filtri

Parks-McClellan-oviot algoritam za dizajn na ednakvobranovi filtri vo MATLAB e implementiran so funkcijata firpm, ~ija najopta sintaksa e:

h=firpm(N,f,m,weights,ftype).

Mo`ni se slednite verzii na sintaksata:

− h=firpm(N,f,m) dizajnira FIR digitalen filter h od red N (dol`inata na filterot e N+1), ~ija frekvenciska karakteristika e specificirana so vektorite f i m. Vektorot f gi sodr`i grani~nite frekvencii na opsezite izrazeni vo pi edinici, po~nuvaji od 0.0 i zavruvaji so 1.0. Vektorot m ja sodr`i posakuvanata amplitudna karakteristika za frekvenciite specificirani vo f. Dol`inata na vektorite f i m mora da bide ista i mora da bide paren broj. Te`inskata funkcija vo sekoj opseg e 1, to zna~i deka toleranciite vo sekoj opseg se isti.

Page 36: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

36

− h=firpm(N,f,m,weights) sli~na na gornata sintaksa, so toa to vektorot weights gi sodr`i te`inskite faktori za sekoj opseg.

So pomo na slednata skripta prika`ana e postapkata za dizajn na ednakvobranov FIR filter za niski frekvencii so slednite parametri:

- grani~na frekvencija na propusniot opseg ω p= 0.2 π;

- grani~na frekvencija na nepropusniot opseg ω q= 0.3 π;

- maksimalno slabeewe vo propusniot opseg 0.25 dB;

- minimalno slabeewe vo nepropusniot opseg 50 dB.

>> wp = 0.2*pi; wq = 0.3*pi; Amax = 0.25; Amin = 50;

>> delta1 = (10^(Amax/20)-1)/(10^(Amax/20)+1)

>> delta2 = (1+delta1)*(10^(-Amin/20))

>> weights = [delta2/delta1 1] % tezinska f-cija

% za dadenite parametri se procenuva pocetnata

% vrednost za dolzinata N

>> deltaf = (wq-wp)/(2*pi)

>> N = ceil((-20*log10(sqrt(delta1*delta2))-13)/(14.6*deltaf)+1)

>> f = [0 wp/pi wq/pi 1]

>> m = [1 1 0 0];

>> h = firpm(N-1,f,m,weights); % koeficienti na filterot

% Odreduvanje na amplitudnata k-ka na filterot

>> [H,w]=freqz(h,1,1000,’whole’);

>> H=(H(1:1:501))’; w=(w(1:1:501))’;

>> A=abs(H);

>> Adb=-20*log10((A+eps)/max(A)); % slabeenje vo odnos na max(A)

% Odreduvanje na minimalnoto slabeenje vo nepropusniot opseg

>> delta_w = 2*pi/1000; wqi=wq/delta_w+1; wpi = wp/delta_w;

>> Asd = min(Adb(wqi:1:501))

% Bidejki slabeenjeto e pomalo od baranoto, se zgolemuva N i

% postapkata se povtoruva dodeka ne se dobie baranoto slabeenje

>> N = N+1;

>> h = firpm(N-1,f,m,weights);

>> [H,w]=freqz(h,1,1000,’whole’);

Page 37: upatstvo

Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________

37

>> H=(H(1:1:501))’; w=(w(1:1:501))’;

>> A=abs(H);

>> Adb=-20*log10((A+eps)/max(A));

>> Asd=min(Adb(wqi:1:501))

Za N = 47 baranite specifikacii se zadovoleni i postapkata se prekinuva. Dobienata dol`ina na dizajniraniot filter N = 47 e zna~itelno pomala vo sporedba so N = 67 to, za istite specifikacii, bee dobiena so metodot na prozorci.

Задача:

1. Со помош на Parks-McClellan-овиот алгоритам да се дизајнира филтер пропусник на

опсег со следниве параметри:

πωπ

πωπ

πω

ω

ω

ω

≤≤≤≤

≤≤≤≤

≤≤≤≤

75.003.0(0

65.035.005.1(95.0

2.0001.0(0

)

)

)

j

j

j

eH

eH

eH