Upload
aurora-borealiss
View
14
Download
2
Embed Size (px)
DESCRIPTION
Matlab l
Citation preview
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
1
Upatstvo za laboratoriski ve`bi po predmetot
Osnovi na Digitalno Procesirawe na Signali
Voved vo MATLAB
Celta na ova upatstvo e studentite da se zapoznaat so nekoi osnovni naredbi i funkcii vo MATLAB (MATrix LABoratory), kako bi mo`ele da gi izveduvaat laboratoriskite ve`bi po predmetot Osnovi na Digitalno Procesirawe na Signali.
MatriciMatriciMatriciMatrici
Osnoven element so koj raboti MATLAB e pravoagolna numeri~ka matrica ~ii to elementi mo`at da bidat i kompleksni broevi. 1x1 matricite se interpretiraat kako skalari dodeka matricite so samo edna kolona ili redica se interpretiraat kako vektori.
Matricite vo MATLAB mo`at da se vnesat na nekolku na~ini:
- Direktno vnesuvawe na elementite
- Generirawe so pomo na vgradeni funkcii i izrazi vo MATLAB
- Kreirawe na m-datoteki
- V~ituvawe od nadvoreni datoteki (.mat datoteki)
Na primer, so slednite izrazi:
>> A=[1 2 3; 4 5 6; 7 8 9]
i
>> A=[1 2 3
4 5 6
7 8 9]
se vnesuva 3x3 matrica koja se dodeluva na promenlivata A. Elementite na edna redica se odvoeni so prazno mesto ili so zapirka. Krajot na sekoja redica se ozna~uva so ; (to~ka-zapirka). Po pritiskawe na ENTER na ekranot se pojavuva
A =
1 2 3
4 5 6
7 8 9
Elementot na matricata mo`e da bide definiran na povee na~ini. Na primer
>> B=[1.5*sqrt(2) 2.5^2; 2/3 7]
Poedine~ni elementi na matricata mo`at da se povikaat so pomo na nivnite indeksi. Na primer, A(2,3) go ozna~uva elementot vo vtorata redica, treta kolona na matricata A. Indeksite na elementite na matricite vo MATLAB se pozitivni celi broevi. Negativni indeksi i 0 ne se dozvoleni vo MATLAB.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
2
Nekoi vgradeni funkcii so koi mo`at da se generiraat specijalni matrici se: zeros, ones, eye, diag, rand, magic.
Taka na primer so zeros(m,n) se dobiva mxn matrica ~ii elementi se nuli, a so zeros(n) se dobiva nxn matrica so nuli. So ones(m,n) se dobiva mxn matrica ~ii elementi se edinici.
So pomo na naredbata help (na primer help zeros) proverete to davaat pogore spomenatite funkcii.
Matrici mo`at da se generiraat i od povee blokovi. Na primer, ako A e 3x3 matrica izrazot
>> [A, zeros(3,2); zeros(2,3), ones(2)]
e generira 5x5 matrica. Probajte.
Operatori vo Operatori vo Operatori vo Operatori vo MATLAB
Elementite vo MATLAB osven kako matrici mo`at da se tretiraat i kako poliwa od broevi. Spored toa MATLAB koristi dva vida aritmeti~ki operatori: matri~ni operatori i operatori primeneti na poliwa od broevi. Koga operatorite se primenuvaat na matrici va`at pravilata na linearna algebra. Koga operatorite se primenuvaat na poliwa od broevi tie deluvaat spored principot “element so element”. Ovie operatori se razlikuvaat od matri~nite operatori po decimalnata to~ka pred operatorot. Na primer, izrazot [1,2,3,4].*[1,2,3,4] ili izrazot [1,2,3,4].^2 kako rezultat davaat [1,4,9,16]. Proverete.
Operatori vo MATLAB
+ sobirawe na matrici
- odzemawe na matrici
* mno`ewe na matrici
.* mno`ewe “element so element”
^ stepenuvawe
.^ stepenuvawe “element so element”
\ delewe na matrici od levo
/ delewe na matrici od desno
./ delewe “element so element”
Relaciski operatori vo MATLAB
< pomalo od
> pogolemo od pomalo od ili ednakvo
<= pomalo od ili ednakvo
>= pogolemo od ili ednakvo
= = ednakvo
~ = neednakvo
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
3
Logi~ki operatori vo MATLAB
& i
| ili
~ ne
MATLAB izrazi i promenlivi izrazi i promenlivi izrazi i promenlivi izrazi i promenlivi
MATLAB izrazite naj~esto se javuvaat vo slednata forma:
promenliva = izraz, ili ednostavno
izraz
Izrazite obi~no se formiraat od operatori, funkcii i imiwa na promenlivi. Rezultatot na izrazite se matrici koi se pojavuvaat na ekranot i se dodeluvaat na promenlivata za ponatamono koristewe. Dokolku se isputat imeto na promenlivata i znakot =, avtomatski se kreira promenliva ans na koja i se dodeluva vrednosta na izrazot.
Dokolku na krajot na izrazot ima znak ; (to~ka-zapirka) rezultatot ne se ispiuva na ekran. Ova e od posebno zna~ewe koga ne e potrebno ispiuvawe na me|urezultatite. Isputaweto na znakot ; ne e problem ako se raboti za naredba od oblik
>> A=[1 2 3]
me|utoa e golem problem ako naredbata e na primer,
>> A=[1:10000]
Dokolku se zaboravi znakot ; mo`e da se pritisne ctrl-C so cel da se izbegne ispiuvaweto na ekranot. Komandata ctrl-C ne go prekinuva presmetuvaweto tuku samo go stopira prika`uvaweto na ekran.
MATLAB e case-sensitive (razlikuva mali i golemi bukvi) vo imiwata na naredbite, funkciite i promenlivite. Taka na primer, randint ne e isto so randINT.
So pomo na komandata who mo`at da se vidat site promenlivi koi to se koristeni vo momentnata MATLAB sesija. Del od ovie promenlivi mo`at da se izbriat so komandata clear ime_na_promenliva. Samo clear e gi izbrie site promenlivi.
So pomo na komandata save, site ili del od promenlivite mo`at da se memoriraat vo .mat datoteki. Nivno povikuvawe mo`e da se izvri so komandata load. So pomo na komandata help videte kako funkcioniraat load i save.
Operator : (dve to~ki)Operator : (dve to~ki)Operator : (dve to~ki)Operator : (dve to~ki)
Se koristi za generirawe vektori ili matrici so konstanten ~ekor i za indeksirawe na matrici. Na primer, vektor koj gi sodr`i broevite od 1 do 5 (so edine~en ~ekor) se generira na sledniot na~in:
>> x=1:5
x =
1 2 3 4 5
Dokolku ~ekorot e razli~en od edinica, negovata vrednost se vmetnuva pome|u vrednostite na najmaliot i najgolemiot element na vektorot. Na primer, vektor
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
4
koj gi sodr`i broevite od 1 do 3 so konstanten ~ekor 0.5 se dobiva so slednata naredba
>> y=1:0.5:3
y =
1.0000 1.5000 2.0000 2.5000 3.0000
Operatorot : mo`e da se iskoristi i za izdvojuvawe na vektor redica, ili vektor kolona, ili elementi od dadena matrica. Na primer:
A(1:4,3)
e vektor kolona koj se sostoi od prvite ~etiri elementi na tretata kolona na matricata A, dodeka
A(2,1:3)
e vektor redica koj se sostoi od prvite tri elementi na vtorata redica.
A(1:4,:) e matrica sostavena od prvite ~etiri redici na matricata A.
So izrazot
A(:,[2 4 5]) = B(:,1:3)
kolonite 2, 4 i 5 na matricata A se zameneti so prvite tri koloni na matricata B.
Vo mnogu situacii operatorot : ovozmo`uva izbegnuvawe na ciklusi, to e objasneto na krajot na narednoto poglavje.
CiklusiCiklusiCiklusiCiklusi
Sli~no kako i vo drugite programski jazici (FORTRAN, C, ...) MATLAB naredbite se izvruvaat po onoj redosled po koj to se napiani. Dokolku e potrebno, redosledot na izvruvawe na naredbite mo`e da se promeni so pomo na funkciite za kontrola na tekot na programata:
For: Go povtoruva izvruvaweto na odreden blok naredbi odreden broj pati.
Opt oblik na ciklusot:
for promenliva = izraz
naredbi
end
pri to izraz naj~esto e od oblik skalar1:skalar2. Videte go primerot na krajot od ova poglavje.
If: Uslovno izvruvawe na naredbi. Opt oblik na ciklusot:
if promenliva
naredbi
end
Promenliva e obi~no rezultat od sporedba na dva izraza
izraz relaciski operator izraz
Dokolku rezultatot od sporedbata e “vistinito” promenlivata dobiva vrednost 1 i naredbite se izvruvaat. Od druga strana, koga rezultatot na sporedbata e
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
5
“nevistinito” promenlivata dobiva vrednost 0 i naredbite ne se izvruvaat. So kombinirawe na if so else i elseif mo`no e poveekratno razgranuvawe.
Proverete to raboti slednata programa:
>>for i=1:n
for j=1:n
if i==j
a(i,j)=2
elseif i==1
a(i,j)=1
else
a(i,j)=0
end
end
end
>> a
While: Povtoruva izvruvawe na blok naredbi neodreden broj pati se dodeka dadeniot uslov e zadovolen.
Opt oblik na naredbata
While promenliva
naredbi
end
Naredbite se izvruvaat se dodeka promenlivata e “vistinito”. Na primer, za daden broj a slednata programa go presmetuva i ispiuva najmaliot nenegativen cel broj n taka to 2^n >= a.
>> n=0;
>> while 2^n <a
n=n+1;
end
>> n
Izbegnuvajte ciklusi sekade kade to toa e mo`no. Istite vo golema mera go usporuvaat izvruvaweto na programata. Na primer, generirawe na funkcijata sinus mo`e da se izvri na sledniot na~in
>> for i=0:999 x(i+1)=sin(2*pi*i/1000);
>> end;
Me|utoa ova e mnogu pobavno otkolku
>> x=sin(2*pi*(0:999)/1000);
Vo opt slu~aj, podobro e celi vektori da se procesiraat vo isto vreme otkolku da se koristat ciklusi, bideji najgolem broj MATLAB funkcii operiraat so vektori isto kako i so skalari.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
6
PolinomiPolinomiPolinomiPolinomi
MATLAB koristi ednostavna reprezentacija na polinomite koja e mnogu korisna za digitalno procesirawe na signali (DSP). Vo DSP ~esto pati se javuva potreba za pretstavuvawe na drobnoracionalna funkcija, odnos na dva polinoma B(z) i A(z):
q
q
pp
zaza
zbzbb
zA
zB−−
−−
+++
+++=
L
L
11
110
1)(
)(
Vo MATLAB polinomite B(z) i A(z) se pretstaveni so vektori b i a koi gi sodr`at nivnite koeficienti. Taka a = [1 –1.5 0.99] go pretstavuva polinomot
A(z) = 1 – 1.5 z –1
+ 0.99 z – 2
.
Del od funkciite za rabota so polinomi koi to se koristat vo DSP se dadeni vo slednata tabela:
conv mno`ewe na polinomi
deconv delewe na polinomi
poly odreduvawe na koeficienti na polinom
residuez razvoj vo prosti dropki
roots odreduvawe na nuli na polinom
So pomo na naredbata help proverete kako funkcioniraat ovie funkcii. Pogolemo vnimanie na ovie funkcii e posveteno vo ve`ba 1.
M M M M ---- datoteki datoteki datoteki datoteki
Pokraj naredbi od komandna linija, MATLAB mo`e da izvruva niza od izrazi memorirani vo dadeni datoteki. Vakvi datoteki se nare~eni “m-datoteki” (datoteki so ekstenzija .m). Toa se tekstualni datoteki kaj koi se definirani vleznite argumenti, niza na naredbi (procesirawe) i izleznite agrumenti. Sodr`inata na datotekite mo`e da se vidi so pomo na naredbata type
ime_na_datoteka, vnesena od komandnata linija. Prou~uvaweto na m-datotekite koi to implementiraat vgradeni MATLAB funkcii e dobar na~in da se dobijat nekoi idei za efikasno programirawe vo MATLAB.
Postojat dva tipa na m-datoteki: skripti i funkcii.
Skripti: Se sostojat od niza na MATLAB izrazi. Ispiuvaweto na imeto na datotekata na komandnata linija e predizvika izvruvawe na site izrazi vo datotekata. Promenlivite vo skriptata se globalni i mo`at da gi promenat vrednostite na promenlivite so isto ime vo otvorenata MATLAB sesija.
Funkciski datoteki: Za razlika od skriptite, funkciskite datoteki vo prvata linija sodr`at izraz od oblik
function [y1, y2, ... ] = ime_na_funkcija(x1,x2, . . . )
po to sledi niza od MATLAB komandi i izrazi. y1, y2, ... se izlezni argumenti na funkcijata koga istata e se povika so nejzinoto ime, ime_na_funkcija, a x1,x2, ...
se vlezni argumenti. Po definicija, promenlivite vo funkciskite datoteki se lokalni.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
7
Ovie funkciski datoteki mu ovozmo`uvaat na korisnikot da kreira novi funkcii koi imaat ist status kako i drugite funkcii vo MATLAB. Primer za ednostavna funkcija:
function y = mean(x)
% MEAN Avarage or mean value
% For vectors, MEAN(X) returns the mean value
% For matrices, MEAN(X) is a row vector containing
% the mean value of each column
[m,n]=size(x);
if m==1
m=n;
end
y=sum(x)/m;
Ovaa funkcija e smestena vo datotekata mean.m. Nejzinata upotreba e ista kako i upotrebata na sekoja druga MATLAB funkcija. Na primer, neka generirame vektor koj gi sodr`i celite broevi od 1 do 99
>> z=1:99;
Srednata vrednost se presmetuva so naredbata
>> mean(z)
to kako rezultat dava
ans =
50
Nekolku zabeleki vo odnos na dadenata funkcija:
- Prvata linija gi deklarira imeto na funkcijata, vleznite argumenti i izleznite argumenti. Bez ovaa linija datotekata bi pretstavuvala skripta.
- Simbolot % ozna~uva deka se raboti za komentar i ostatokot od linijata se ignorira pri izvruvawe na funkcijata.
- Liniite koi po~nuvaat so % ja dokumentiraat m-datotekata i se prika`uvaat na ekranot pri izvruvawe na naredbata help mean.
- Prvata linija so % e vklu~ena vo datotekata Contents.m vo soodvetniot direktorium. Komandata lookfor se referencira na ovaa linija pri izvruvaweto.
- Promenlivite m, n i y se lokalni za funkcijata mean i ne se pojavuvaat vo MATLAB sesijata po izvruvaweto na funkcijata (ili, ako postoele prethodno, ostanuvaat nepromeneti).
- Pri izvruvaweto na naredbata ne bee neophodno da se smestat celite broevi od 1 do 99 vo promenliva so ime x. Fakti~ki, mean go koristevme so promenlivata z. Vektorot z koj gi sodr`i celite broevi od 1 do 99 bee prosleden vo mean i postana lokalna promenliva so ime x.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
8
2222----D grafici grafici grafici grafici
MATLAB raspolaga so mo`nost za efikasno grafi~ko prika`uvawe na podatocite. Nekoi od funkciite za grafi~ko prika`uvawe na podatoci se pogodni za DSP.
Funkcijata plot prika`uva grafik so linearna podelba na oskite; dokolku x i y se vektori so ednakva dol`ina, naredbata plot(x,y) crta x-y grafik na elementite na y vo funkcija od x.
Funkcijata stem ovozmo`uva prika`uvawe na diskretni nizi.
Funkcijata subplot e pogodna za sporedba na povee grafici. So istata funkcija ekranot mo`e da se podeli taka to povee grafici se gledaat istovremeno.
So pomo na naredbata help doznajte povee za plot,stem i subplot.
Pogolemo vnimanie na ovie funkcii e posveteno vo ve`ba 1.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
9
VE@BA 1VE@BA 1VE@BA 1VE@BA 1
Vektori kako polinomiVektori kako polinomiVektori kako polinomiVektori kako polinomi
Vo MATLAB polinom se pretstavuva kako vektor ~ii to elementi se koeficientite na polinomot (so opa|a~ki stepen na promenlivata). Taka na primer, polinomot s 3
-6s 2-72s-27 mo`e da se pretstavi so vektorot
>> p=[1 -6 -72 -27]
p =
1 –6 –72 -27
Nulite na polinomot mo`at da se odredat so pomo na funkcijata roots.
So naredbata
>> r=roots(p)
r =
12.1229
-5.7345
-0.3884
se dobiva vektor koj gi sodr`i nulite na polinomot.
Obratno, koeficientite na polinomot, ako se poznati negovite nuli, mo`at da se odredat so funkcijata poly. Na primer,
>> p2=poly(r)
p2 =
1 –6 –72 –27
Ako se dadeni polinomite a(s) = s 2
+2s+3 i b(s) = 4s 2
+5s+6, nivniot proizvod se dobiva so funkcijata conv
>> a=[1,2,3]; b=[4,5,6];
>> c=conv(a,b)
c =
4 13 28 27 18
Delewe na polinomi se vri so funkcijata deconv
>> [g,r]=deconv(c,a)
g =
4 5 6
r =
0 0 0 0
So funkcijata residue (ili funkcijata residuez) se vri razlo`uvawe na drobnoracionalna funkcija na prosti drobnoracionalni funkcii (od prv red).
Oblici na funkcijata
[R,p,C]=residue(b,a)
[b,a]=residue(R,p,C)
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
10
So opcijata [R,p,C]=residue(b,a) se dobivaat koeficientite na razvojot, polovite i slobodnite ~lenovi (R, p, C) pri razlo`uvaweto na drobno-racionalnata funkcija na prosti faktori.
So opcijata [b,a]=residue(R,p,C) so tri vlezni i dva izlezni argumenti se vri inverzna operacija na prethodnata.
Primenata na ovaa funkcija e ilustrirana so sledniot primer. Funkcijata
21
1
43)(
−−
−
+−=
zz
zzH
mo`e da se pretstavi kako suma od prosti drobnoracionalni funkcii so pomo na koeficientite dobieni kako rezultat na slednite naredbi:
>> b=[0,1]; a=[3,-4,1];
>> [R,p,C]=residuez(b,a) % Koga polinomite se dadeni
% so negativni stepeni se
% koristi funkcijata residuez
R =
0.5000
-0.5000
p =
1.0000
0.3333
C =
[]
odnosno
0)3/1(1
2/1
1
2/1)(
11+
−−
−=
−−zz
zH
Vektori kako signaliVektori kako signaliVektori kako signaliVektori kako signali
Vo MATLAB diskretni signali (nizi) mo`at da se pretstavat so vektor ~ii to elementi se soodvetnite vrednosti na signalot (nizata). Pri toa mora da se vnimava na interpretacijata na indeksite. Vo MATLAB, indeksite na site vektori po~nuvaat so 1.
Generirawe na nekolku elementarni nizi:
1. Edini~en impuls δ [n] mo`e da se generira so pomo na funkcijata zeros(1,N). Na primer so
>> delta=[1 zeros(1,30)]
se implementira δ [n] na kone~en interval n = 0, 1, ... , 30.
2. Edini~en skok u[n]. Funkcijata ones(1,N) mo`e da se iskoristi za generirawe na u[n] na kone~en interval. Na primer
>> u=[ones(1,30)]
generira edini~en skok so dol`ina 30.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
11
3. Ekponencijalen signal f [n] = an, 0≥n .
Na primer, f1 [n] = 0.9n za n = 0, 1, ... 50 se generira na sledniot na~in:
>> n=[0:50];
>> f1=(0.9).^n
4. Prostoperiodien signal f [n] = A cos (θ n+α) , Zn ∈ , mo`e da se generira so pomo na cos (sin) funkcijata od MATLAB. Taka na primer, signalite
x1 [n] = 3 cos (2π n/20 +π /3) i x2 [n] = sin (2π n/20) za n = 0, 1, ... 20, se dobivaat so
>> n=[0:20];
>> x1=3*cos(2*pi*n/20+pi/3)
>> x2=sin(2*pi*n/20)
Grafi~ko pretstavuvawe na signaliGrafi~ko pretstavuvawe na signaliGrafi~ko pretstavuvawe na signaliGrafi~ko pretstavuvawe na signali
Vo ovoj del od ve`bata pogore definiranite signali treba grafi~ki da se prika`at. So komandata who mo`e da se potsetite na site signali (vektori) koi dosega bea definirani, dodeka so komandata whos mo`at da se vidat i nivnite dimenzii.
Za prika`uvawe na signalite e gi koristime funkciite plot i stem. So pomo na komandata help doznajte povee za ovie dve funkcii.
Najnapred prika`ete go signalot x1 vo funkcija od indeksot n, so pomo na slednata komanda
>> plot(n,x1)
Vraawe na komandnata linija (vo MATLAB Command Window) mo`e da se izvede so pritiskawe na bilo koe kop~e od tastaturata. Grafikot mo`e da se povika povtorno so pomo na funkcijata shg ili so pritiskawe na gluv~eto na samiot grafik.
Ponekoga e potrebno vo evidencija da se stavi periodot na diskretizacija T, t.e. od indeksot n da se pomine na vremenskiot interval nT. Taka na primer, ako se
saka signalot x1[nT], so T = 10 msec, da se prika`e vo intervalot 2.00 ≤≤ t , mo`e da se generira vremenska niza so t = 0; 0.01; ... ; 0.2 so komandata
>> t=[0:0.01:0.2];
i potoa da se nacrta x1 vo funkcija od t so
>> plot(t,x1)
Mre`a na crte`ot mo`e da se dodade so komandata grid. Mre`ata mo`e da bide korisna pri procenka na oddelni parametri na signalot.
Na grafikot mo`at da se dodadat naslov, oznaka na x i y oskite, i tekst na koe bilo mesto na grafikot so pomo na slednite funkcii:
title naslov na grafikot
xlabel oznaka na x oskata
ylabel oznaka na y oskata
gtext interaktivno-vmetnuvawe na tekst
text vmetnuvawe na tekst so to~no specificirani koordinati
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
12
Site ovie funkcii koristat stringovi kako argumenti.
Taka so komandata
>> title(‘Prostoperiodicna funkcija’)
se vmetnuva naslov na grafikot, a so komandite
>> xlabel(‘n’)
>> ylabel(‘x1(n)’)
se dodeluvaat oznaki na x i y oskite.
Prika`uvawe na signalot x2 na istiot grafik mo`e da se izvede na dva na~ina. Prviot na~in e so pomo na komandata
>> plot(n,x1,n,x2)
Vtoriot na~in e so pomo na naredbata hold. So komandata hold on se “zamrznuva” momentniot crte` i novi grafici mo`at da se iscrtaat na nego. Za vraawe vo normalen mod na crtawe se koristi komandata hold off.
• Najnapred so komandata figure otvorete nov grafi~ki prozorec, a potoa so pomo na naredbata hold nacrtajte gi x1 i x2 na ist grafik.
I pokraj toa to x1 i x2 se diskretni signali nivnite grafici prika`ani so funkcijata plot ostavaat vpe~atok deka se raboti za kontinuirani signali. Vsunost so funkcijata plot se prika`uva “anvelopata” na diskretniot signal. Probajte to e se dobie so slednata niza naredbi:
>> t=[0:7];
>> x=sin(2*pi*t/8);
>> plot(t,x)
Zna~i, od dobieniot grafik ne e jasno deka se raboti za sinusna funkcija. Za prika`uvawe diskretni nizi se koristi funkcijata stem. Funkcijata stem ima isti argumenti kako i funkcijata plot.
• So pomo na funkcijata stem da se nacrtaat signalite u i f1.
I pokraj faktot to signalite vo MATLAB sekoga se diskretni signali, vo oddelni slu~ai podobro e istite da se prika`at kako kontinuirani signali. Toa ne e problem ako ne se zaboravi deka se raboti za diskretni signali. Proverete to e se dobie so slednata niza naredbi:
>> n=[0:0.01:100];
>> x=sin(2*pi*n/100);
>> stem(n,x)
So pomo na naredbata subplot ekranot se deli taka da povee grafici se gledaat istovremeno. So help subplot videte kako funkcionira ovaa naredba.
• Proverete to e se dobie so slednata niza od naredbi:
>> subplot(2,2,1); stem(0:length(x1)-1,x1);
>> title(‘Prostoperodicen signal’);
>> subplot(2,2,2); stem(0:length(f1)-1,f1);
>> title(‘Eksponencijalen signal’);
>> subplot(2,2,3); stem(0:length(delta)-1,delta);
>> title(‘Edinicen impuls’);
>> subplot(2,2,4); stem(0:length(u)-1,u);
>> title(‘Edinicen skok’);
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
13
Задачи:
1. Да се генерираат следните матрици:
а)
=
322
332
231
A б)
=
11000
11000
22
22
22
A
B в)
=
3530252015105
1412108642
7654321
C
2. Да се пресмета производот на сигналите
=nnx ],[1 0, 1, 2, ..., 8 = [3, 5, 8, 1, 2, 3, 7, 8, 1] и
=nnx ],[2 0, 1, 2, ..., 8 = [2, 1, 0, 4, 0, 5, 4, 3, 3]
3. Да се генерираат и графички да се претстават сигналите:
а) ,32][ 2 +⋅= nnx ,2=n 5, 8, 11, 14, ..., 35
б) 2][201.0 −= +
⋅− nenx n , =n 3, 4, 5, 6, ... 13
в) ),34cos()( −⋅= − tetx t 4:001.0:0=t
г) )2sin()23cos()( tttx ⋅+= , 15:01.0:0=t
4. Да се претстават на ист график сигналите:
а) )cos()(1 ttx = и )4cos()(2 ttx = , 10:01.0:0=t
б) tetx −=)(1 и )2sin()(2 ttx = , 10:01.0:0=t
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
14
VE@BA 2VE@BA 2VE@BA 2VE@BA 2
Linearna konvolucijaLinearna konvolucijaLinearna konvolucijaLinearna konvolucija
Daden e impulsniot odziv na eden LTI sistem h [n] = 0.5n , n = 0, 1, ... 9. Na negoviot
vlez e primenet signalot x [n] = u [n]-u [n-10]. Da se odredi odzivot na sistemot y[n].
Linearnata konvolucija na nizite x [n] i h [n] e go dade izlezniot signal y [n]. Implementacija na linearnata konvolucija vo MATLAB mo`e da se izvri so funkcijata conv.
>> n=[0:9]; h=(0.5).^n;
>> x=[ones(1,10)];
>> y=conv(x,h)
• So pomo na funkcijata size proverete kolkava e dol`inata na izlezniot signal y. Potoa, so pomo na funkciite subplot i stem prika`ete gi signalite x,h i y na ist grafik.
Grafi~ka interpretacija na linearnata konvolucija mo`e da se dobie so ispiuvawe na naredbata dconvdemo na komandnata linija. Kako rezultat na izvruvawe na naredbata na ekranot e se pojavi sledniot prozorec.
So pritiskawe na kop~eto Get x[n], se otvora nov prozorec so prika`an pravoagolen impuls. Po `elba, drug signal mo`e da se izbere od listata vo gorniot del od prozorecot, a parametrite na signalot mo`at da se promenat so
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
15
kontrolnite kop~iwa od desnata strana. Potoa se pritiska na OK i izbraniot signal e prika`an vo Input prozorecot vo gorniot desen agol.
Na sli~en na~in se izbira i impulsniot odziv h[n] so pritiskawe na kop~eto Get
h[n], po to h[n] se pojavuva vo prozorecot Impulse Response....
Vo gorniot lev prozorec vlezniot signal x[n] e prika`an so plava boja i presvrtenata verzija na impulsniot odziv e prika`ana so crvena boja.
Vo sredniot prozorec e prika`an rezultatot od mno`eweto “primerok po primerok” na dvata signala prika`ani vo gorniot prozorec. Ovoj prozorec mo`e da bide i prazen.
Vo dolniot prozorec e prika`an izlezniot signal, koj pretstavuva linearna konvolucija na x[n] i h[n].
Linearna konvolucija vo realno vreme: Postavete go gluv~eto nad oznakata ↑ n , i e se pojavi eden simbol vo oblik na raka. So dvi`ewe na rakata levo ili desno, so pomo na gluv~eto, mo`e da se menuva vrednosta na indeksot n. Pri toa presvrteniot impulsen odziv vo gorniot prozorec se pomestuva zaedno so n, a sodr`inata na sredniot prozorec se menuva vo zavisnost od relativnoto poklopuvawe na vlezniot signal i presvrteniot impulsen odziv. Za odredeno n vo dolniot prozorec e istaknat eden primerok od izlezniot signal. Ovoj primerok se dobiva so sobirawe na site primeroci za toa n od sredniot prozorec.
• Sledeji ja gore navedenata postapka grafi~ki prika`ete ja linearnata konvolucija na dva pravoagolni impulsa so ednakva i so razli~ni dol`ini.
Prenosna funkcijaPrenosna funkcijaPrenosna funkcijaPrenosna funkcija
Dadena e prenosnata funkcija na eden kauzalen diskreten sistem
21
1
64.028.01
24.01)(
−−
−
+−
+=
zz
zzH
Treba da se odredi negoviot impulsen odziv.
Bideji
∑∞=
=
−=Ζ=n
n
nznhnhzH
0
][][)(
problemot se sveduva na odreduvawe inverzna z-transformacija na H(z). Za taa cel mo`e da se iskoristi funkcijata residuez. So residuez, H(z) mo`e da se razlo`i na prosti drobnoracionalni funkcii po to ostanuva da se primeni tablicata na z-transformacii za da se dobie h[n].
>> b=[1,0.4*sqrt(2)]; a=[1, -0.8*sqrt(2),0.64];
>> [R,p,C]=residuez(b,a)
R =
0.5000-1.0000i
0.5000+1.0000i
p =
0.5657+0.5657i
0.5657-0.5657i
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
16
C =
[]
Modulot i argumentot na elementite na vektorite R i p mo`at da se odredat so pomo na funkciite abs i angle.
>> MR=abs(R) % modulot na R
MR =
1.1180
1.1180
>> AR=angle(R)/pi % agolot na R vo pi edinici
AR =
-0.3524
0.3524
>> Mp=abs(p) % modulot na polot
Mp =
0.8000
0.8000
>> Ap=angle(p)/pi % agolot na polot vo pi edinici
Ap =
0.2500
-0.2500
[to zna~i, H(z) mo`e da se razlo`i na sledniot na~in
14
3524.0
14
3524.0
8.01
118.1
8.01
118.1)(
−
−
−−
−
+
−
=
ze
e
ze
ezH
jjπ
π
π
π
Koristeji ja tablicata za z-transformacija za h[n] se dobiva:
)3524.04
cos()8.0(118.12][ ππ
−⋅⋅= nnhn
Funkcijata filter mo`e da se iskoristi za verifikacija na dobieniot rezultat. So istata, ako se dadeni vlezniot signal i prenosnata funkcija na diskretniot sistem, mo`e da se odredi izlezniot signal. Opt oblik na funkcijata
y=filter(b,a,x)
kade to b = [b0, b1,...bp] i a = [a0, a1,...aq] se vektori ~ii elementi se koeficientite na polinomite vo broitelot i imenitelot na H(z), a x e vlezna niza. Dol`inata na izleznata niza y e ista so dol`inata na vleznata niza x.
Ako x[n]=δ [n], izleznata niza go pretstavuva implusniot odziv na sistemot. Prvite osum primeroci na impulsniot odziv, dobieni numeri~ki (so pomo na funkcijata filter) se:
>> delta=[1 zeros(1,7)];
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
17
>> y=filter(b,a,delta)
Columns 1 through 4
1.0000 1.6971 1.2800 0.3620
Columns 5 through 8
-0.4096 -0.6951 -0.5242 -0.1483
• Dobienite vrednosti sporedete gi so prvite osum primeroci na impulsniot odziv, dobieni analiti~ki:
>> n=[0:7];
>> h =(2*1.118*(0.8).^n).*(cos(pi*n/4-0.3524*pi))
Diferencna ravenkaDiferencna ravenkaDiferencna ravenkaDiferencna ravenka
Pokraj pretstavite so impulsniot odziv h[n] ili so prenosnata funkcija H(z), LTI
diskreten sistem mo`e da bide pretstaven i so negovata diferencna ravenka.
Da se odredat prvite 100 primeroci na impulsniot odziv na diskretniot sistem pretstaven so slednata diferencna ravenka.
][]2[9.0]1[][ nxnynyny =−+−−
So z-transformacija na gornata ravenka, koristeji ja osobinata na translacija, se dobiva
21 9.01
1
)(
)()(
−− +−==
zzzX
zYzH
Prvite 100 primeroci na impulsniot odziv i grafi~ki prikaz na istiot se dobivaaat so slednata niza naredbi:
>> b=[1]; a=[1 –1 0.9]; n=[0:99];
>> delta=[1 zeros(1,99)];
>> h=filter(b,a,delta);
>> subplot (2,1,1); stem(n,h)
>> title(‘Impulsen odziv’); xlabel(‘n’); ylabel(‘h(n)’)
Indicioniot odziv na sistemot mo`e da se odredi so pomo na funkcijata za kumulativna suma cumsum.
>> ai=cumsum(h);
>> subplot(2,1,2); stem(n,ai)
>> title(‘Indicionen odziv’); xlabel(‘n’); ylabel(‘a(n)’)
• Od graficite procenete dali dadeniot sistem e stabilen.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
18
Задачи:
1. Да се пресмета линеарната конволуција на сигналите:
а)
n
nnx
==
6
550,..2,1],[ и 40,..2,1,1][ == nnh
б) ]19,16,13,10,9,7,5,3,1[][ =na и
]5,5,5,5,5,5,2,2,2,2,2[][ =nb
2. Да се разложат следните функции во прости дробно-рационални изрази од z :
а) 15.2
34)(
2
2
+−
+−=
zz
zzzH
б) 23
2)(
2
2
++
−+=
zz
zzzH
3. Да се пресметаат и графички да се претстават првите 50 примероци од
импулсниот и индициониот одзив на системот:
6
1
6
5
34)(
2
2
++
+−=
zz
zzzH
4. Даден е дискретен систем со преносна функција:
23
2)(
2
2
+−
−−=
zz
zzzH
а) Да се одреди и графички да се претстави излезниот сигнал ако на влез се
донесе сигналот
>∪<
=
=
=
401,0
40,...22,21,2
20,..2,1,1
][
nn
n
n
nx
со користење на наредбите filter и conv;
б) Да се претстави графички индициониот одзив на системот, и од графикот да
се процени дали системот е стабилен.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
19
VE@BA 3VE@BA 3VE@BA 3VE@BA 3
FrFrFrFreeeekvenciska karakteristikakvenciska karakteristikakvenciska karakteristikakvenciska karakteristika
Mo`e da se odredi so pomo na funkcijata freqz. Opt oblik na funkcijata e
[H,w]=freqz(b,a,N)
kade to b i a se vektori ~ii elementi se koeficientite na polinomite vo
broitelot i imenitelot na H(z), respektivno, a N go ozna~uva brojot na to~ki vo koi se presmetuva frekvenciskata karakteristika.
H e vektor so dol`ina N to gi sodr`i vrednostite na frekvenciskata karakteristika za kru`ni frekvencii koi se dadeni vo vektorot w.
Frekvenciskata karakteristika se presmetuva vo N to~ki ednakvo raspredeleni
vo z-ramninata okolu gornata polovina na edini~niot krug, odnosno na ω-oskata
vo intervalot od ω = 0 do ω = π.
Drug oblik na funkcijata e sledniot:
H=freqz(b,a,w)
so to se dobiva frekvenciskata karakteristika za frekvencii specificirani
vo w (pome|u 0 i π).
So naredbite
[H,w]=freqz(b,a,N,’whole’)
H=freqz(b,a,w,’whole’)
se dobiva frekvenciska karakteristika za frekvencii od −π do π, dadeni vo vektorot w.
Diskreten sistem e daden so negovata prenosna funkcija
)8.01)(8.01()(
11
12
−−
−−
−+
+=
zz
zzzH
Amplitudnata i faznata karakteristika na sistemot mo`at da se dobijat na sledniot na~in:
>> b=[0,1,1]; a=poly([0.8,-0.8]);
>> w=[0:1:500]*pi/500; % (0-pi) oskata se deli na 501
% tocka vo koi se presmetuva H
>> H=freqz(b,a,w);
>> A=abs(H); % Amplitudna k-ka
>> phi=angle(H); % Fazna k-ka
>> subplot(2,1,1); plot(w/pi, A); grid
>> xlabel(‘Frekvencija vo pi edinici’); ylabel(‘Amplituda’)
>> title(‘Amplitudna karakteristika’)
>> subplot(2,1,2); plot(w/pi, phi/pi); grid
>> xlabel(‘Frekvencija vo pi edinici’);
>> ylabel(‘Faza vo pi edinici’)
>> title(‘Fazna karakteristika vo pi edinici’)
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
20
PoloPoloPoloPolovi i nuli vi i nuli vi i nuli vi i nuli
Za odreduvawe na nulite i polovite na H(z) mo`e da se iskoristi MATLAB funkcijata roots.
>> z=roots(b)
>> p=roots(a)
So pomo na funkcijata zplane, mo`e da se prika`e pol/nula dijagramot.
>> zplane(z,p)
Simbolot ‘o’ gi pretstavuva nulite, a simbolot ‘x’ gi pretstavuva polovite. Na crte`ot kako referenca e prika`an i edini~niot krug.
• Od pol/nula dijagramot procenite dali diskretniot sistem pretstaven so gornata prenosna funkcija e stabilen.
Vlijanie na polovite i nulite na frekvenciskata karakterVlijanie na polovite i nulite na frekvenciskata karakterVlijanie na polovite i nulite na frekvenciskata karakterVlijanie na polovite i nulite na frekvenciskata karakteristikaistikaistikaistika
Vlijanieto na polovite i nulite na frekvenciskata karakteristika mo`e da se ispita so pomo na Pole-Zero Editor-ot. Istiot se startuva so naredbata pezdemo. Pole-Zero Demo: Od levata strana se nao|a Z-ramninata vo koja se vnesuvaat polovite i nulite. So objektite vo Z-ramninata mo`e da se manipulira na ednostaven na~in: nulite i polovite mo`at da se selektiraat i da se premestat od edna na druga lokacija. Vo gorniot del ima povee komandni kop~iwa so koi mo`at da se vnesuvaat polovi i nuli vo Z-ramninata. Se kliknuva na PP ili ZZ kop~eto, a potoa so pomo na gluv~eto se selektira lokacijata vo Z-ramninata za noviot pol (nula). Osnovna help informacija za sekoja operacija se pojavuva vo desniot dolen agol na prozorecot.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
21
Vo ostanatite prozorci se prika`ani impulsniot odziv, amplitudnata i faznata karakteristika na diskretniot sistem pretstaven so izbranite polovi i nuli.
Taka na primer, so sledniot raspored na polovite i nulite
se dobiva slednata amplitudna karakteristika
• So pomo na ~etiri nuli i ~etiri polovi obidete se da ja dobiete slednata amplitudna karakteristika.
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Real part
Imagin
ary
part
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Frekvencija vo pi edinici
Am
plit
uda
Amplitudna karakteristika
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Frekvencija vo pi edinici
Am
plit
uda
Amplitudna karakteristika
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
22
• So pomo na tri nuli i dva pola obidete se da ja dobiete slednata amplitudna karakteristika.
Задачи:
1. Да се пресмета фреквенциската карактеристика на системот:
2.0
12)(
2
2
+
++=
z
zzzH
за фреквенции од опсегот ],[ ππ− со чекор 100
π.
Да се прикажат графички амплитудната и фазната карактеристика на системот.
2. Да се прикаже пол-нула дијаграмот и од него да се процени стабилноста на
следните дискретни системи:
a) 3.055.1
32)(
2
2
+−
+−=
zz
zzzH б)
77.266.2
2)(
2
2
+−
−+=
zz
zzzH в)
8.05.1
35.0)(
2
2
++
−+=
zz
zzzH
3. За LTI системот зададен со следната диференцна равенка:
]2[4
1]1[
2
2]2[]1[2][][ −−−−−+−−= nynynxnxnxny
а) Да се одреди дали е стабилен системот;
б) Да се пресмета и графички (со stem) да се прикаже амплитудната
карактеристика на системот за следните фреквенции:
30, , , , ,
8 4 8 2
π π π πω π
=
.
в) Да се одреди и графички да се прикаже одзивот, ако на влез на системот се
донесе сигналот:
)25.0cos(33
10][ nnx π+= , n=0,1,..100
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Frekvencija vo pi edinici
Am
plit
uda
Amplitudna karakteristika
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
23
VE@BA 4 VE@BA 4 VE@BA 4 VE@BA 4
Diskretizacija na analogni siganaliDiskretizacija na analogni siganaliDiskretizacija na analogni siganaliDiskretizacija na analogni siganali
Za prou~uvawe na procesot na diskretizacija, rekonstrukcija i propratnite
efekti e go koristime signalot ||1000)( ta etx
−= . Negovata Furieova
transformacija e
2
10001
002.0)()(
Ω+
==Ω ∫∞
∞−
Ω−dtetxjX
tjaa
Striktno gledano so MATLAB ne mo`at da se analiziraat analogni signali. Me|utoa, dokolku se zemat primeroci od analogniot signal vo mnogu mali
vremenski intervali ∆t (∆t ne treba se mea so periodot na diskretizacija Ts), so nizata )(][ tmxmx aG ∆= mo`e da se simulira analogniot signal.
Za numeri~ko presmetuvawe na Xa (jΩ) najprvo mora da se aproksimira xa(t) so
kone~na niza xG [m]. Koristeji ja aproksimacijata 05 ≈−e , mo`e da se zabele`i
deka xa(t) mo`e da se aproksmira so signal so kone~no traewe so interval 005.0005.0 ≤≤− t , (ili vo intervalot [-5,5] msec.). Sli~no,
0)( ≈ΩjX a za )2000(2π≥Ω . Spored toa so izbor na
55 1025)2000(2
1105 −− ×=<<×=∆t
mo`e da se dobie xG [m] i da se presmeta negoviot spektar. Sega relacijata za Furieovata transformacija mo`e da se aproksimira na sledniot na~in:
∑∑ ∆Ω−∆Ω− ∆=∆≈Ωm
tj
G
m
tj
Gamm emxttemxjX ][][)(
i mo`e da se presmeta so slednata niza na naredbi:
% Analogen Signal
>> Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t));
>> Wmax = 2*pi*2000; K = 500; k = 0:1:K; W = k* Wmax/K;
>> Xa = xa * exp(-j*t'*W) * Dt; Xa=real(Xa);
>> W = [-fliplr(W), W(2:501)];
>> Xa = [fliplr(Xa), Xa(2:501)];
>> subplot(2,1,1)
>> plot(t*1000,xa)
>> xlabel('t vo msec.'); ylabel('xa(t)')
>> title('Analogen signal')
>> subplot(2,1,2)
>> plot(W/(2*pi*1000), Xa*1000);
>> xlabel('Frekvencija vo KHz'); ylabel('Xa(jW)*1000')
>> title('Furieova transformacija')
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
24
Da go vidime efektot na diskretizacija vrz frekvenciskite karakteristiki na signalot e izvrime diskretizacija na xa(t) so frekvencija na diskretizacija fs =
5000 prim/sec. Bideji najvisokata fekvencija vo spektarot na xa(t) e 2000 Hz,
Nyquist-ovata frekvencija e 4000 sam/sec, to e pomalku od dadenata frekvencija na diskretizacija. Vo ovoj slu~aj preklopuvawe nema da postoi.
% Analogen signal
>> Dt = 0.00005; t = -0.005:Dt:0.005; xa = exp(-1000*abs(t));
% Diskretiziran signal
>> Ts = 0.0002; n = -25:1:25; x1 = exp(-1000*abs(n*Ts));
% Spektar na diskretniot signal
>> K = 500; k = 0:1:K; w = pi*k/K;
>> X1 = freqz(x1,1,w); X1 = abs(X1);
>> w = [-fliplr(w) w(2:K+1)];
>> X1 = [fliplr(X1) X1(2:K+1)];
% prikaz
>> subplot(2,1,1); plot(t*1000,xa);
>> xlabel('t in msec.'); ylabel('x1(n)')
>> title('Diskreten signal (Ts = 0.2 msec)'); hold on
>> stem(n*Ts*1000,x1); hold off
>> subplot(2,1,2); plot(w/pi,X1);
>> xlabel('Frekvencija vo pi edinici'); ylabel('X1(w)')
>> title('Spektar na diskretniot signal')
-5 -4 -3 -2 -1 0 1 2 3 4 50
0.2
0.4
0.6
0.8
1
t vo msec.
xa(t
)
Analogen signal
-2 -1.5 -1 -0.5 0 0.5 1 1.5 20
0.5
1
1.5
2
Frekvencija vo KHz
Xa(jW
)*1000
Furieova transformacija
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
25
So cel da se prika`e postapkata na diskretizacija na slikata se prika`ani diskretniot signal x1[n] i analogniot sihnal xa(t). Spekarot na diskretniot
signal X1(ejω
) e skalirana verzija (skaliran so fs = 5000) na spektarot na
analogniot signal X (jΩ). O~igledno e deka nema preklopuvawe.
• Da se izvri diskretizacija na analogniot signal xa(t) so frekvencija na diskretizacija fs = 1000 prim/sec. Da se odredi i nacrta spektarot na diskretiziraniot signal x2[n]. Da se diskutira dobieniot rezultat.
So startuvawe na demoto con2dis mo`e da se dobie jasna slika za diskretizacijata i preklopuvaweto to pritoa mo`e da se javi.
RekonstrukcijaRekonstrukcijaRekonstrukcijaRekonstrukcija
Matemati~ki rekonstrukcijata na analogniot signal xa(t) od negovata disktretna verzija x[n] mo`e da se opie so slednata relacija za ekstrapolacija:
∑∞
−∞=
−=n
ssa nTtfnxtx )]([sinc ][)(
Kade to xxx ππ /)(sin)(sinc = e ekstrapolaciska funkcija. Vakvata idealna
ekstrapolacija ne e prakti~no ostvarliva, bideji celiot sistem e nekauzalen, a so toa i fizi~ki neostvarliv. Vo praksa se koristat ekstrapolatori od kone~en red. Zaradi ednostavno nie e gi razgledame ekstrapolatorite od red nula i eden.
Vo MATLAB ekstrapolacija pome|u primerocite mo`e da se ostvari na nekolku na~ini. Funkcijata sinc(x), so koja se generira funkcijata xx ππ /)(sin mo`e da se
iskoristi za rekonstrukcija na signal so kone~na dol`ina. Ako e daden x[n] i ako
sakame da izvrime ekstrapolacija na mnogu fina rezolucija, so interval ∆t, toga gornata relacija postanuva:
-5 -4 -3 -2 -1 0 1 2 3 4 50
0.2
0.4
0.6
0.8
1
t in msec.
x1(n
)
Diskreten signal (Ts = 0.2 msec)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 10
2
4
6
8
10
Frekvencija vo pi edinici
X1(w
)
Spektar na diskretniot signal
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
26
21 ,)]([sinc ][)(2
2
ttmtnTtmfnxtmx
n
nn
ssa ≤∆≤−∆≈∆ ∑=
Od primerocite x1[n] e izvrime rekonstrukcija na signalot xa(t), so slednata niza na naredbi:
% Diskreten signal x1(n)
>> Ts = 0.0002; Fs = 1/Ts; n = -25:1:25; nTs = n*Ts;
>> x1 = exp(-1000*abs(nTs));
% Rekonstrukcija na analogniot signal
>> Dt = 0.00005; t = -0.005:Dt:0.005;
>> xa = x1*sinc(Fs*(ones(length(nTs),1)*t-nTs'*ones(1,length(t))));
% proverka
>> error = max(abs(xa - exp(-1000*abs(t))))
% Prikaz
>> plot(t*1000,xa); hold on
>> xlabel('t in msec.'); ylabel('xa(t)')
>> title('Reconstruiran signal od x1(n) so pomos na sinc funkcijata');
>> stem(n*Ts*1000,x1); hold off
Maksimalnata greka pome|u rekonstruiraniot i originalniot analogen signal e relativno mala i e rezultat na faktot to xa(t) ne e so ograni~en spektar (kako i poradi kone~niot broj na primeroci).
• Da se izvri rekonstrukcija na analogniot signal xa(t) od primerocite na signalot x2[n]. Da se diskutira dobieniot rezultat.
Drug na~in kako mo`e da se izvri rekonstrukcija vo MATLAB e so pomo na funkciite stairs i plot, koito simuliraat esktrapolacija od nula i prv red. Zna~i so ovie funkcii ne se presmetuva xa(t), tuku samo se prika`uva negoviot oblik dobien od primerocite na x[n].
%Rekonstrukcija so koristenje na stairs i plot funkciite
% Diskreten signal x1(n) : Ts = 0.0002
>> Ts = 0.0002; n = -25:1:25; nTs = n*Ts;
>> x1 = exp(-1000*abs(nTs));
% Reconstrukcija so koristenje na stairs funkcijata
>> subplot(2,1,1); stairs(nTs*1000,x1); hold on
>> xlabel('t in msec.'); ylabel('xa(t)')
>> title('Rekonstruiran signal od x1(n) so ekstrapolator od red
nula');
>> stem(n*Ts*1000,x1); hold off
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
27
% Reconstrukcija so koristenje na plot funkcijata
>> subplot(2,1,2); plot(nTs*1000,x1);
>> xlabel('t in msec.'); ylabel('xa(t)')
>> title('Rekonstruiran signal od x1(n) so ekstrapolator od red
eden'); hold on
>> stem(n*Ts*1000,x1); hold off
Od dobienite grafici mo`e da se vidi deka rekonstrukcijata so ekstrapolacijata od red nula e gruba i deka e neophodna dopolnitelno procesirawe na analogniot signal. Ektrapolacijata od red eden poka`uva mnogu podobri rezultati. Generalno, dokolku frekvencijata na diskretizacija e mnogu pogolema od Nyquist-ovata frekvancija, so ekstrapolatorot od prv red se ostvaruvaat zadovolitelni rekonstrukcii na analogniot signal.
Задача:
1. Сигналот )15sin(2)2cos()( tttxa ππ −= , дефиниран во интервалот )10,0(∈t , е
два пати дискретизиран: еднаш со фреквенција на дискретизација 10=sf
примероци/секунда, со што е добиен дискретниот сигнал ][1 nx , и втор пат со
фреквенција на дискретизација 20=sf примероци/секунда, со што е добиен
дискретниот сигнал ][2 nx .
а) Да се претстават на ист график сигналите )(txa и ][1 nx ;
б) Да се претстават на ист график сигналите )(txa и ][2 nx ;
в) Да се нацрта амплитудниот спектар на сигналите ][1 nx и ][2 nx во интервалот
],[ ππω −∈T , и од графиците да се одреди дали постои преклопување на
спектрите;
г) Да се нацртаат сигналите )(1 tx и )(2 tx кои се добиени со реконструкција од
сигналите ][1 nx и ][2 nx со користење на екстраполатор од нулти ред;
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
28
VE@BA 5VE@BA 5VE@BA 5VE@BA 5
Diskretna Furieova transformacija (Diskretna Furieova transformacija (Diskretna Furieova transformacija (Diskretna Furieova transformacija (DFT)
DFT na niza od N elementi x[n], n = 0, 1, … , N-1, e definirana so kone~na suma
1,...,1,0,][][1
0
−==∑−
=
NkWnxkXN
n
nk (4.1)
kade W = e-j2π / Ν pretstavuva jadro na transformacijata.
Od dobienata niza X[k], k = 0, 1, … , Ν −1 originalot x[n] se rekonstruira so
1,...,1,0,][1
][1
0
−== ∑−
=
−NnWkX
Nnx
N
k
nk (4.2)
Implementacija na DFT (4.1) e mo`na na nekolku na~ini. Pri direktna implementacija na relacijata 4.1, za presmetuvawe na sekoj primerok od X[k] potrebno e sumirawe vo eden for . . . end ciklus. Za presmetuvawe na site DFT koeficienti potreben e ute eden for . . . end ciklus. Vo MATLAB, vakvata implementacija so dva for . . . end ciklusa ne e efikasna. Za efikasna implementacija vo MATLAB potrebno e relaciite 4.1 i 4.2 da se pretstavat vo matri~en oblik. Ako x i X se vektori koloni koi gi sodr`at koeficientite na x[n] i X[k], respektivno, toga relaciite 4.1 i 4.2 mo`at da se napiat vo matri~en oblik:
X = T x (4.3) i
x = T-1
X (4.4)
kade T = [W i j
]; i, j = 0,1, . . . , N-1 e matrica na transformacijata, a T −−−−1 = (1/ N) T
*.
So slednite MATLAB funkcii se imlementiraat relaciite 4.3 i 4.4.
____________________________________________________________
function [X] = dft(xn,N)
% Presmetuva diskretna Furieova transformacija
% na konecna niza xn so dolzina N
n = [0:N-1]; % vektor za indeksite n
k = [0:N-1]; % vektor za indeksite k
W = exp(-j*2*pi/N); % jadro na transformacijata
nk = n'*k; % NxN matrica so elementi nk
T = W.^ nk; % matrica na transformacija
Xk = xn *T; % DFT koeficienti
function [xn] = idft(Xk,N)
% Presmetuva inverzna diskretna Furieova transformacija
n = [0:1:N-1]; % vektor za indeksite n
k = [0:1:N-1]; % vektor za indeksite k
W = exp(-j*2*pi/N); % jadro na transformacijata
nk = n'*k; % NxN matrica so elementi nk
T = W .^ (-nk); % inverzna matrica na transformacija
xn = (Xk * T)/N; % IDFT koeficienti
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
29
Ako e dadena nizata x [n], n = 0, 1, 2, 3 = 1, 1, -1, -1 nejzinata DFT mo`e da se presmeta so slednata niza naredbi:
>> x=[1,1,-1,-1]; N=4;
>> X=dft(x,N)
X =
0 2.0000 - 2.0000i 0 2.0000 + 2.0000i
Amplitudite i aglite na X[k] se
>> A=abs(X), phi=angle(X)*180/pi
A =
0 2.8284 0 2.8284
phi =
0 -45.0000 0 45.0000
• Dadena e diskretna niza so dol`ina N =12
x[n], n = 0, 1, … , 11 = 1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1
So pomo na funkcijata freqz odredete gо i nacrtajte gо amplitudniot spektar na nizata x[n].
So pomo na funkcijata dft odredete gо i nacrtajte ја (koristete ja funkcijata stem) amplitudata na DFT koeficientite X[k].
Obidete se da gi nacrtate gornite grafici (koristete ja funkcijata hold) na eden grafik. Poka`ete deka DFT koeficientite pretstavuvaat primeroci od spektarot na signalot za to~no opredeleni frekvencii. Odredete gi tie frekvencii.
• Da se presmeta DFT na slednite nizi.
x1=[1,zeros(1,7)]; % x[n]=delta[n],
x2=ones(1,8); % x[n]=u[n]
x3=[1,-1,1,-1,1,-1,1,-1]; % x[n]=(-1)^n;
x4=[0,0,0,0,1,0,0,0]; % x[n]=delta[n-4]
x5=exp(2i*pi/8*3*(0:7)); % Kompleksna eksponencijalna
% funkcija so omega=3*pi/4;
Da se prika`at amplitudite na DFT koeficientite.
• Generirajte ja nizata x[n] = cos(0.48 π n)+cos(0.52 π n), 150 ≤≤ n , so dol`ina 16. Presmetajte ja nejzinata DFT i prika`ete gi amplitudite na DFT
koeficientite. Prodol`ete ja nizita so nuli do dol`ina 64 i povtorno prika`ete gi amplitudite na DFT koeficientite.
Povtorno generirajte ja nizata x [n] no sega so dol`ina 64 i nacrtajte gi amplitudite na DFT koeficientite. Sporedete gi dobienite grafici i objasnete gi razlikite.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
30
Brza Furieova transformacija (Brza Furieova transformacija (Brza Furieova transformacija (Brza Furieova transformacija (FFT)
Brzata Furieova transformacija e algoritam za brzo presmetuvawe na DFT. Vo MATLAB, eden brz algoritam za presmetuvawe na DFT na kone~na niza e implementiran so funkcijata fft. Opt oblik na funkcijata
X=fft(x,N)
so to se dobiva DFT na nizata x presmetana vo N to~ki. Ako dol`inata na nizata x e pomala od N, nizata x se dopolnuva so nuli do dol`ina N. Ako argumentot N se
isputi, toga dol`inata na DFT e ista so dol`inata na nizata x. Funkcijata fft e vgradena funkcija (ne e dostapna kako m-datoteka) i spored toa se izvruva mnogu brzo. Ako N e stepen so osnova 2, pri izvruvaweto na funkcijata se primenuva brz FFT algoritam. Ako N ne e stepen so osnova 2, N se razlo`uva na prosti faktori, i se primenuva neto pobaven FFT algoritam. Kone~no ako N e prost broj, FFT se sveduva na presmetuvawe na DFT po definicija.
Inverznata DFT se presmetuva so funkcijata ifft, koja ima isti karakteristiki kako i fft.
• Generirajte ja nizata x[n]=cos (π n/99), 990 ≤≤ n . So pomo na parot naredbi tic i toc, presmetajte go vremeto potrebno za presmetuvawe na DFT (so pomo na funkciite dft i fft) na nizata vo N =512 i N = 514 to~ki. Komentirajte go dobieniot rezultat.
Upotreba na tic/toc naredbata:
>> tic; naredbi (funkcii); toc
Задачи:
1. Да се претстави графички амплитудниот спектар на низата
]0,0,1,1,1,1,1,1,1,1[][ =nx за фреквенции во интервалот ],0[ πω ∈T . Да
се одреди DFT во 20 точки на низата ][nx , и да се прикаже модулот на DFT
коефициентите на ист график со амплитудниот спектар.
2. Со користење на DFT, да се пресметаат и графички да се прикажат 40
примероци од амплитудниот и фазниот спектар на низата ][nx (од претходната
задача), во интервалот [0, ]Tω π∈ .
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
31
VE@BA 6VE@BA 6VE@BA 6VE@BA 6
Linearna i cikli~na konvolucijaLinearna i cikli~na konvolucijaLinearna i cikli~na konvolucijaLinearna i cikli~na konvolucija
Linearna konvolucija na dve kone~ni kauzalni nizi x[n] i g[n] so dol`ini N i L, respektivno, e kauzalna niza so dol`ina N+L-1
∑∑==
−+=−=−=n
k
n
k
LNnkgknfkngkfns00
2,...,1,0],[][][][][
Implementacija na linearnata konvolucija vo MATLAB mo`e da se izvri so funkcijata conv.
Za dve kone~ni nizi x[n] i g[n] so ista dol`ina N, cikli~nata konvolucija e kone~na niza c[n] so dol`ina N definirana so
∑∑−
=
−
=
−=−=−=1
0
1
0
1,...,1,0],[)][()][(][][N
m
N
m
Nnmgmnfmngmfnc
kade to so (n-m) e ozna~eno n-m mod N.
Funkcijata cikconvt (ne e standardna MATLAB funkcija) mo`e da se iskoristi za presmetuvawe na cikli~nata konvolucija.
• Dadeni se dve nizi x1[n]=1,2,2,1,2,2,1,2,2,1 i x2[n]=1,2,3,4,5,6,7,8,9,10 so ista dol`ina N = 10.
Da se presmeta nivnata linearna konvolucija s[n].
Da se presmeta nivnata cikli~na konvolucija c[n].
Da se presmeta cikli~nata konvolucija taka da bide ednakva so linearnata konvolucija.
Grafi~ka interpretacija na linearnata i cikli~nata konvolucija mo`e da se dobie so ispiuvawe na naredbata dconvdemo na komandnata linija. Po izvruvawe na naredbata e se otvori prozorecot Discrete Convolution Demo. Vo Plot Options menito odberete ja opcijata Show Circular Convolution i od levata strana e se pojavi ute eden prozorec vo koj se prika`uva cikli~nata konvolucija na dvate izbrani nizi.
• Da se presmeta DFT na nizite x1[n] i x2[n] definirani pogore. Da se presmeta IDFT na proizvodot X1[k] X2[k]. Dobieniot rezultat da se sporedi so nivnata cikli~na konvolucija c[n].
• So pomo na DFT da se presmeta linearna konvolucija na nizite x1[n] i x2[n].
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
32
Konvolucija na dolga nizaKonvolucija na dolga nizaKonvolucija na dolga nizaKonvolucija na dolga niza
Postojat dva metoda na koi, koristeji cikli~na konvolucija dobiena so pomo na DFT mo`e da se presmeta linearna konvolucija na dolga niza. Vo sledniot primer e ilustriran metodot na prekolopeni vlezovi. Treba da se presmeta linearna konvolucija na nizite x[n] = (n+1), 90 ≤≤ n i h[n] = 1, 0, -1, so pomo na cikli~na konvolucija vo N = 6 to~ki.
Najprvin nizata x[n] se deli na podnizi so dol`ina Nx = N – Nh +1 = 4, so to se dobivaat 3 podnizi. Bideji dol`inata na pokratkata niza e Nh = 3, sekoja podniza
e se preklopuva so prethodnata so Nh −1= 3 −1 = 2 primeroci i Nh −1= 2 nuli se dodavat na po~etokot na prvata podniza. Taka podnizite e bidat:
>> x1=[0,0,1,2,3,4];
>> x2=[3,4,5,6,7,8];
>> x3=[7,8,9,10,0,0];
Bideji se presmetuva cikli~na konvolucija vo 6 to~ki poslednata podniza e prodol`ena so dve nuli.
Potoa se presmetuva cikli~na konvolucija na sekoja podniza so h[n]:
>> h=[1 0 –1 0 0 0];
>> y1=cikconvf(x1,h,6); % cikconvf presmetuva ciklicna
>> y2=cikconvf(x2,h,6); % konvolucija so pomos na DFT
>> y3=cikconvf(x3,h,6);
Kone~no, se otfrlaat prvite Nh −1= 2 primeroci od sekoja dobiena podniza yi i se formira nizata y koja pretstavuva linearna konvolucija na x i h
>> y= [y1(3:6) y2(3:6) y3(3:6)]
y =
1 2 2 2 2 2 2 2 2 2 –9 –10
Istiot rezultat se dobiva i ako linearnata konvolucija se presmeta so pomo na funkcijata conv:
>> y=conv(x,h)
y =
1 2 2 2 2 2 2 2 2 2 –9 –10
So funkcijata prvlez e implementirana pogore opianata postapka za procesirawe na dolgi nizi po metodot na preklopeni vlezovi.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
33
_____________________________________________________________________________
function [y] = prvlez(x,h,N)
% Linearna konvolucija na dolga niza
% po metodot na preklopeni vlezovi
% ----------------------------------------
% [y] = prvlez(x,h,N)
% y = izlezna niza
% x = vlezna niza
% h = impulsen odziv
% N = dolzina na ciklicnata konvolucija
%
Lenx = length(x); M = length(h);
M1 = M-1; L = N-M1;
h = [h zeros(1,N-M)];
x = [zeros(1,M1), x, zeros(1,N-1)]; % se dodavaat (M-1) nuli
% pred prvata niza
K = floor((Lenx+M1-1)/(L)); % broj na sekcii (podnizi)
Y = zeros(K+1,N);
% Konvolucija na sekoja podniza so h
for k=0:K
xk = x(k*L+1:k*L+N);
Y(k+1,:) = cikconvt(xk,h);
end
Y = Y(:,M:N)'; % otfrlanje na prvite (M-1) primeroci
% od sekoja podniza
y = (Y(:))'; % formiranje na izleznata niza
So slednata niza naredbi mo`e da se izvri verifikacija na rabotata na funkcijata prvlez:
>> n=0:9; x=n+1; h=[1,0,-1]; N=6;
>> y=prvlez(x,h,N)
y =
1 2 2 2 2 2 2 2 2 2 –9 –10
Pogolema efikasnosta na funkcijata prvlez mo`e da se dobie ako delot vo koj se presmetuva cikli~nata konvolucija se realizira so FFT. Ova podobruvawe e izvedeno vo funkcijata prvlezf (help prvlezf). Dol`inata na cikli~nata konvolucija e sekoga stepen so osnova 2.
Задача:
1. Со методот на преклопени излези да се пресмета линеарна конволуција на
истите низи x[n] i h[n].
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
34
VE@BA 7VE@BA 7VE@BA 7VE@BA 7
Dizajn na Dizajn na Dizajn na Dizajn na FIR filtri so metod na prozorci filtri so metod na prozorci filtri so metod na prozorci filtri so metod na prozorci
Impulsniot odziv na digitalen filter za niski frekvencii so (idealna) frekvenciska karakteristika
>
≤=
p
pTjd eH
ωω
ωωω
0
1)(
e so beskone~no traewe i ne e kauzalen:
hd [n] = sin(nω pT)/nπ, Zn ∈ .
Bideji negovata prakti~na realizacija ne e mo`na, nu`no e da se ograni~i traeweto na impulsniot odziv so presekuvawe (mno`ewe so pravoaglen prozorec). Taka na primer, usvojuvaji dol`ina na prozorecot N = 51, grani~na frekvencija
na idealniot filter ω p= 0.4 π, T=1sec, so komandata
>> h=0.4*sinc(0.4*(-25:25));
se dobiva impulsen odziv na nekauzalniot FIR filter so linearna faza. Prozorecot kojto ovde e primenet e pravoagolen prozorec (boxcar). Amplitudnata karakteristika na filterot mo`e da se vidi so:
>> w=[0:1:500]*pi/500;
>> H=freqz(h,1,w);
>> plot(w/pi,abs(H)), grid
• Zgolemete ja dol`inata na prozorecot na N = 91 i nacrtajte ja frekvenciskata karakteristika na dobieniot filter. Komentirajte go vlijanieto na dol`inata N na frekvenciskata karakteristika.
Efektot na Gibbs mo`e da se namali so izbor na drug vid prozorec. Primenuvaji Hamming-ov prozorec so dol`ina 51 na istiot filter, so komandata
>> h=h.*hamming(51)’;
>> H=freqz(h,1,w);
>> hold on, plot(w/pi,abs(H)), grid
jasno se gleda namaluvaweto na efektot na Gibbs po cena na zgolemuvawe na preodniot opseg.
MATLAB sodr`i nekolku prozorci koi se koristat za dizajn na filtri: boxcar, triang, hanning, hamming, blackman i kaiser.
MATLAB funkciite fir1 i fir2 za proektirawe na filtri so kone~en impulsen odziv se zasnovani na metodot so prozorci. Funkcijata fir1 se koristi za filtri so eden propusten opseg, dodeka fir2 ovozmo`uva filterot da ima povee propusni opsezi. Povee za funkciite fir1 i fir2 doznajte so naredbata help.
So pomo na slednata skripta prika`ana e postapkata za dizajn na FIR filter za niski frekvencii po metodot so prozorci, so slednite parametri:
- grani~na frekvencija na propusniot opseg ω p= 0.2 π;
- grani~na frekvencija na nepropusniot opseg ω q= 0.3 π;
- maksimalno slabeewe vo propusniot opseg 0.25 dB;
- minimalno slabeewe vo nepropusniot opseg 50 dB.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
35
Najprvin za dadenite parametri se izbira prozorecot i dol`inata na istiot. I so Hamming-oviot i so Blackman-oviot prozorec mo`e da se obezbedi slabeewe pogolemo od 50 dB vo nepropusniot opseg. Bideji Hamming-oviot prozorec obezbeduva potesno preodno podra~je, a so toa ima i pomala dol`ina go izbirame Hamming-oviot prozorec. Iako maksimalnoto slabeewe vo propusniot opseg ne se koristi vo procesot na dizajnirawe potrebno e da se proveri dali istoto e vo dozvolenite granici na tolerancija.
>> wp=0.2*pi; wq=0.3*pi;
>> opseg=wq–wp; % sirocina na preodniot opseg
>> N=ceil(6.6*pi/opseg)+1 % procenka na dolzinata N
>> wc = (wq+wp)/2 % granicna frekvencija na idealnoit LP
>> h=fir1(N,wc/pi); % koeficienti na filterot
>> [H,w]=freqz(h,1,1000,’whole’);
>> H=(H(1:1:501))’; w=(w(1:1:501))’;
>> A=abs(H); %amplitudna karakteristika
>> Adb=-20*log10((A+eps)/max(A)); %slabeenje vo odnos na max(A)
>> delta_w = 2*pi/1000;
>> Amax= max(Adb(1:1:wp/delta_w+1)) % max slabeenje vo
% propusniot opseg
>> Amin= min(Adb(wq/delta_w+1:1:501))) % min slabeenje vo
% nepropusniot opseg
>> plot(w/pi,-Adb);title('Amplitudna karakteristika vo dB');grid
>> axis([0 1 -100 10]);
>> xlabel('frekvencija vo pi edinici'); ylabel('dB')
Zna~i, za dol`ina N=67, minimalnoto slabeewe vo nepropusniot opseg e 52.92 dB, a maksimalnoto slabeewe vo propusniot opseg e 0.0364 dB so to se zadovoleni zadadenite specifikacii.
• [to e se promeni vo dizajnot ako dol`inata na prozorecot e N = 61?
Dizajn na ednakvobranovi filtriDizajn na ednakvobranovi filtriDizajn na ednakvobranovi filtriDizajn na ednakvobranovi filtri
Parks-McClellan-oviot algoritam za dizajn na ednakvobranovi filtri vo MATLAB e implementiran so funkcijata firpm, ~ija najopta sintaksa e:
h=firpm(N,f,m,weights,ftype).
Mo`ni se slednite verzii na sintaksata:
− h=firpm(N,f,m) dizajnira FIR digitalen filter h od red N (dol`inata na filterot e N+1), ~ija frekvenciska karakteristika e specificirana so vektorite f i m. Vektorot f gi sodr`i grani~nite frekvencii na opsezite izrazeni vo pi edinici, po~nuvaji od 0.0 i zavruvaji so 1.0. Vektorot m ja sodr`i posakuvanata amplitudna karakteristika za frekvenciite specificirani vo f. Dol`inata na vektorite f i m mora da bide ista i mora da bide paren broj. Te`inskata funkcija vo sekoj opseg e 1, to zna~i deka toleranciite vo sekoj opseg se isti.
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
36
− h=firpm(N,f,m,weights) sli~na na gornata sintaksa, so toa to vektorot weights gi sodr`i te`inskite faktori za sekoj opseg.
So pomo na slednata skripta prika`ana e postapkata za dizajn na ednakvobranov FIR filter za niski frekvencii so slednite parametri:
- grani~na frekvencija na propusniot opseg ω p= 0.2 π;
- grani~na frekvencija na nepropusniot opseg ω q= 0.3 π;
- maksimalno slabeewe vo propusniot opseg 0.25 dB;
- minimalno slabeewe vo nepropusniot opseg 50 dB.
>> wp = 0.2*pi; wq = 0.3*pi; Amax = 0.25; Amin = 50;
>> delta1 = (10^(Amax/20)-1)/(10^(Amax/20)+1)
>> delta2 = (1+delta1)*(10^(-Amin/20))
>> weights = [delta2/delta1 1] % tezinska f-cija
% za dadenite parametri se procenuva pocetnata
% vrednost za dolzinata N
>> deltaf = (wq-wp)/(2*pi)
>> N = ceil((-20*log10(sqrt(delta1*delta2))-13)/(14.6*deltaf)+1)
>> f = [0 wp/pi wq/pi 1]
>> m = [1 1 0 0];
>> h = firpm(N-1,f,m,weights); % koeficienti na filterot
% Odreduvanje na amplitudnata k-ka na filterot
>> [H,w]=freqz(h,1,1000,’whole’);
>> H=(H(1:1:501))’; w=(w(1:1:501))’;
>> A=abs(H);
>> Adb=-20*log10((A+eps)/max(A)); % slabeenje vo odnos na max(A)
% Odreduvanje na minimalnoto slabeenje vo nepropusniot opseg
>> delta_w = 2*pi/1000; wqi=wq/delta_w+1; wpi = wp/delta_w;
>> Asd = min(Adb(wqi:1:501))
% Bidejki slabeenjeto e pomalo od baranoto, se zgolemuva N i
% postapkata se povtoruva dodeka ne se dobie baranoto slabeenje
>> N = N+1;
>> h = firpm(N-1,f,m,weights);
>> [H,w]=freqz(h,1,1000,’whole’);
Основи на Дигитално Процесирање на Сигнали _____________________________________________________________________________________
37
>> H=(H(1:1:501))’; w=(w(1:1:501))’;
>> A=abs(H);
>> Adb=-20*log10((A+eps)/max(A));
>> Asd=min(Adb(wqi:1:501))
Za N = 47 baranite specifikacii se zadovoleni i postapkata se prekinuva. Dobienata dol`ina na dizajniraniot filter N = 47 e zna~itelno pomala vo sporedba so N = 67 to, za istite specifikacii, bee dobiena so metodot na prozorci.
Задача:
1. Со помош на Parks-McClellan-овиот алгоритам да се дизајнира филтер пропусник на
опсег со следниве параметри:
πωπ
πωπ
πω
ω
ω
ω
≤≤≤≤
≤≤≤≤
≤≤≤≤
75.003.0(0
65.035.005.1(95.0
2.0001.0(0
)
)
)
j
j
j
eH
eH
eH