38
Дигитално процесирање на сигнали _____________________________________________________________________________________ 1 Upatstvo za laboratoriski ve`bi po predmetot Digitalno пrocesirawe na сignali 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 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.

UpatstvoDPS

Embed Size (px)

DESCRIPTION

signali

Citation preview

Page 1: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

1

Upatstvo za laboratoriski ve`bi po predmetot

Digitalno пrocesirawe na сignali

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

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.

Page 2: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

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 pove}e 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 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: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

3

Logi~ki operatori vo MATLAB

& i

| ili

~ ne

MATLAB 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 ponatamo{no koristewe. Dokolku se ispu{tat 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 ispi{uva

na ekran. Ova e od posebno zna~ewe koga ne e potrebno ispi{uvawe na me|urezultatite. Ispu{taweto 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 ispi{uvaweto 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

izbri{at so komandata clear ime_na_promenliva. Samo clear }e gi izbri{e

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 izvr{i so komandata

load. So pomo{ na komandata help videte kako funkcioniraat load i save.

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

Дигитално процесирање на сигнали _____________________________________________________________________________________

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.

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

Page 5: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

5

“nevistinito” promenlivata dobiva vrednost 0 i naredbite ne se izvr{uvaat. So

kombinirawe na if so else i elseif mo`no e pove}ekratno 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 izvr{uvawe na blok naredbi neodreden broj pati se dodeka dadeniot uslov e zadovolen.

Op{t oblik na naredbata

While promenliva

naredbi

end

Naredbite se izvr{uvaat se dodeka promenlivata e “vistinito”. Na primer, za daden broj a slednata programa go presmetuva i ispi{uva 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 izvr{uvaweto na programata. Na primer, generirawe na funkcijata sinus mo`e da se izvr{i 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 op{t slu~aj, podobro e celi vektori da se procesiraat vo isto vreme otkolku

da se koristat ciklusi, bidej}i najgolem broj MATLAB funkcii operiraat so vektori isto kako i so skalari.

Page 6: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

6

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

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

Page 7: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

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 zabele{ki 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 izvr{uvawe na funkcijata.

- Liniite koi po~nuvaat so % ja dokumentiraat m-datotekata i se prika`uvaat

na ekranot pri izvr{uvawe 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

izvr{uvaweto.

- Promenlivite m, n i y se lokalni za funkcijata mean i ne se pojavuvaat vo

MATLAB sesijata po izvr{uvaweto na funkcijata (ili, ako postoele prethodno, ostanuvaat nepromeneti).

- Pri izvr{uvaweto na naredbata ne be{e 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 be{e

prosleden vo mean i postana lokalna promenliva so ime x.

Page 8: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

8

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.

Page 9: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

9

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)

Page 10: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

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

vr{i 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

zzzH

Vektori 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: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

11

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

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 (2n/20 + ) i x2 [n] = sin (2n/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 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 pove}e za ovie dve funkcii.

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

>> plot(n,x1)

Vra}awe 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

Site ovie funkcii koristat stringovi kako argumenti.

Page 12: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

12

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.

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.

Vsu{nost 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 pove}e 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: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

13

Слушање на сигналите

Слушањето на сигналите во 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);

Page 14: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

14

Задачи:

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

а)

322

332

231

A б)

11000

11000

22

22

22

A

B в)

3530252015105

1412108642

7654321

C

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

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

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

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

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

б) 2][201.0

nenx n , n 3, 4, 5, 6, ... 13

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

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

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

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

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

5. Со дадениот блок наредби се генерира простопериодичен сигнал на

фреквенција f. Генерирајте сигнал кој е сума од 4 простопериодични функции на

фреквенции 200Hz, 400Hz, 600Hz и 1000Hz и слушнете го со наредбата sound.

>> Fs = 44100;

>> t = 0:1/Fs:1;

>> y = cos(2*pi*f*t);

Page 15: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

15

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)

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 ispi{uvawe na naredbata dconvdemo na komandnata linija. Kako rezultat na

izvr{uvawe 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 16: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

16

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.

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

Prenosna 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.

Bidej}i

n

n

nznhnhzH0

][]}[{)(

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 17: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

17

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

Koristej}i ja tablicata za z-transformacija za h[n] se dobiva:

)3524.04

cos()8.0(118.12][ nnh n

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. Op{t 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 18: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

18

>> 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 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, koristej}i 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 19: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

19

Задачи:

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 20: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

20

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

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

Дигитално процесирање на сигнали _____________________________________________________________________________________

21

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.

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

Vlijanie na polovite i nulite na frekvenciskata karakteristika

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 pove}e 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 22: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

22

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 23: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

23

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 24: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

24

VE@BA 4

Diskretizacija 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 me{a 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]. Koristej}i 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

tjG

m

tjGa

mm 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 25: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

25

Da go vidime efektot na diskretizacija vrz frekvenciskite karakteristiki na

signalot }e izvr{ime diskretizacija na xa(t) so frekvencija na diskretizacija fs =

5000 prim/sec. Bidej}i 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 26: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

26

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 izvr{i 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.

Rekonstrukcija

Matemati~ki rekonstrukcijata na analogniot signal xa(t) od negovata disktretna verzija x[n] mo`e da se opi{e 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, bidej}i 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 izvr{ime 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 27: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

27

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

2

ttmtnTtmfnxtmx

n

nn

ssa

Od primerocite x1[n] }e izvr{ime 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 gre{ka 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 izvr{i 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 izvr{i rekonstrukcija vo MATLAB e so pomo{ na funkciite stairs i plot, koi{to 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 28: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

28

% 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 , е

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

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

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

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

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

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

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

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

спектрите;

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

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

Page 29: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

29

VE@BA 5

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, … , } originalot {x[n]} se rekonstruira so

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

][1

0

NnWkXN

nxN

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 u{te 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 napi{at 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 30: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

30

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 31: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

31

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. Op{t 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

ispu{ti, 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 izvr{uva mnogu brzo. Ako N e stepen so osnova 2, pri izvr{uvaweto 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 ne{to 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 32: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

32

VE@BA 6

Linearna 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 izvr{i 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 ispi{uvawe na naredbata dconvdemo na komandnata linija. Po

izvr{uvawe 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 u{te 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 33: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

33

Konvolucija na dolga niza

Postojat dva metoda na koi, koristej}i 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. Bidej}i 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];

Bidej}i 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 opi{anata postapka za

procesirawe na dolgi nizi po metodot na preklopeni vlezovi.

Page 34: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

34

_____________________________________________________________________________

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 izvr{i 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 35: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

35

VE@BA 7

Dizajn na FIR 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 .

Bidej}i 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, usvojuvaj}i 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 koj{to 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. Primenuvaj}i

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 pove}e

propusni opsezi. Pove}e 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 36: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

36

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. Bidej}i 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 filtri

Parks-McClellan-oviot algoritam za dizajn na ednakvobranovi filtri vo MATLAB e implementiran so funkcijata firpm, ~ija najop{ta 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~nuvaj}i od 0.0 i zavr{uvaj}i 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 37: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

37

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 38: UpatstvoDPS

Дигитално процесирање на сигнали _____________________________________________________________________________________

38

>> 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, be{e 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