Upload
aurora-borealiss
View
289
Download
5
Embed Size (px)
DESCRIPTION
signali
Citation preview
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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)
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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’);
Дигитално процесирање на сигнали _____________________________________________________________________________________
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);
Дигитално процесирање на сигнали _____________________________________________________________________________________
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);
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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)];
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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;
б) Да се претстави графички индициониот одзив на системот, и од графикот да
се процени дали системот е стабилен.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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’)
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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')
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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 со користење на екстраполатор од нулти ред;
Дигитално процесирање на сигнали _____________________________________________________________________________________
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
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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 .
Дигитално процесирање на сигнали _____________________________________________________________________________________
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]}.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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]}.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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.
Дигитално процесирање на сигнали _____________________________________________________________________________________
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’);
Дигитално процесирање на сигнали _____________________________________________________________________________________
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