SEMINARSKI RAD Predmet: Osnovi analize signala i sistema Tema: Semplovanje : problemi 7.1 - 7.20 Mentori: Studenti: Prof. dr. Radomir Stanković Aleksa Kocić 14340 Mr. Miloš Radmanović Željko Laković 14349 Jelena Ljubenović 14357 Niš, 2015.
SEMINARSKI RAD
Predmet: Osnovi analize signala i sistema
Tema: Semplovanje : problemi 7.1 - 7.20
Mentori: Studenti:
Prof. dr. Radomir Stanković Aleksa Kocić 14340
Mr. Miloš Radmanović Željko Laković 14349
Jelena Ljubenović 14357
Niš, 2015.
- 2 -
Sadržaj
1.Uvod …………………………………………………….…………………....3
2.Teorema o semplovanju ……………………………………………………..4
3.Semplovanje povorkom impulsa……………………………………………...4
4.Rekonstrukcija signala uz pomoć Zero-order hold…………………………...8
5.Interpolacija signala …………………………….…………………………..10
6.Aliasing…...…………………………………….…………………………...13
7.Diskretna obrada kontinualnog signala …………..……………………...…14
8.Problemi 7.1 – 7.20 ………………………………………………………...21
9.Literatura……………………………………………………………………78
- 3 -
Uvod
U okviru ovog seminarskog rada bavićemo se proučavanjem teorijske
osnove vezane za semplovanje i pisati programe u SCILAB-u za rešavanje
problema 7.1-7.20.
Pored samog koncepta semplovanja bavićemo se i rekonstrukcijom
kontinualnog vremenskog signala iz njegovih uzoraka. Identifikovaćemo uslove
pod kojima kontinualni vremenski signal može biti tačno rekonstruisan iz svojih
uzoraka i proučavati posledice kada ovi uslovi nisu ispunjeni, i konačno,
proučićemo procesiranje kontinualnog vremenskog signala koji je bio
konvertovan u diskretni vremenski signal uz pomoć semplovanja. Kako bi sve to
bilo moguće neophodno je najpre upoznati se sa teorijom semplovanja i nekim
osobinama kontinualnih signala.
Pod određenim okolnostima, kontinualni vremenski signal može biti
nadoknadiv usled poznavanja njegovih vrednosti u tačkama koje su jednako
raspoređene u vremenu, tj. usled poznavanja njegovih uzoraka. Ova osobina sledi
iz osnovnog rezultata teoreme o semplovanju i od izuzetnog je značaja.
Jedan od primera gde je ova osobina eksploatisina su slike koje se
pomeraju. One se sastoje od sekvence individualnih ramova, gde svaki od tih
ramova predstavlja trenutni vremenski uzorak scene koja se kontinualno menja.
Kada se ovi uzorci vide u sekvenci sa dovoljno brzom stopom kretanja, mi
doživljavamo tačnu reprezentaciju originalne scene sa kontiunalnim kretanjem.
Slika 1. Primer ulaznog signala koji u zavisnosti od stope semplovanja daje različit signal na
izlazu
- 4 -
Teorema o semplovanju
Teorema o semplovanju je od ogromnog značaja, jer služi kao prekretnica
između kontinualnih i diskretnih vremenskih signala. U osnovi, u odsustvu bilo
kakvih dodatnih uslova ili informacija, ne možemo očekivati da signal može biti
jedinstveno predstavljen preko sekvence jednako raspoređenih uzoraka. Na
primer, na slici 2 prikazujemo tri različita kontinualna vremenska signala, od kojih
svi imaju iste vrednosti u celobrojnim umnošcima od T, odnosno:
x1(kT) = x2(kT) = x3(kT).
Slika 2. Tri kontinualna vremenska signala sa identičnim vrednostima celobrojnog umnoška T
Očigledno je da beskonačan broj signala može da generiše dati set uzoraka.
Međutim, ako signal ima ograničen frekventni opseg, tj. ako je njegova Furijeova
transformacija nula izvan konačnog opsega frekvencija i ako su uzeti uzorci
dovoljno blizu u zavisnosti od najviše frekvencije prisutne u signalu, onda uzorci
jedinstveno određuju signal, i možemo ga perfektno rekonstruisati. Ovaj rezultat,
poznat kao teorema o semplovanju i od velike je važnosti u praktičnoj primeni
metoda analize signala i sistema.
Semplovanje povorkom impulsa
U cilju razvijanja teoreme o semplovanju, potreban nam je pogodan put za
predstavljanje semplovanja kontinualnog vremenskog signala u redovnim
intervalima. Koristan način za ovo je kroz korišćenje periodične povorke impulsa
pomnožene kontinualnim vremenskim signalom x(t) koji želimo da semplujemo.
Ovaj mehanizam, poznatiji kao semplovanje povorkom impulsa, prikazan je na
slici 3.
- 5 -
Periodična povorka impulsa p(t) naziva se funkcijom semplovanja, perioda
T periodom semplovanja i ωs=2π/T frekvencijom semplovanja. To je osnovna
frekvencija impulsa p(t). U vremenskom domenu važi da je :
xp(t) = x(t)p(t),
gde je:
p(t) =∑ 𝛿+∞𝑛=∞ (𝑡 − 𝑛𝑇).
Zbog osobine semplovanja jediničnog impulsa znamo da množenje
x(t) sa jediničnim impulsom sempluje vrednost signala u tački u kojoj se impuls
nalazi, tj. x(t)δ(t-t0)=x(t0) δ(t-t0). Primenom ovoga na jednačinu (1), vidimo, kao
što je prikazano na slici 3, da je xp(t) povorka impulsa čije su amplitude jednake
uzorcima x(t) u intervalima na razmaku T, što je,
xp(t) =∑ 𝑥(𝑛𝑇)𝛿+∞
𝑛=∞(t − nT).
Slika 3. Semplovanje povorkom impulsa
- 6 -
Iz osobine multiplikacije znamo da je:
Xp(jω) = 1
2𝜋 [X(jω) * P(jω)],
a određivanjem Furijeove transformacije povorke impulsa dobijamo:
P(jω) = 2𝜋
𝑇 ∑ 𝛿(𝜔 − 𝑘𝜔𝑔).
+∞
𝑘=∞
Budući da konvolucija sa impulsom jednostavno pomera signal, [
tj. X(jω)*δ(ω-ω0) = X(j(ω- ω0)) ], sledi da je:
𝑋𝑝(𝑗𝜔) = 1
𝑇∑ 𝑋(𝑗(𝜔 − 𝑘𝜔𝑠+∞𝑘=−∞ )).
Odnosno, X(jω) je periodična funkcija po ω koja se sastoji od superpozicije
pomerenih kopija X(jω), skaliranih 1/T puta, kao što je prikazano na slici 4. Na
slici 4c je ωM < ( ωs - ωM), a to je ekvivalentno sa ωs > 2ωM, pa stoga ne postoji
preklapanje između pomerenih kopija X(jω), dok na slici 4d, gde je ωs < 2ωM,
postoji preklapanje.
Za slučaj ilustrovan na slici 4c, X(jω) je verno prikazan preko celobrojnih
umnožaka frekvencije semplovanja. Samim tim, ako je ωs > 2ωM, x(t) može biti
tačno dobijeno iz xp(t) pomoću niskopropusnog filtra sa pojačanjem T i graničnom
frekvencijom većom od ωM a manjom od ωs - ωM, kao što je prikazano na slici 4.
Slika 4. Efekat semplovanja u frekventnom domenu: na slici a) prikazan je spektar
originalnog signala, b) spektar funkcije semplovanja, c) je spektar semplovanog signala sa frekvencom
ωs > 2ωM i d) spektar semplovanog signala ωs < 2ωM.
- 7 -
Ovaj osnovni rezultat, iz teoreme semplovanja, može biti predstavljen na
sledeći način: nNeka je x(t) ograničeni signal sa X(jω)=0, za |ω|>0. Tada je x(t)
jedinstveno određen svojim uzorcima x(nT), n=...-3,-2,-1,0,1,2,3... ako važi:
ωs>2ωM ,
gde je:
ωs=2π/T.
Dakle, x(t) možemo rekonstruisati sledećim procesom: generisanjem
periodične povorke impulsa u kome su amplitude uzastopnh impulsa vrednosti
uzastopnih uzoraka. Ova povorka impulsa se zatim obrađuje kroz idealni
niskopropusni filtar sa pojačanjem T i graničnom frekvencijom većom od ωM, a
manjom od ωs-ωM. Rezultujući signal je tada tačno jednak x(t).
Slika 5. Prikazan je sistem za semplovanje i rekonstrukciju
Slika 6. Dobijanje kontinualnog vremenskog i frekventnog signala od njegovih uzoraka
korišćenjem idealnog niskopropusnog filtra.
- 8 -
Idealni filtri se ne koriste u praksi, već oni bivaju zamenjeni
neidealnim filtrom H(jω) za koji mora da važi : H(jω) = 1 za |ω| < ωM, i H(jω)
= 0 za |ω| > ωS - ωM . Medjutim ta zamena idealnog filtra neidealnim će dovesti
do nekog neslaganja između x(t) i xr (t) , a samim tim i izmedju X(jω) i Xr(jω). U
nastavku ovog rada podrazumevaćemo dostupnost i korišćenje idealnih filtara, uz
napomenu da u praksi ovakav filtar mora biti zamenjen neidealnim filtrom.
Rekonstrukcija signala
Zero-order hold
Teorema o semplovanju, koju je najlakše objasniti preko semplovanja
povorkom impulsa, pokazuje nam da je ograničeni signal jedinstveno
predstavljen preko svojih uzoraka.
U praksi uski impulsi velikih amplituda su teški za generisanje i prenos.
Mnogo je lakše generisati semplovani signal x0(t) tako što signal x(t) propustimo
kroz zero-order hold sistem. Ovaj sistem uzorkuje signal u određeninm trenucima
i zadržavaju tu vrednost sve do uzimanja sledećeg uzorka.
Slika 7. Propuštanje signala x(t) kroz Zero-order hold
Rekonstrukcija signala se može izvršiti niskofrekventnim filtrom. Da bismo
dobili traženu karakteristiku filtra, primetimo da se izlaz može generisati
semplovanjem povorkom impulsa praćenim LTI sistemom sa pravougaonim
impulsom, kao što je prikazano na slici 8. LTI (Linear Time Invariant) sistem je
okarakterisan svojim impulsnim odzivom h(t) koji predstavlja odziv sistema kada
se na njegov ulaz dovede Dirakov impuls.
- 9 -
Slika 8. Izlaz dobijen semplovanjem povorke impulsa sa pravougaonim impulsom
Da bismo rekonstruisali 𝑥(𝑡) iz 𝑥0(𝑡), propustićemo 𝑥0(𝑡) kroz LTI sistem
sa impulsnim odzivom ℎ𝑟(𝑡) i frekventnim odzivom 𝐻𝑟(𝑗𝜔). Ovakav sistem
prikazan je na slici 9.
Slika 9. Propuštanje signala x0(t) kroz LTI sistem sa impulsnim odzivom ℎ𝑟(𝑡) i frekventnim
odzivom 𝐻𝑟(𝑗𝜔)
Ukoliko želimo da odredimo 𝐻𝑟(𝑗𝜔) tako da važi 𝑥(𝑡) = 𝑟(𝑡), neophodno
je da uporedimo ovaj i sistem sa slike 5 vidimo da je 𝑥(𝑡) = 𝑟(𝑡) ako kaskadna
kombinacija ℎ0(𝑡) i ℎ𝑟(𝑡) čini idealni niskofrekventni filtar 𝐻(𝑗𝜔) sa slike 5.
U mnogim situacijama, izlaz nakon primene zero-order hold tehnike se
smatra adekvatnom aproksimacijom originalnog signala, bez dodatnog filtriranja
- 10 -
i u suštini predstavlja moguću, iako veoma grubu interpolaciju između uzoraka.
U nastavku ćemo detaljnije proučiti koncept rekonstrukcije signala od uzoraka u
procesu interpolacije.
Interpolacija
Interpolacija je procedura za rekonstrukciju funkcije. Ona podrazumeva
uklapanje kontinualnog signala u skup uzoraka, pri čemu se teži da to uklapanje
bude približno ili potpuno tačno. Jedan od korisnih oblika interpolacije je linearna
interpolacija, kod koje se uzastopne tačke uzoraka povezuju pravom linijom, kao
na slici 10. Postoje i drugi vidovi interpolacija u kojima se za povezivanje tačaka
umesto linearne koriste neke druge matematičke funkcije. Jedna prosta procedura
interpolacije je i zero-order hold.
Slika 10. Linearna interpolacija između tačaka uzoraka zavisi od broja uzoraka:
a) 12 tačaka, b) 36 tačaka.
Precizna interpolacija se može sprovesti između tačaka semplovanja.
Korišćenjem niskofrekventnog filtra ograničeni signal čiji su uzorci dovoljno
bliski, može biti tačno rekonstruisan. Rekonstrukcija signala 𝑥(𝑡) procesom
interpolacije postaje evidentna ako posmatramo efekat niskofrekventnog filtra u
vremenskom domenu. Konkretno, izlaz je jednak :
𝑥𝑟(𝑡) = 𝑥𝑝(𝑡) ∗ ℎ(𝑡),
Ako xp(t) zamenimo sa:
- 11 -
𝑥𝑝(𝑡) = ∑ 𝑥(𝑛𝑇)𝛿(𝑡 − 𝑛𝑇)∞𝑛=−∞
dobićemo:
𝑥𝑟(𝑡) = ∑ 𝑥(𝑛𝑇)ℎ(𝑡 − 𝑛𝑇)∞𝑛=−∞
Ovako dobijena formula predstavlja interpolacionu formula i opisuje kako
možemo da uklopimo kontinualnu krivu između tačaka semplovanja 𝑥(𝑛𝑇). Za
idelani niskofrekventni filtar 𝐻(𝑗𝜔) sa slike 5 važi:
ℎ(𝑡) = 𝜔𝑐𝑇𝑠𝑖𝑛(𝜔𝑐𝑡)
𝜋𝜔𝑐𝑡,
odakle sledi:
𝑥𝑟(𝑡) = ∑ 𝑥(𝑛𝑇)𝜔𝑐𝑇𝑠𝑖𝑛(𝜔𝑐(𝑡−𝑛𝑇))
𝜋𝜔𝑐(𝑡−𝑛𝑇)∞𝑛=−∞
Rekonstrukcija po prethodnoj formuli, sa 𝜔𝑐 = 𝜔𝑠/2 ilustrovana je na slici
11. Slika 11a predstavlja originalni ograničeni signal 𝑥(𝑡), 7b predstavlja 𝑥𝑝(𝑡),
povorku uzoraka, dok je na slici 11c prikazana superpozicija pojedinačnih članova
sume iz 𝑥𝑟(𝑡).
Slika 11. Idealna interpolacija korišćenjem funkcije semplovanja: a) ograničen signal x(t), b)
povorka impulsa uzoraka x(t), c) idealna ospegom ograničena interpolacija u kojoj je povorka impulsa
zamenjena superpozicijom funkcije semplovanja
- 12 -
Interpolacija korišćenjem idealnog niskofrekventnog filtra obično se naziva
interpolacija ograničenog opsega, s obzirom na to da implementira preciznu
rekonstrukciju ukoliko je signal ograničen i frekvencija semplovanja ispunjava
uslove teoreme semplovanja.
U mnogim slučajevima preporučljivo je koristiti jednostavniju
interpolacionu funkciju, odnosno manje precizan, ali jednostavniji filtar. Jedna od
jednostavnijih funkcija je i zero-order hold, mada, u slučaju njene nedovoljne
preciznosti , možemo koristiti i druge strategije, poznate kao zadržavanja višeg
reda.
Primer takve strategije je linearna interpolacija, ili first-order hold. Ona se
može posmatrati kao interpolacija u formi sa slike 5 gde je h(t) trougaona funkcija,
što je prikazano na slici 12.1 i 12.2. Odgovarajuća prenosna funkcija takođe je
prikazana na slici i jednaka je
𝐻(𝑗𝜔) = 1
𝑇[sin (
𝜔𝑇
2)
𝜔/2]
−2
Slika 12.1. Linearna interpolacija (first-order hold) kao povorka impulsa praćena konvolucijom sa
trougaonim impulsnim odzivom; a) sistem za semplovanje i rekonstrukciju, b) povorka impulsa
uzoraka, c) impuslni odziv koji predstavlja first-order hold.
- 13 -
Slika 12.2. Linearna interpolacija (first-order hold) kao povorka impulsa praćena
konvolucijom sa trougaonim impulsnim odzivom; d) first-order hold primenjen na semplovani signal,
e) komparacija funkcije prenosa indealnog interpolacionog filtera i first-order hold-a.
Aliasing
Pod aliasing-om se podrazumeva preklapanje spektara koje je posledica
nedovoljne učestalosti uzorkovanja nekog analognog signala. To je pojam za
greške nastale sažimanjem kontinualnog signala u diskretne uzorke, nastojeći da
pružimo iste informacije. Najčešće se govori o aliasingu nastalom pretvaranjem
kontinuiranog analognog u digitalni signal.
U prethodnim odeljcima ovog poglavlja, predpostavljano je da je
frekvencija semplovanja dovoljno velika da bi zadovoljila uslove teoreme o
semplovanju odnosno uslov Nikvistovog kriterijuma. Kada je ωS > 2 ωM, spektar
semplovanog signala se sastoji od skaliranih duplikata spektra x(t) i ovo postavlja
osnove teoreme o semplovanju.
Kada ωS < 2ωM, tada X(jω), odnosno spektar signala x(t), nije vise
repliciran u Xp(jω) i samim tim vise nije moguce izvršiti njegov rekonstrukciju
korišćenjem niskofrekventnog filtra. Ovaj efekat po kome dolazi do poklapanja
susednih spektara se naziva aliasing i mi ispitujemo njegove posledice. Očigledno
je da kada izvršimo rekonstrukciju signala na signal sa frekvencijom ωS < 2ωM,
rekonstuisani signal xr(t) neće biti jednak početnom.
- 14 -
Slika 13. Posledice aliasing-a
Medjutim, signal koji je rekonstruisan koristeći ograničenu interpolaciju
će uvek biti jednak semplovanim odmercima, dakle, za bilo koje ωS važi:
xr( nT ) = x( nT ), n = 0,±1,±2,…
Važno je naznačiti da teorema o semplovanju ekplicitno zahteva da je
frekvencija semplovanja veća od dvostruke najveće frekvencije u signalu, a ne da
je veća ili jednaka od dvostruke najvece frekvencije. Dakle ne sme biti jednaka.
Diskretna obrada kontinualnog signala
U mnogim aplikacijama, postoje značajne prednosti pri obradi kontinualnih
signala, ako ih prvo prebacimo u diskretni oblik, i posle diskretne obrade, vratimo
ga u kontinualni oblik. Obrada diskretnog signala može biti obavljena uz pomoć
računara za opšte ili za specijalne namene, sa mikroprocesorima, ili sa bilo kojim
od uređaja koji su specijalno orijentisani ka obradi diskretnih signala.
U opštem slučaju, ovaj pristup obradi kontinualnih signala, može biti viđen
kao sekvencijalno izvršavanje tri operacije, kao što je prikazano na sledećoj šemi,
- 15 -
gde xc(t) i yc(t) kontinualni signali i 𝑥𝑑[𝑛] i 𝑦𝑑[𝑛] su dogovarajući diskretni
signali. Celokupan sistem je, naravno, kontinulan u smislu da su mu i izlaz i ulaz
kontinualni signali.
Teoretska osnova za pretvaranje kontinualnog signala u diskretni i njegova
rekonstrukcija iz diskretne reprezentacije leži u teoremi o semplovanju, kao što
je diskutovano na početku ovog poglavlja. Iako je proces periodičnog
semplovanja sa frekvenicjom semplovanja u skladu sa teoremom o semplovanju,
kontinualni signal 𝑥𝑐(𝑡) je tačno predstavljen sekvencom trenutnih vrednosti
odmeraka 𝑥𝑐(𝑛𝑇), što znači da je diskretna sekvenca 𝑥𝑑[𝑛] povezana sa 𝑥𝑐(𝑡) na
sledeći način:
𝑥𝑑[𝑛] = 𝑥𝑐(𝑛𝑇)
Slika 14. Prikaz pretvaranja kontinualnog signala u diskretni i njegova rekonstrukcija iz
diskretne reprezentacije
Postupak pretvaranja signala 𝑥𝑐(𝑡) u 𝑥𝑑[𝑛] je prikazan na slici 14 i naziva
se pretvaranje kontinualnog vremenskog signala u diskretni, ili kraće K/D. Obrnut
proces, odnosno vraćanje u kontinualni oblik, naziva se pretvaranje diskretnog
vremenskog signala u kontinualni, ili kraće, D/K. Iz D/K operacije se dobija
kontinualni vremenski signal 𝑦𝑐(𝑡) koji odgovara diskretnom vremenskom
signalu 𝑦𝑑[𝑛] na sledeći način:
𝑦𝑑[𝑛] = 𝑦𝑐(𝑛𝑇)
Na slici 15 je prikazan način obeležavanja. U sistemima kao sto su digitalni
računari i digitalni sistemi, gde su diskretni signali predstavljeni u digitalnoj
- 16 -
formi, uređaj koji se najčešće koristi za K/D pretvaranje zove se analogno-
digitalni (A-D) pretvarač, a uredjaj koji se koristi za D/K pretvaranje naziva se
digitalno-analogni (D-A) pretvarač.
Slika 15. Obeležavanje kontinualno-diskretne konverzije i diskretno-kontinualne konverzije
Da bismo još više razumeli odnos između kontinulanog signala 𝑥𝑐(𝑡) i
njegovovog diskretnog oblika 𝑥𝑑[𝑛], korisno je predstaviti K/D kao periodično
semplovanje praćeno mapiranjem povorke impulsa u sekvencu. Ova dva koraka
su prikazana na slici 16.
U prvom koraku, u predstavljanju procesa odmeravanja, povorka impulsa
xp(t) odgovara sekvenci impulsa čije amplitude odgovaraju uzorcima signala
𝑥𝑐(𝑡) sa periodom jednakom periodi semplovanja T. Prilikom pretvaranja iz
povorke imulsa u sekvencu koja je diskretna u vremenu, mi pribavljamo 𝑥𝑑[𝑛],
koja odgovara istoj sekvenci odmeraka od 𝑥𝑟(𝑡) ali sa jedinstvenim razmakom u
pogledu nove nezavisne promenljive n.
Prema tome, u suštini, pretvaranje iz povorke impulsa odmeraka u povorku
impulsa odmeraka diskretne u vremenu može da se posmatra kao normalizacija u
vremenu. Ova normalizacija prilikom pretvaranja 𝑥𝑝(𝑡) u 𝑥𝑑[𝑛] je prikazana pod
b) i c) na slici 16, gde su 𝑥𝑝(𝑡) i 𝑥𝑑[𝑛], resepektivno ilustrovani za periode
semplovanja respektivno 𝑇 = 𝑇1 i 𝑇 = 2𝑇1.
Takođe, poželjno je ispitati faze obrade na sledećoj slici, u frekventnom
domenu. S obzirom da cemo da se bavimo Furijeovim transformacijama i u
kontinualnom i u diskretnom vremenu, u ovom odeljku samo razlikujemo
kontinualno-vremensku i diskretno-vremensku frekvenciju promenljivih,
koristeći 𝜔 u kontinualnom vremenu i Ω u diskretnom vremenu.
- 17 -
Na primer, kontinualna Furijeova transformacija signala 𝑥𝑐(𝑡) i 𝑦𝑐(𝑡) je
𝑋𝑐(𝑗𝜔) i 𝑌𝑐(𝑗𝜔) respektivno, dok je diskretna vremenska Furijeova
transformacija signala 𝑥𝑑[𝑛] i 𝑦𝑑[𝑛] , 𝑋𝑑(𝑒𝑗Ω) i 𝑌𝑑(𝑒
𝑗Ω) respektivno.
Slika 16. Na slici je prikazano: a) pregled sistema za semplovanje praćen pretvaranjem u
diskretan signal, b) pregled sistema ya semplovanje praćen pretvaranjem u diskretan signal, c)
izlazna sekvenca za dve različite stope semplovanja.
Za početak, izrazimo 𝑋𝑝(𝑗𝜔), kontinualno-vremensku Furijeovu
transforamaciju signala xp(t):
𝑥𝑝(𝑡) = ∑ 𝑥𝑐(𝑛𝑇)𝛿(𝑡 − 𝑛𝑇)∞
𝑛=−∞
i kako je tranformacija 𝛿(𝑡 − 𝑛𝑇) zapravo 𝑒−𝑗𝜔𝑇, sledi:
𝑋𝑝(𝑗𝜔) = ∑ 𝑥𝑐(𝑛𝑇)𝑒−𝑗𝜔𝑇∞
𝑛=−∞ (*)
- 18 -
Razmotrimo sada Furijeovu transformaciju signala 𝑥𝑑[𝑛]:
𝑋𝑑(𝑒𝑗Ω) = ∑ 𝑥𝑑[𝑛]𝑒
−𝑗Ω𝑛∞
𝑛=−∞
Ili koristeći jednačinu (*)
𝑋𝑑(𝑒𝑗Ω) = ∑ 𝑥𝑐(𝑛𝑇)𝑒
−𝑗Ω𝑛∞
𝑛=−∞
Vidimo da su 𝑋𝑑(𝑒𝑗Ω) i 𝑋𝑝(𝑗𝜔) povezani preko:
𝑋𝑑(𝑒𝑗Ω) = i 𝑋𝑝(𝑗Ω/𝑇)
Takođe, podsećamo da je:
𝑋𝑝(𝑗𝜔) =1
𝑇∑ 𝑋𝑐(𝑗(𝜔 − 𝑘𝜔𝑥)
∞
𝑛=−∞)
Na kraju,
𝑋𝑑(𝑒𝑗Ω) =
1
𝑇∑ 𝑋𝑐 (
𝑗(Ω−2𝑘𝜋)
𝑇)
∞
𝑛=−∞
- 19 -
Slika 17. Na slici je prikazan odnos između 𝑋𝑐(𝑗𝜔), 𝑋𝑝(𝑗𝜔) i 𝑋𝑑(𝑒𝑗Ω) za dve različite frekvencije
semplovanja.
Odnos između 𝑋𝑐(𝑗𝜔), 𝑋𝑝(𝑗𝜔) i 𝑋𝑑(𝑒𝑗Ω) je prikazan na slici 17. za dve
različite frekvencije semplovanja. Ovde je 𝑋𝑑(𝑒𝑗Ω) na manjoj frekvenciji od
𝑋𝑝(𝑗𝜔) i periodičan je u frekventom domenu sa periodom od 2π. Periodičnost je
osobina svake Furijeove transformacije diskretnog signala. Spektar 𝑥𝑑[𝑛] je
povezan sa 𝑥𝑐(𝑡) periodičnom rekonstukcijom predstavljenom na prethodnoj
slici, praćenu linearno frekvencijskim skaliranjem.
Periodična replikacija je posledica prvog koraka u procesu konverzije i
zove se povorka impulsa semplovanja. Linearno frekventno skaliranje može
neformalno da se nazove posledica normalizacije u vremenu predstavljena
konverzijom povorke impulsa 𝑥𝑝(𝑡) u diskretnu vremensku sekvencu 𝑥𝑑[𝑛].
Kao što vidimo na sledećoj ilustraciji, prilikom prolaska kroz diskretni
vremenski sistem, rezultujuća sekvenca je prebačena nazad u kontinualno
vremenski signal. Posebno, od sekvence 𝑦𝑑[𝑛], može biti generisana kontinualna
povorka impulsa 𝑦𝑝(𝑡). Ponovno dobijanje kontinualnog vremenskog signala
𝑦𝑐(𝑡) od njegove povorke impulsa se postiže niskopropusnim filtriranjem kao sto
je prikazano na slici 18.
- 20 -
Slika 18. D/K pretvaranje
Razmotrimo sistem predstavljen na sledećoj slici. Ukoliko je diskretni
sistem identički sistem (𝑥𝑑[𝑛] = 𝑦𝑑[𝑛] ), tada će, ukoliko pretpostavimo da su
ispunjeni uslovi teoreme semplovanja ili Nikvistov kriterijum, ceo sistem biti
identički sistem. Karakteristika ovog sistema je impulsni odziv 𝐻𝑑(𝑒𝑗Ω).
Sistem na slici 19 je zapravo ekvivalentan kontinualnom LTI sistemu sa
impulsnim odzivom 𝐻𝑐(𝑗ω) koji je povezan sa diskretnim impulsnim odzivom
𝐻𝑑(𝑒𝑗Ω) na sledeći način:
𝐻𝑐(𝑗ω) = 𝐻𝑑(𝑒
𝑗ωτ), |𝜔| >𝜔𝑠
2
0, |𝜔| <𝜔𝑠
2
Slika 19. predstavljen je izgled opšteg sisema za filtriranje kontinualnog
vremenskog signala koristeći diskretni filter.
- 21 -
Problemi 7.1 – 7.20
7.1)
Signal sa realnim vrednostima x(t) je jedinstveno određen svojim uzorcima kada
je frekvencija semplovanja ωs = 10,000π. Za koje vrednosti ω važi da je X(jω) = 0?
Rešenje:
Na osnovu Nikvistove teoreme semplovanja, znamo da samo ako je X(jω) = 0 za
|ω| > ωs/2 signal će moći da se rekonstruiše od njegovih uzoraka. Zaključujemo
X(jω) = 0 za |ω| > 5000π.
Scilab kod:
ws = 10000*%pi;
w = ws/2;
printf("X(jw) ce biti jednako 0 za |w| > %f", w);
7.2)
Kontinualni signal x(t) idealnog niskofrekventnog filtera sa graničnom
frekvencijom ωc = 1,000π. Ako se na signal x(t) dovede povorka impulsa, koja od
datih perioda semplovanja obezbeđuje da signal x(t) možemo rekonstruisati na
osnovu njegovih uzoraka koristeći odgovarajući niskopropusni filter?
a) T = 0,5 x 10-3
b) T = 2 x 10-3
c) T = 10-4
Rešenje:
Na osnovu Nikvistove teoreme, znamo da frekvencija semplovanja u ovom
slučaju mora da bude najmanje ωs = 2,000π. Drugim rečima perioda semplovanja
treba da bude najviše T = 2π/ωs = 1 x 10-3. Očito, jedino a) i c) ispunjavaju ovaj
uslov.
- 22 -
Scilab kod:
wc = 1000*%pi;
ws = 2*wc;
T = 2*%pi/ws;
Ta = 0.5*10.^-3;
Tb = 2*10.^-3;
Tc = 10.^-4;
if(Ta < T) then printf("Ta zadovoljava uslov.");..
else printf("Ta ne zadovoljava uslov. ");
end;
if(Tb < T) then printf("Tb zadovoljava uslov.");
else printf("Tb ne zadovoljava uslov.");
end;
if(Tc < T) then printf("Tc zadovoljava uslov.");..
else printf("Tc ne zadovoljava uslov.");
end;
7.3)
Frekvencija koja, po teoremi o semplovanju, mora biti prekoračena od strane
frekvencije semplovanja naziva se Nikvistova stopa. Odretiti Nikvistovu stopu
koja odgovara svakom od sledećih signala:
a) x(t) = 1 + cos(2,000πt) + sin(4,000 πt)
b) x(t) = sin(4,000 πt)/πt
c) x(t) = (sin(4,000 πt)/πt)2
Rešenje:
a) Možemo lako da pokažemo da je X(jω) = 0 za |ω| > 4,000π. Zbog toga,
Nikvistova stopa za ovaj signal je ωN = 2(4,000π) = 8,000π.
Scilab kod
fs = 8000;//po nikvistovom kriterijumu
t = 0 : 1/fs : 1 - 1/fs;
f1 = 1000;//frekvenicja prvog signala
f2 = 2000;//frekvencija drugog signala
x = 1 + cos(2*%pi*f1*t) + sin(2*%pi*f2*t);
X = fft(x);
plot(round(abs(X)));//Furijeova transformacija daje kompleksne
vrednosti, spektar je periodican
- 23 -
//zbog toga sto je sektar simetrican, mozemo posmatrati samo jednu
polovinu
//po nikvistu za |f| > 2000 mora da je X = 0
X = round(abs(X));
count=0;
for i = 2002 : 5001 //uzimamo veci interval da bi ispitali// na 2001 je
if(X(i) == 0) //diskretna vrednost
count = count + 1;
else printf("Ne vazi nikvistova stopa!\n");
break;
end
end
if(count == 3000)//vrednosti u nizu do 5000, koje moraju da budu
jednake 0 da
printf("Vazi nikvistova stopa za zadatu vrednost!\n"); //bi vazila
nikvistova stopa
end
printf("Nikvistova stopa je 8000Pi");
b) Znamo da je X(jω) pravougaoni impuls za koji važi X(jω) = 0 za |ω| >
4000π. Zato, Nikvistova stopa za ovaj signal je ωN = 2(4,000π) = 8,000π.
Scilab kod
fs = 4000;//po nikvistovom kriterijumu
t = 0 : 1/fs : 1 - 1/fs;
f = 2000;//frekvencija signala
for i = 1 : length(t)
if(t(i) <> 0)
x(i) = sin(2*%pi*f*t(i))/(%pi*t(i));
end
end;
for i = 1 : length(t)
if(t(i) <> 0)
X(i) = fft(x(i));
end
end;
X = round(abs(X));
count=0;
for i = 2002 : 3001 //uzimamo veci interval da bi ispitali// na 2001 je
- 24 -
if(X(i) == 0) //diskretna vrednost
count = count + 1;
else printf("Ne vazi nikvistova stopa!\n");
break;
end
end
if(count == 1000)//vrednosti u nizu do 3001, koje moraju da budu
jednake 0 da
printf("Vazi nikvistova stopa za zadatu vrednost!\n"); //bi vazila
nikvistova stopa
end
printf("Nikvistova stopa je 8000Pi");
c) Iz tabela 4.1 i 4.2, znamo da je X(jω) konvolucija dva pravougaona impulsa,
od kojih je svaki 0 za |ω| > 4000π. Zbog toga, X(jω) = 0 za |ω| > 8000π, pa
je Nikvistova stopa za ovaj signal ωN = 2(8,000π) = 16,000π.
Scilab kod
fs = 8000;//po nikvistovom kriterijumu
t = 0 : 1/fs : 1 - 1/fs;
f = 2000;//frekvencija signala
for i = 1 : length(t)
if(t(i) <> 0)
x(i) = sin((2*%pi*f*t(i))/(%pi*t(i)))^2;
end
end;
for i = 1 : length(t)
if(t(i) <> 0)
X(i) = fft(x(i));
end
end;
X = round(abs(X));
count=0;
for i = 4001 : 8000 //uzimamo veci interval da bi ispitali// na 2001 je
if(X(i) == 0) //diskretna vrednost
count = count + 1;
else printf("Ne vazi nikvistova stopa!\n");
break;
end
- 25 -
end
if(count == 4000)//vrednosti u nizu do 8000, koje moraju da budu
jednake 0 da
printf("Vazi nikvistova stopa za zadatu vrednost!\n"); //bi vazila
nikvistova stopa
end
printf("Nikvistova stopa je 16000Pi");
7.4)
Neka je x(t) signal sa Nikvistovom stopom ω0. Odrediti Nikvistovu stopu za svaki
od sledećih signala:
(a) x(t) + x(t-1)
(b) dx(t) / d(t)
(c) x²(t)
(d) x(t)*cos(ω0t)
Rešenje:
Ako x(t) ima Nikvistovu stopu ω0, onda je Furijeova transformacija X(jω) = 0 za
|ω| > ω0/2 :
a) Iz poglavlja 4:
𝑦(𝑡) = 𝑥(𝑡) + 𝑥(𝑡 − 1)𝐹𝑇↔ Y (jω) = X (jω) + 𝑒−𝑗𝜔𝑡 X (jω)
Na osnovu toga jedino možemo da garantujemo da je Y (jω) = 0 za|ω| > ω0/2.
Stoga, Nikvistova stopa za y(t) je takodje ω0.
Scilab kod
clear;
w0=2000*%pi;
f=100;
domain=w0/2;//opseg u kome je Yjw != 0
w=-3000*%pi:f:3000*%pi;
for i=1:length(w)
if(abs(w(i))>domain) then
- 26 -
Yjw(i) = 0;
else Yjw(i)=sin(%i*w(i)) + exp(-(%i*w(i)))*sin(%i*w(i));
end;
end;
for i=1:length(w)
if(abs(w(i))>domain) then//proveravamo da li je Y(jw) = 0 za |w| >
w0/2
if(Yjw(i)==0) then
printf("Uslov je zadovoljen.");
break;
else printf("Uslov nije zadovoljen");
break;
end;
end;
end
title('X(jw)');
ylabel('X(jw)');
xlabel('w');
plot(w,Yjw,'blue');
b) Iz poglavlja 4:
𝑦(𝑡) = d𝑥(𝑡)
d𝑡 𝐹𝑇↔ 𝑌(𝑗𝜔) = 𝑗𝜔𝑋(𝑗𝜔)
Jedino možemo da garantujemo da je Y(jω) = 0 za |ω|> ω0/2. Stoga,
Nikvistova stopa za y(t) je takodje ω0.
Scilab kod
clear;
w0=2000*%pi;
f=100;
domain=w0/2;//opseg u kome je Yjw != 0
w=-3000*%pi:f:3000*%pi;
for i=1:length(w)
if(abs(w(i))>domain) then
Yjw(i) = 0;
else Yjw(i)=%i*w(i)*sin(%i*w(i));
end;
end;
for i=1:length(w)
if(abs(w(i))>domain) then
- 27 -
if(Yjw(i)==0) then
printf("Uslov je zadovoljen.");
break;
else printf("Uslov nije zadovoljen");
break;
end;
end;
end
title('X(jw)');
ylabel('X(jw)');
xlabel('w');
plot(w,Yjw,'blue');
c) Iz poglavlja 4:
𝑦(𝑡) = 𝑥2(𝑡) 𝐹𝑇↔ 𝑌(𝑗𝜔) =
1
2π (𝑋(𝑗𝜔) ∗ 𝑋(𝑗𝜔))
Jedino možemo da garantujemo da je Y(jω) = 0 za |ω| > ω0. Stoga,
Nikvistova stopa za y(t) je 2ω0.
Scilab kod
clear;
w0=2000*%pi;
f=100;
domain=w0/2;//opseg u kome je Yjw != 0
w=-3000*%pi:f:3000*%pi;
for i=1:length(w)
Xjw(i)=(%i*w(i))^2;
end;
Yjw=convol(Xjw,Xjw)/(2*%pi);
for i=1:length(w)
if(abs(w(i))>domain) then
Yjw(i) = 0;
end;
end
for i=1:length(w)
if(abs(w(i))>domain) then//proveravamo da li je Y(jw) = 0 za |w| >
w0/2
if(Yjw(i)==0) then
- 28 -
printf("Uslov je zadovoljen.");
break;
else printf("Uslov nije zadovoljen");
break;
end;
end;
end;
d) Iz poglavlja 4:
y(t) = 𝑥(𝑡)cos(ω0t ) 𝐹𝑇↔ 𝑌(𝑗𝜔) =
1
2(𝑋 (j (𝜔 – 𝜔0)) +
1
2 (𝑋 (j (𝜔 + 𝜔0))
Jedino možemo da garantujemo da je Y(jω) = 0 za |ω| > ω0 + ω0 /2. Stoga,
Nikvistova stopa za y(t) je 3ω0.
Scilab kod
clear;
w0=2000*%pi;
f=100;
domain=w0+w0/2;//opseg u kome je Yjw != 0
w=-5000*%pi:f:5000*%pi;
for i=1:length(w)
if(abs(w(i))>domain) then
Yjw(i) = 0;
else Yjw(i)=0.5*((%i*(w(i) - w0)))^2 + 0.5*((%i*(w(i) - w0)))^2;
end;
end;
for i=1:length(w)
if(abs(w(i))>domain) then//proveravamo da li je Y(jw) = 0 za |w| > w0/2
if(Yjw(i)==0) then
printf("Uslov je zadovoljen.");
break;
else printf("Uslov nije zadovoljen");
break;
end;
end;
end
plot(w,Yjw,'blue');
- 29 -
7.5)
Neka je x(t) signal sa Nikvistovom stopom ω0. Takođe, neka je
y(t)= x(t) * p(t-1),
gde je
𝑝(𝑡) = ∑ 𝛿(𝑡 − 𝑛𝑇), 𝑇 <2π
𝜔0
∞
𝑛=−∞
Navesti ograničenja amplitude i faze frekventne karakteristike filtra koji kada je
na njegov ulaz doveden signal y(t) daje signal x(t) na izlazu.
Rešenje:
Koristeci tabelu 4.2:
𝑝(𝑡) 𝐹𝑇↔ ∑ 𝛿(𝜔 −
2𝜅𝜋
𝛵)
∞
𝜅=−∞
Iz tabele 4.1
𝑝(𝑡 − 1) 𝐹𝑇↔
2𝜋
𝛵 ∑ 𝛿 (𝜔 −
2𝜅𝜋
𝛵)
∞
𝜅=−∞
=2𝜋
𝛵∑ 𝛿 (𝜔 − 𝜅
2𝜋
𝛵) 𝑒−𝑗𝑘
2𝜋7
∞
𝜅=−∞
Kada je y(t) = x(t) p(t-1) imamo:
𝑌(𝑗𝜔) =1
2𝜋 (𝑋(𝑗𝜔) ∗ FT(𝑝(𝑡 − 1))) =
1
𝑇 ∑ 𝑋( 𝑗 (𝜔 − 𝜅
2𝜋
𝛵))𝑒−𝑗𝑘
2𝜋7
∞
𝑘=−∞
Prema tome, Y(jω) se sastoji od replika X(jω) koje su pomerene za 𝑘2𝜋
𝑇, a zatim
su sabrane.
Da bismo dobili x(t) na osnovu y(t) moramo da uzmemo samo jednu repliku
X (jω) iz Y (jω).
- 30 -
Sa slike se može jasno zaključiti da je ovo moguće ako množimo Y(jω) sa
𝐻(𝑗𝜔) = 𝑇, |𝜔| ≤ |𝜔𝑐|0, 𝑢 𝑜𝑠𝑡𝑎𝑙𝑖𝑚 𝑠𝑙𝑢č𝑎𝑗𝑒𝑣𝑖𝑚𝑎
pri čemu je 𝜔0
2 < ωc <
2π
𝑇 -
𝜔0
2
Scilab kod
w = -2:0.01:2;//w0/2 = 2
for i =1: length(w)
x(i) = 2 - abs(w(i));//crtamo trougaoni impuls
end
//crtamo sliku ulaznog signala
subplot(4,1,1);
ylabel('X(jw)');
plot(w,x,'red');//grafik ulaznog signala
//crtamo sliku kada se ulazni signal pomnozi povorkom dirakovih
//impulsa
subplot(4,1,2);
ylabel('Y(jw)');
plot(w,x,'red');//
- 31 -
w1 = 6:0.01:10;//w0 = 8 npr.
plot(w1,x,'blue');
w2 = -10:0.01:-6;
plot(w2,x,'green');
//ponavlja se crtanje za 4,1,3 - sa filtrom
subplot(4,1,3);
ylabel('Y(jw)');
plot(w,x,'red');
w1 = 6:0.01:10;//w0 = 8 npr.
//subplot(4,1,2);
plot(w1,x,'blue');
w2 = -10:0.01:-6;
plot(w2,x,'green');
//simulacija NF filtra
wf = -2:0.01:2;
for i = 1: length(wf)
if(x(i) > 0) then
xf(i) = 2;
else
xf(i) = 0;
end
end
plot(wf, xf, 'yellow');
//isfiltrirani izlazni signal x(t)
ylabel('Y(jw)');
subplot(4,1,4);
ylabel('X(jw)');
plot(w1,x,'red');
- 32 -
7.6)
U sistemu prikazanom na grafiku, dve funkcije u vremenu, x1(t) i x2(t), su
pomnoženi, i proizvod 𝑤(t) je odmeren povorkom periodičnih impulsa. x1(t) je
ogranicen na frekvenicji 𝜔1, i x2(t) je ogranicen na frekvenicji 𝜔2, odnosno,
X1(j𝜔) = 0, |𝜔| ≥ 𝜔1,
X2(𝑗𝜔) = 0, |𝜔| ≥ 𝜔2.
Odrediti maksimalni interval semplovanja T takav da možemo w(t) rekonstruisati
iz wp(t) upotrebom idealnog niskofrekventnog filtera.
Rešenje:
Razmotrimo signal w(t) = x1(t) x2(t). Furijeova transformacija W(j𝜔) signala w(t)
je data sa:
𝑊(𝑗𝜔) = (1
2𝜋) [𝛸1(𝑗𝜔) ∗ 𝛸2(𝑗𝜔)]
- 33 -
Pošto je X1(j𝜔) = 0 za |𝜔| ≥ 𝜔1 i X2(j𝜔) = 0 za |𝜔| ≥ 𝜔2 možemo zaključiti da je
W(j𝜔) = 0 za |𝜔| ≥ 𝜔1 + 𝜔2. Odatle sledi da je Nikvistova stopa za
w(t), 𝜔s = 2(𝜔1 + 𝜔2). Zaključujemo da je maximalna perioda odmeravanja, koja
će i dalje omogućavati rekonsturisanje signala w(t) je T = 2𝜋/(𝜔s) = 𝜋/(𝜔1 + 𝜔2).
Scilab kod
clear; //mnozicemo sin(x) i cos(x)
w1= -1:0.01:1; // ovo je 2000pi
for i=1 : length (w1)
x1(i)=sin(w1(i));
end
/// crtamo prvu sliku za X1(jw)
subplot(3,1,1);
ylabel("X1(jw)");
plot(w1,x1,'red');
///////// za signal X2(jw)
w2= -1:0.01:1; // ovo je 2000pi
for i=1 : length (w2)
x2(i)=cos(w2(i));
end
/// crtamo prvu sliku za X2(jw)
subplot(3,1,2);
ylabel("X2(jw)");
plot(w2,x2,'blue');
//// sad inverznom Furijeovom transformacijom prebacujemo iz frekventnog u
vremenski domen
x1_t=ifft(x1);
x2_t=ifft(x2);
ws=8000*%pi; // ws=2*(w1+w2), gde je w1=2000pi, a w2=2000pi;
Ts=(2*%pi)/ws; // perioda semplovanja
Sampling_time=0.005;
ns=Sampling_time/Ts; // broj uzoraka
- 34 -
for i=1: ns
T=i*Ts; // racunamo za razlicite periode
y(i)=x1_t(i)*x2_t(i); //dato u zadatku
vector_t(i)=T;// u vektoru pamtimo vrednosti perioda
end
// slika br 3:
subplot(3,1,3);
ylabel("w(t)");
plot(vector_t,y,'red');
7.7)
Signal x(t) se propušta kroz pamti-drži kolo sa efektivnom periodom semplovanja
T da bi proizveo signal x0(t). Neka je signal x1(t) rezultat prvostepene pamti-drži
operacije nad odmercima od x(t)
𝑥(𝑡) = ∑ 𝑥(𝑛𝑇)ℎ1(𝑡 − 𝑛𝑇)
∞
𝑛=−∞
gde je h1(t) je funkcija prikazana na grafiku odrediti frekventni odziv filtera koji
na izlazu ima signal x1(t) kada je na ulazu x0(t).
- 35 -
Rešenje:
Znamo da je
𝑥1(𝑡) = ℎ1(𝑡) ∑ 𝑥(𝑛𝑇)𝛿(𝑡 − 𝑛𝑇)
∞
𝑘=−∞
Sa grafika 7.7 iz knjige, znamo da izlaz pamti-drži operacije može biti napisan
na sledeći način:
𝑥(𝑡) = ℎ0(𝑡) ∑ 𝑥(𝑛𝑇)𝛿(𝑡 − 𝑛𝑇)
∞
𝑘=−∞
gde je h0(t) prikazano na grafiku. Primenom Furijeove transformacije na gornje
dve jednačine, dobijamo
𝑋1(𝑗𝜔) = 𝐻1(𝑗𝜔)𝑋𝑝(𝑗𝜔)
𝑋(𝑗𝜔) = 𝐻0(𝑗𝜔)𝑋𝑝(𝑗𝜔)
Sada moramo da odredimo frekventni odgovor Hd(j𝜔) za filter koji na izlazu ima
x1(t) a na ulazu x0(t). Znači, treba nam:
𝑋0(𝑗𝜔)𝐻𝑑(𝑗𝜔) = 𝑋1(𝑗𝜔)
Trougaonu funkciju h1(t) možemo dobiti konvolucijom dva pravougaona impulsa
kao što je prikazano na grafiku.
- 36 -
Prema tome,
ℎ1(𝑡) = (1
√𝑇)ℎ0 (𝑡 +
𝑇
2) ∗ (
1
√𝑇)ℎ0 (𝑡 +
𝑇
2)
Primenimo Furijeovu transformaciju na obe strane gornje jednačine i dobijamo:
𝐻1(𝑗𝜔) =1
𝑇𝑒𝑗𝜔𝑇𝐻0(𝑗𝜔)𝐻0(𝑗𝜔)
Prema tome,
𝑋1(𝑗𝜔) = 𝐻1(𝑗𝜔)𝑋𝑝(𝑗𝜔) =1
𝑇𝑒𝑗𝜔𝑇𝐻0(𝑗𝜔)𝐻0(𝑗𝜔)𝑋𝑝(𝑗𝜔)
=1
𝑇𝑒𝑗𝜔𝑇𝐻0(𝑗𝜔)𝑋0(𝑗𝜔)
I na kraju, rešenje je:
𝐻𝑑(𝑗𝜔) =1
𝑇𝑒𝑗𝜔𝑇𝐻0(𝑗𝜔) = 𝑒
𝑗𝜔𝑇/2 (2 sin (
𝜔𝑇2 )
𝜔𝑇)
Scilab kod:
//Izvodjenja su teorijske prirode, pa se resenje svodi na crtanje Hd(jw)
clear;
t = -0.5:0.01:0.5;//perioda signala T = 1
for i =1: length(t)
if(abs(t(i)) < 0.5) then
xt(i) = 1;
else
xt(i) = 0;
end;
end
lines(0);
subplot(3,1,1);
a=get("current_axes");//ove operacije uzeli smo iz primera sa scilab sajta
https://help.scilab.org/docs/5.3.3/en_US/axes_properties.html
a.axes_visible="on";
a.data_bounds=[0,2;5,2];
ylabel('xt(i)');
plot(t,xt,'red');
- 37 -
//trougaoni signal dobija se konvolucijom dva
//pravougaona signala
y = convol(xt,xt); //delimo sa 100
//da bi se slika videla lepo
t1=-1:0.01:1;
subplot(3,1,2);
ylabel('xt(t)*xt(t)');
a=get("current_axes");
a.axes_visible="on";
a.data_bounds=[0,2;5,2];
plot(t,xt,'red');
a=get("current_axes");
a.axes_visible="on";
a.data_bounds=[0,2;5,2];
plot(t1,y,'green');
y = convol(xt,xt)/100; //delimo sa 100
//da bi se slika videla lepo
t1=-1:0.01:1;
subplot(3,1,3);
ylabel('xt(t)*xt(t)');
a=get("current_axes");
a.axes_visible="on";
a.data_bounds=[0,2;5,2];
plot(t,xt,'red');
a=get("current_axes");
a.axes_visible="on";
a.data_bounds=[0,2;5,2];
plot(t1,y,'green');
scf();
Ts=0.1;
w = linspace(-10,1,10);
hd = exp(((%i*Ts*w)/2))*((2*sin((w*Ts)/2))/(w*Ts));
plot(w,hd);
- 38 -
7.8)
Razmotriti periodičan i realan signal x(t) čiji se Furijeov red može prestaviti kao:
𝑥𝑟(𝑡) =∑(1
2)𝑘
sin (𝑘𝜋𝑡)
5
𝑖=0
Neka je (t) predstavlja signal dobijen uzorkovanjem signala sa periodom
uzorkovanja T = 0.2.
a) Da li se javlja aliasing kada se signal x(t) uzorkuje ?
b) Ako se (t) propusti kroz idealni niskopropustni filtar sa graničnom
frekvencijom 𝜋/𝑇, predstaviti Furijeov red izlaznog signala g(t).
Rešenje:
a) Da, aliasing se pojavljuje u ovom slučaju. Ovo se moze jednostavno pokazati
razmatranjem sinusoidnog signala x(t) za k=5.Ovaj signal je oblika
𝑦(𝑡) = (1
2)5𝑠𝑖𝑛(5𝜋𝑡).
Ako je x(t) semplovan sa periodom T=0.2, onda ćemo uvek semplovati y(t) na
njihovim celobrojnim umnošcima π. Stoga signal y(t) izgleda identično kao si-
gnal oblika (1
2)5sin (0𝜋𝑡) sve vreme u semplovanom signalu. Odatle, sinusoida
y(t) frekvencije 5π se preklapa sa sinusoidom frekvencije 0 u semplovanom sig-
nalu.
Scilab kod
clear;
t=-1:0.01:1;
for i=1:length(t)
yt(i)=((1/2)^5)*sin(5*%pi*t(i));
end
subplot(2,1,1);
plot(t,yt,'red');
for i=1:length(t)
yt1(i)=((1/2)^5)*sin(0*%pi*t(i));
- 39 -
end
subplot(2,1,2);
plot(t,yt1,'blue');
T=0.2;
for i=1:T:length(t)
//zato sto se dobijaju vrednosti priblizne 0
if(round(yt(i))<>round(yt1(i))) then
break;
end;
end
if (i == length(t)) then
printf("Signali se poklapaju.\n");
else
printf("Signali se ne poklapaju.\n");
end
b) Niskofrekventni filter obavija opsegom ograničenu interpolaciju na signalu x(t).
Ali pošto je aliasing već rezultovao gubitkom sinusoide (1
2)5sin (5𝜋𝑡), izlaz će
biti oblika:
𝑥(𝑡) =∑(1
2)𝑘
sin (𝑘𝜋𝑡)
4
𝑖=0
Furijeov red je oblika:
𝑥𝑟(𝑡) = ∑ 𝑎𝑘𝑒−𝑗(
𝑘𝜋𝑡)
4
𝑘=−4
gde je
𝑎𝑘 = 𝑎𝑘 =
0, 𝑘 = 0
−𝑗 (1
2)𝑘+1
, 1 ≤ 𝑘 ≤ 4
𝑗 (1
2)𝑘+1
, −4 ≤ 𝑘 ≤ −1
- 40 -
Scilab kod
clear;
t=-10:0.01:10;
for i=1:length(t)
yt1(i)=((1/2)^0)*sin(0*%pi*t(i));
yt2(i)=((1/2)^1)*sin(1*%pi*t(i));
yt3(i)=((1/2)^2)*sin(2*%pi*t(i));
yt4(i)=((1/2)^3)*sin(3*%pi*t(i));
yt5(i)=((1/2)^4)*sin(4*%pi*t(i));
yt(i) = yt1(1)+yt2(i)+yt3(i)+yt4(i)+yt5(i);
end
plot(t,yt,'blue');
7.9)
Razmotriti signal
𝑥(𝑡) = (sin50πt
πt)2
koji želimo da uzorkujemo sa frekvencijom uzorkovanja 𝜔s = 150π da bi dobili
signal g(t) sa Furijeovom transformacijom G(j𝜔). Pronaći maksimalnu vrednost
za 𝜔0 za koji važi da je
G(j𝜔)=75 X(j𝜔) za |𝜔| ≤ 𝜔0,
gde je X(j𝜔) Furijeova transformacija signala x(t).
Rešenje:
Furijeova transformacija X(j𝜔) signala x(t) je prikazana na slici:
- 41 -
Znamo da je:
𝐺(𝑗𝜔) =1
𝑇∑ 𝑋(𝑗(𝜔 − 𝑘𝜔𝑠))
∞
𝑘=−∞
Gde je T = 2𝜋
𝜔s =
1
75. Stoga G(j𝜔) je prikazan na slici. G (j𝜔) =
1
𝑇 X(j𝜔) = 75 X(j𝜔)
za |𝜔| ≤ 50𝜋
Scilab kod
clear;
T=1/75;
t= -0.1:T:0.1;
num = length(t);
l = -0.1
for i=1:num
xt(i)=((sin(50*%pi*l))/(%pi*l))^2;
l=l+T;//l = t
end
X=fft(xt);//Furijeovom transformacijom prelazimo iz vremenskog u frekventni
domen
G=75*X;//iz uslova da je G(jw) = 75X(jw)
g=ifft(G);//vracamo se u vremenski domen
subplot(2,1,1);
xlabel('t');
ylabel('x(t)');
plot(t,xt,'blue');//signal koji se sempluje
subplot(2,1,2);
xlabel('t');
ylabel('g(t)');//odmerci
plot(t,g,'red');
7.10)
Odrediti da li su sledeci iskazi tačni ili ne:
a) Signal x(t) = u(t + T0) – u(t – T0) moze da bude odmeren povorkom impulsa
bez aliasing – a, ako je period odmeravanja T < 2T0.
b) Signal x(t) sa Furijeovom transformacijom X(j𝜔) = u(𝜔 + 𝜔0) – u(𝜔 – 𝜔0)
može da bude odmeren bez aliasing-a povorkom impulsa, ako je perioda
odmeravanja T < 𝜋/𝜔0.
- 42 -
c) Signal x(t) sa Furijeovom transformacijom X(j𝜔) = u(𝜔) – u(𝜔 – 𝜔0) može da
bude odmeren povorkom impulsa bez aliasing-a, ako je perioda semplovanja
T < 2𝜋/𝜔0.
Rešenje:
a) Znamo da x(t) nije ograničen signal. Prema tome, on ne može biti odmeravan
povorkom impulsa bez aliasing - a.
Scilab kod
plotujemo funkciju x(t), nije moguće ispitati da li je dati signal ograničen
clear;
T=1/100;
t = -10:T:10;
for i=1:length(t)
y(i)=sin(t(i)+T) - sin(t(i)-T);
end
plot(t,y);
b) Iz datog spektra X(jω) jasno je da je signal x(t) ograničen, koji je X(jω) = 0, za
|ω| > ω0. Prema tome, mora da je moguće izvršiti odmeravanje ovog signala
bez aliasinga. Minimalna potrebna stopa odmeravanja bi bila 𝜔s = 2𝜔0
. Znači, period odmeravanja može najviše biti T=2 𝜋 /ωs= 𝜋 / ω0.
Scilab kod
clear;
ws = 2000*%pi;
w0 = ws/2;
T=(2*%pi)/ws;
t=1:T:5;
for i=1:length(t)
w(i) = 2*%pi/t(i);//racunamo vrednosti za frekventni domen
X(i) = cos(w(i) + w0) - cos(w(i)- w0);
end
//plotovanje X(jw)
subplot(2,1,1);
title('X(jw)');
ylabel('X(jw)');
xlabel('w');
plot(w,X,'red');
- 43 -
//plotovanje x(t)
xt=ifft(X);
subplot(2,1,2);
title('x(t)');
ylabel('x(t)');
xlabel('t');
plot(t,xt,'blue');
c) Kada se signal x(t) odmerava sa T=2 𝜋/ω0, signal g(t) ćemo naći korišćenjem
Furijeove transformacije
𝐺(𝑗𝜔) =1
𝑇∑ 𝑋(𝑗(
∞
𝑘= −∞
𝜔 − 𝑘2 𝜋/𝑇)).
Ovo je prikazano na grafiku
Jasno je sa grafika da nije došlo do aliasing – a, i da X(j𝜔) može biti
rekontruisano korišćenjem filtera sa frekventnim odzivom
H(j𝜔) = 𝑇, 0 ≤ 𝜔 ≤ 𝜔00, 𝑠𝑢𝑝𝑟𝑜𝑡𝑛𝑜
- 44 -
Prema tome, dati iskaz je tačan.
Scilab kod
clear;
T= 0.01;
w0=(2*%pi)/T;
t=1:T:5;
for i=1:length(t)
w(i) = 2*%pi/t(i);//racunamo vrednosti za frekventni domen
X(i) = cos(w(i)) - cos(w(i)- w0);
end
//plotovanje X(jw)
subplot(3,1,1);
title('X(jw)');
ylabel('X(jw)');
xlabel('w');
plot(w,X,'red');
//plotovanje x(t)
xt=ifft(X);
subplot(3,1,2);
title('x(t)');
ylabel('x(t)');
xlabel('t');
plot(t,xt,'blue');
//H(jw)
for i=1:length(t)
w(i) = 2*%pi/t(i);
if(0<=w(i)&w(i)<=w0) then
Hjw(i)=T;
else Hjw(i) = 0;
end
end
subplot(3,1,3);
title('H(jw)');
ylabel('H(jw)');
plot(w,Hjw,'green');
- 45 -
7.11)
Neka je signal xi(t) kontinulani signal u vremenu čija Furijeova transformacija ima
osobinu da je X0(j𝜔)=0 za |𝜔| ≥ 2000𝜋. Dobija se diskretan signal u vremenu:
xd[n] = xc(n(0.5 x 10-3))
Za svaku od sledećih zadatih ograničenja Furijeove transformacije Xd(𝑒𝑗𝜔) od
xd[n] odrediti odgovarajuće ograničenje spektra Xc(j𝜔):
(a) Xd(𝑒𝑗𝜔)) je realno
(b) Maksimalna vrednost Xd(𝑒𝑗𝜔)) za sve vrednosti W je 1.
(c) Xd (𝑒𝑗𝜔)) je 0 za 3𝜋
4 ≤ |𝜔| ≤ 𝜋
(d) Xd (𝑒𝑗𝜔)) = Xd (𝑒𝑗(𝜔−𝜋) ))
Rešenje:
Znamo is poglavlja 7.4 da važi
𝑋𝑑(𝑒𝑗𝜔) =1
𝑇∑ 𝑋𝑐 (𝑗 (
𝜔 − 2𝜋𝑘
𝑇))
∞
𝑘=−∞
a) Pošto se )( jd eX formira pomeranjem i sumiranjem replika X(j𝜔), možemo
pretpostaviti da ako je )( jd eX realno, tada je i X(j𝜔) takođe realno.
Scilab kod
clear;
clc;
T=1/5;
f=1/T;
w=-2100*%pi:f:2100*%pi;//kreiramo X0(jw)
for i=1:length(w)
- 46 -
if(abs(w(i))>2000*%pi) then
Xo(i)=0;
else Xo(i)=1;
end
end
subplot(4,1,1);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xo");
ylabel("Xo(jw)");
xlabel("w");
plot(w,Xo,'red');
//dobijamo signal xd[n]
for i=1:length(w)
n(i)=(2*%pi)/w(i);
end
xd=ifft(Xo);
subplot(4,1,2);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("xd");
ylabel("xd[n]");
xlabel("t");
plot(n,xd,'blue');
//iz xd[n] dobijamo Xc(jw)
Xc=fft(xd);
for i=1:length(n)
wn(i)=(2*%pi)/n(i);
end
subplot(4,1,3);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xc");
ylabel("Xc(jw)");
- 47 -
xlabel("w");
plot(wn,Xc,'green');
b) )( jd eX se sastoji od replika X(j𝜔) koje su skalirane za 1/T. Prema tome, ako
)( jd eX ima maximum koji je jednak 1, tada ce X(j𝜔) imati maksimum koji
je jednak T = 0.5 x 10-3 .
Scilab kod
clear;
clc;
T=1/5;
f=1/T;
w=-2100*%pi:f:2100*%pi;//kreiramo X0(jw)
for i=1:length(w)
if(abs(w(i))>2000*%pi) then
Xo(i)=0;
else Xo(i)=1;
end
end
subplot(4,1,1);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xo");
ylabel("Xo(jw)");
xlabel("w");
plot(w,Xo,'red');
//dobijamo signal xd[n]
for i=1:length(w)
n(i)=(2*%pi)/w(i);
end
xd=ifft(Xo);
subplot(4,1,2);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
- 48 -
title("xd");
ylabel("xd[n]");
xlabel("t");
plot(n,xd,'blue');
//iz xd[n] dobijamo Xc(jw)
Xc=fft(xd);
for i=1:length(n)
wn(i)=(2*%pi)/n(i);
end
subplot(4,1,3);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xc");
ylabel("Xc(jw)");
xlabel("w");
plot(wn,Xc,'green');
//sada racunamo Xd(jw) na osnovu formule iz resenja
for i=1:length(wn)
Xd(i)=0;
end
i=1;
for k=1+round((2*%pi)/T):round((2*%pi)/T):length(wn)
Xd(k)= Xc(k-i*round((2*%pi)/T));
i=i+1;
end
Xd(i)=Xd(i)/T;
subplot(4,1,4);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xd");
ylabel("Xd(e^jw)");
xlabel("w");
plot(wn,Xd,'yellow');
max=1;
for i=1:length(wn)
if(Xd(i)>max) then
max=Xd(i);
end;
- 49 -
end
printf("Maksimalna vrednost Xd(jw) je %d\n",max);
c) Interval 3𝜋/4 ≤ |𝜔| ≤ 𝜋 u diskretnom vremenskom domenu odgovara u
kontinualnom vremenskom domenu 3𝜋/(4T) ≤ |ω| ≤ 𝜋/T.Prema tome, ako je
)( jd eX = 0 za 3𝜋/4 ≤ |𝜔| ≤ 𝜋, imamo da je X(j𝜔) = 0 za 1500𝜋 ≤|𝜔|≤ 2000𝜋.
Ali, pošto već imamo da je X(j𝜔) = 0 za |𝜔|≥2000𝜋 imamo i X(j𝜔) = 0 za |𝜔|≥
1500𝜋.
Scilab kod
clear;
clc;
T=1/5;
f=1/T;
w=-2100*%pi:f:2100*%pi;//kreiramo X0(jw)
for i=1:length(w)
if(abs(w(i))>2000*%pi) then
Xo(i)=0;
else Xo(i)=1;
end
end
subplot(4,1,1);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xo");
ylabel("Xo(jw)");
xlabel("w");
plot(w,Xo,'red');
//dobijamo signal xd[n]
for i=1:length(w)
n(i)=(2*%pi)/w(i);
end
xd=ifft(Xo);
subplot(4,1,2);
lines(0);
a=get("current_axes");
- 50 -
a.axes_visible="on";
a.font_size=3;
title("xd");
ylabel("xd[n]");
xlabel("t");
plot(n,xd,'blue');
//iz xd[n] dobijamo Xc(jw)
Xc=fft(xd);
for i=1:length(n)
wn(i)=(2*%pi)/n(i);
end
subplot(4,1,3);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xc");
ylabel("Xc(jw)");
xlabel("w");
plot(wn,Xc,'green');
//sada racunamo Xd(jw) na osnovu formule iz resenja
for i=1:length(wn)
Xd(i)=0;
end
i=1;
for k=1+round((2*%pi)/T):round((2*%pi)/T):length(wn)
Xd(k)= Xc(k-i*round((2*%pi)/T));
i=i+1;
end
Xd(i)=Xd(i)/T;
subplot(4,1,4);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xd");
ylabel("Xd(e^jw)");
xlabel("w");
plot(wn,Xd,'yellow');
true=1;
for i=1:length(wn)
if(Xd(i)>=(3*%pi)/4) then
- 51 -
if(Xd(i)<=%pi) then
if(Xd(i)<>0) then
true=0'
end
end
end
end
if(true=1) then
printf("Uslov je ispunjen.\n");
end
d) U ovom slučaju, pošto je x diskretnom frekventnom domenu odgovara 2000𝜋,
u kontinualnom frekventnom domenu, ovaj uslov se svodi na X(j)=(j(𝜔-
2000 𝜋)).
Scilab kod
clear;
clc;
T=1/5;
f=1/T;
w=-2100*%pi:f:2100*%pi;//kreiramo X0(jw)
for i=1:length(w)
if(abs(w(i))>2000*%pi) then
Xo(i)=0;
else Xo(i)=1;
end
end
subplot(4,1,1);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xo");
ylabel("Xo(jw)");
xlabel("w");
plot(w,Xo,'red');
//dobijamo signal xd[n]
for i=1:length(w)
n(i)=(2*%pi)/w(i);
- 52 -
end
xd=ifft(Xo);
subplot(4,1,2);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("xd");
ylabel("xd[n]");
xlabel("t");
plot(n,xd,'blue');
//iz xd[n] dobijamo Xc(jw)
Xc=fft(xd);
for i=1:length(n)
wn(i)=(2*%pi)/n(i);
end
subplot(4,1,3);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xc");
ylabel("Xc(jw)");
xlabel("w");
plot(wn,Xc,'green');
//sada racunamo Xd(jw) na osnovu formule iz resenja
for i=1:length(wn)
Xd(i)=0;
end
i=1;
for k=1+round((2*%pi)/T):round((2*%pi)/T):length(wn)
Xd(k)= Xc(k-i*round((2*%pi)/T));
i=i+1;
end
Xd(i)=Xd(i)/T;
subplot(4,1,4);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("Xd");
ylabel("Xd(e^jw)");
- 53 -
xlabel("w");
plot(wn,Xd,'yellow');
true=0;
wcheck=0:f:2000*%pi;
for i=1:length(wcheck)
if(wcheck(i)<>wn(i)-2000*%pi) then
true=1;
end
end
if(true==1) then
printf("Uslov je ispunjen.\n");
end
7.12)
Diskretni signal xd[n] ima Furijeovu transformaciju Xd(ejω) sa osobinom da je
Xd(ejω) = 0 za 3π/4 ≤ |ω| ≤ π. Signal je konvertovan u kontinualni signal
𝑥𝑐(𝑡) = 𝑇 ∑ 𝑥𝑑[𝑛]𝑠𝑖𝑛
𝜋𝛵(𝑡 − 𝑛𝑇)
𝜋(𝑡 − 𝑛𝑇)
∞
𝑛 = −∞
gde je T = 10-3 . Odrediti vrednosti ω za koje je Furijeova transformacija Xc(jω)
od xc(t) garantovana da bude nula.
Rešenje
Iz odeljka 7.4, znamo da su diskretne i kontinualne frekvencije Ω i ω u odnosu Ω
= ωT. Zbog toga, u slučaju Ω = 3𝜋
4, nalazimo odgovarajuću vrednost ω =
3𝜋
4
1
𝛵 =
3000π/4 = 750π.
Scilab kod
clear;
- 54 -
clc;
close;
//kreiramo X(jw)
t=-%pi:0.01:%pi;
for i=1:length(t)
if(abs(t(i))<(%pi*3/4)) then
x(i)=1;
else
x(i)=0;
end
end
//crtanje X(e^jw)
subplot(3,1,1);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
a.data_bounds=[0,2;10,2];
xlabel('w');
ylabel('Xd(e^jw)');
plot(t,x);
//sada dobijamo signal xd[n]
y=ifft(x);
T=0.001;
//dobijanje xc(t)
for i=1:length(t)
xc(i)=0;
for n=-1000:1:1000
xc(i)=xc(i)+T*(y(i)*sin(%pi/T)*(t(i)-n*T)/(%pi*(t(i)-n*T)));
end
end
subplot(3,1,2);
lines(0);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
a.data_bounds=[0,2;1,2];
xlabel('t');
ylabel('xc(t)');
- 55 -
plot(t,xc);
subplot(3,1,3);
xlabel('w');
ylabel('Xc(jw)');
//iscrtavanje Xc(jw)
plot(t,fft(xc));
W=(3*%pi)/4;//veliko Omega
w=W/T;
printf("Konacna vrednost w=%d*pi",w/(%pi));
7.13)
Koristeći postupak filtriranja sa slike, pretpostaviti da je perioda semplovanja T i
da je izlaz xc(t) ograničen u frekventnom domenu, tako da je Xc(jω) = 0 za |ω| ≥
π/Τ. Ako za celokupan sistem važi yc(t) = xc(t – 2T), odrediti impulsni odziv h[n]
diskretnog filtera sa slike.
Rešenje
Pretpostavimo da
𝑥𝑐(𝑡) = sin (
𝜋𝑡𝑇 )
𝜋𝑡
Ukupan izlaz je:
𝑦𝑐(𝑡) = 𝑥𝑐(𝑡 − 2𝑇) = sin (
𝜋𝑇(𝑡 − 2𝑇))
𝜋(𝑡 − 2𝑇)
Iz xc(t), dobijamo odgovarajući diskretni signal xd[n]
- 56 -
𝑥𝑑[𝑛] = 𝑥𝑐(𝑛𝑇) =1
𝑇𝛿[𝑛]
Dobijamo takođe iz yc(t), odgovarajući diskretni signal yd[n]
𝑦𝑑[𝑛] = 𝑦𝑐(𝑛𝑇) =sin (𝜋(𝑛 − 2))
𝜋𝛵(𝑛 − 2)
Zapažamo da je desna strana gornjeg izraza uvek nula za n ≠ 2. Kada je n = 2,
možemo da da odredimo vrednost odnosa korišćenjem L’Hospital-ovog pravila, i
on je jednak 1/T. Zbog toga:
𝑦𝑑[𝑛] =1
𝑇𝛿[𝑛 − 2]
Zaključujemo da je impulsni odgovor filtra
ℎ𝑑[𝑛] = 𝛿[𝑛 − 2]
Scilab kod
clear;
clc;
T=1/100;
t=0.1:T:1;
td=0:T:1;
//kreiranje Dirakovog impulsa
for i=1:length(td)
if(td(i)==0) then
d(i)=1;
else d(i)=0;
end
end
subplot(6,1,1);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("d(t)");
xlabel("t");
ylabel("d(t)");
- 57 -
plot(td,d,'yellow');
for i=1:length(t)
xc(i)=sin((%pi*t(i))/T)/(%pi*t(i));
end
subplot(6,1,2);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("xc(t)");
xlabel("t");
ylabel("xc(t)");
plot(t,xc,'blue');
for i=1:length(t)
ty(i)=t(i)-2*T;
yc(i)=sin((%pi*ty(i))/T)/(%pi*ty(i));
end
subplot(6,1,3);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("yc(t)");
xlabel("t");
ylabel("yc(t)");
plot(t,yc,'red');
n=length(td);
for i=1:n
xd(i)=d(i)/T;
end
subplot(6,1,4);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("xd[n]");
xlabel("t");
ylabel("xd[n])");
plot(td,xd,'green');
- 58 -
for i=3:n
yd(i)=d(i-2)/T;
end
subplot(6,1,5);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("yd[n]");
xlabel("t");
ylabel("yd[n])");
plot(td,yd,'black');
for i=3:n
hd(i)=T*yd(i);
end
//impulsni odziv filtra
subplot(6,1,6);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("hd[n]");
xlabel("t");
ylabel("hd[n])");
plot(td,hd,'red');
7.14)
Ponoviti prethodni problem, ali ovaj put pretpostaviti da
𝑦𝑐(𝑡) = 𝑑𝑥𝑐𝑑𝑡
(𝑡 − 𝑇/2)
Rešenje
U ovom primeru pristupamo slično kao u primeru 7.2. Pretpostavljamo da
- 59 -
𝑥𝑐(𝑡) = sin (
𝜋𝑡𝑇 )
𝜋𝑡
Ukupan izlaz je
𝑦𝑐(𝑡) = 𝑑
𝑑𝑡𝑥𝑐 (𝑡 −
𝑇
2) =
(𝜋𝛵)cos (
𝜋𝛵 (𝑡 −
𝑇2))
(𝜋 (𝑡 −𝑇2))
2 −
𝜋𝑠𝑖𝑛 (𝜋𝛵 (𝑡 −
𝑇2))
(𝜋 (𝑡 −𝑇2))
2
Iz xc(t), dobijamo odgovarajući diskretni signal xd[n]
𝑥𝑑[𝑛] = 𝑥𝑐(𝑛𝑇) =1
𝑇𝛿[𝑛]
Takođe, iz yc(t) dobijamo da je odgovarajući diskretni signal yd[n] jednak
𝑦𝑑[𝑛] = 𝑦𝑐(𝑛𝑇) = (𝜋𝛵)cos [𝜋 (𝑛 −
12)]
𝑛𝑇 (𝑛 −12)
− sin [𝜋 (𝑛 −
12)]
𝜋𝑇2 (𝑛 −12)
2
Prvi izraz desne strane gornje jednačine je uvek 0 zato što je cos [𝜋 (𝑛 −1
2)] = 0.
Zato,
𝑦𝑑[𝑛] = −sin [𝜋 (𝑛 −
12)]
𝜋𝑇2 (𝑛 −12)
2
Zaključujemo da je impulsni odgovor filtra
ℎ𝑑[𝑛] = −sin [𝜋 (𝑛 −
12)]
𝜋𝑇 (𝑛 −12)
2
Scilab kod
clear;
clc;
T=1/100;
t=0.1:T:1;
- 60 -
td=0:T:1;
//kreiranje Dirakovog impulsa
for i=1:length(td)
if(td(i)==0) then
d(i)=1;
else d(i)=0;
end
end
subplot(6,1,1);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("d(t)");
xlabel("t");
ylabel("d(t)");
plot(td,d,'yellow');
for i=1:length(t)
xc(i)=sin((%pi*t(i))/T)/(%pi*t(i));
end
subplot(6,1,2);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("xc(t)");
xlabel("t");
ylabel("xc(t)");
plot(t,xc,'blue');
for i=1:length(t)
ty(i)=t(i)-2*T;
yc(i)=((%pi/T)*cos((%pi/T)*(t(i) - T/2)))/(%pi*(t(i) - T/2))^2 -
(%pi*sin((%pi/T)*(t(i)-T/2)))/(%pi*(t(i)-T/2));
end
subplot(6,1,3);
gca();
a=get("current_axes");
a.axes_visible="on";
- 61 -
a.font_size=3;
title("yc(t)");
xlabel("t");
ylabel("yc(t)");
plot(t,yc,'red');
n=length(td);
for i=1:n
xd(i)=d(i)/T;
end
subplot(6,1,4);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("xd[n]");
xlabel("t");
ylabel("xd[n])");
plot(td,xd,'green');
n=1:1:length(t);
for i=1:length(n)
yd(i)=-sin(%pi*(i-0.5))/(i*T*T*(i-0.5)^2);
end
subplot(6,1,5);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("yd[n]");
xlabel("t");
ylabel("yd[n])");
plot(n,yd,'black');
n=1:1:length(t);
for i=1:length(n)
hd(i)=-sin(%pi*(i-0.5))/(i*T*(i-0.5)^2);
end
subplot(6,1,6);
- 62 -
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("hd[n]");
xlabel("t");
ylabel("hd[n])");
plot(n,hd,'black');
7.15)
Povorka impulsa se koristi za uzorkovanje x[n] da bi smo dobili
𝑔[𝑛] = ∑ 𝑥𝑑[𝑛]sin
𝜋𝛵(𝑡 − 𝑛𝑇)
𝜋(𝑡 − 𝑛𝑇)
∞
𝑘= −∞
gde je T = 10-3. Odrediti vrednosti ω za koje je Furijeova transformacija Xc(jω)
signala xc(t) garantovana da bude nula.
Rešenje
U ovom problemu, interesuje nas najniža vrednost x[n] koju možemo semplovati
bez mogućnosti aliasinga. Koristimo pristup iz primera 7.4 da rešimo ovaj
problem. Da bi našli najnižu vrednost najniže vrednosti na kojoj x[n] može biti
semplovano dok u isto vreme izbegavamo mogućnost pojave aliasinga, moramo
naći N tako da
2𝜋
𝑁≥ 2(
3𝜋
7) → 𝑁 ≤
7
3
Dakle, N može najviše biti 2.
Scilab kod
clear;
clc;
//simulacija impulsa x[n]
T=10^-3;
t=1:T:2;
n=1:30;
for i=1:length(n)
- 63 -
if(n(i)>=10&n(i)<=20)
x(i)=1;
else x(i)=0;
end;
end
subplot(2,1,1);
gca();
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("x[n]");
xlabel("t");
ylabel("x[n])");
plot(n,x,'red');
//simulacija g[n]
for i=1:length(n)
g(i)=0;
for k=1:length(n)
g(i)=g(i)+(x(i)*sin((%pi/T)*(t(k)-n(i)*T)))/(%pi*(t(k)-n(i)*T));
end
end
subplot(2,1,2);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("g[n]");
xlabel("t");
ylabel("g[n])");
plot(n,g,'blue');
N=(14*%pi)/(6*%pi);
printf("N moze najvise biti %f",N);
- 64 -
7.16)
Date su sledeće činjenice su za signal x[n] i njegovu Furierovu transformaciju:
1) x[n] je realna funkcija
2) X(𝑒𝑗𝜔) ≠ 0 za 0 < ω < π.
3) x[n] ∑ δ[ 𝑛 − 2𝑘] = 𝛿[𝑛]∞k=−∞
Odrediti x[n]. Bilo bi korisno zapaziti da signal sin𝑛𝜋
2
𝑛𝜋 zadovoljava 2 od 3 uslova.
Rešenje:
Iako signal x1[n] = 2sin𝑛𝜋
2
𝑛𝜋 zadovoljava prvi ι treci uslov, to ne možemo reci i
za drugi uslov. To je zbog toga što Furieova transformacija X1(𝑒𝑗𝜔) ovog signala
je pravougaoni impuls koji je jednak nuli za |ω|<π/2.
Takođe uočavamo i da signal: x[n] = 4 (sin𝑛𝜋
2
𝑛𝜋)2 zadovoljava prvi i treći uslov.
Koristimo činjenicu (Zadatak 7.7) da je konvolucija dva pravougaona signala
zapravo trougaoni impuls koji je različit od nule za 0 ≤ |ω| ≤ π. Prema tome, taj
signal zadovoljava i drugi uslov . Trazeni sinal je 𝑥[𝑛] = 4 sin (𝑛𝜋
2
𝑛𝜋)2
.
Scilab kod
clear;
close;
clc;
W=%pi/2;
w=-5:0.1:5;
for i=1:length(w)
if(w(i) >= -2*%pi -W & w(i) <=-2* %pi +W) then
X(i)=1;
elseif (w(i) >=-W & w(i) <= W)
X(i)=1;
elseif(w(i) >=2* %pi -W & w(i) <=2* %pi +W)
X(i)=1;
else
X(i)=0;
end;
end;
- 65 -
subplot(2, 1, 1);
plot(w, X);
title("X[w]");
n = -6:6;
x=X'*exp(-%i*w'*n);
subplot(2,1, 2);
plot2d3(n,x);
plot(n, x, 'r .');
7.17)
Posmatrajmo idealni diskretni filtar sa impulsnim odzivom h[n] čiji je frekventni
odziv u intervalu –π ≤ ω ≤ π
𝐻(𝑒𝑗𝜔) = 1, |𝜔| ≤
𝜋
4 𝑖 |𝜔| ≥
3𝜋
40, 𝑏𝑖𝑙𝑜 𝑔𝑑𝑒 𝑑𝑟𝑢𝑔𝑑𝑒
Odrediti frekventni odziv filtera čiji je impulsni odziv h[2n]
Rešenje
U ovom problemu, želimo da odredimo efekat desetkovanja impulsnog odziva
datog filtra faktorom 2. Proces desetkovanja može biti podeljen u dva koraka. U
prvom koraku, vršimo uzorkovanje povorkom impulsa funkcije h[n] da bi smo
dobili
ℎ𝑝[𝑛] = ∑ ℎ[2𝑘]𝛿[𝑛 − 2𝑘]
∞
𝑛= −∞
Desetkovana sekvenca se dalje dobija iz
ℎ1[𝑛] = ℎ[2𝑛] = ℎ𝑝[2𝑛]
Furijeovom transformacijom nad hp[n] dobijamo
𝐻𝑝(𝑒𝑗𝜔) =
1
2𝐻(𝑒𝑗𝜔) +
1
2𝐻(𝑒𝑗(𝜔−𝜋))
- 66 -
Ovo je pokazano na slici.
Znamo da je Furijeova transformacija desetkovanog impulsnog odgovora
𝐻1(𝑒𝑗𝜔) = 𝐻𝑝(𝑒
𝑗𝜔2 )
Drugim rečima 𝐻1(𝑒𝑗𝜔) je 𝐻𝑝(𝑒
𝑗𝜔) proširen za faktor 2. Ovo je pokazano na slici
iznad. Dakle, h1[n] = h[2n] je impulsni odgovor idealnog niskopropusnog filtera
sa dobitkom propusnog opsega i prekidnom frekvencijom π/2.
Scilab kod
clear;
clc;
wf1=-%pi:1/100:%pi;
for i=1:length(wf1)
if(abs(wf1(i))<(%pi/4)) then
xf1(i)=1;
else
xf1(i)=0;
end
end
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
a.data_bounds=[0,0;3,2];
plot(wf1,xf1,"red");
wf2=-%pi:1/100:%pi;
for i=1:length(wf2)
if(abs(wf2(i))<(%pi/2)) then
xf2(i)=1/2;
else
xf2(i)=0;
end
end
- 67 -
// slika
plot(wf2,xf2,"black");
7.18)
Pretpostavimo da je impulsni odziv idealnog diskretnog NF filtera sa
frekvencijom odsecanja π/2 interpoliran sa faktorom interpolacije 2.Kakav je
frekventni odziv koji odgovara ovom upsample-ovanom impulsnom odzivu?
Rešenje
Jasno je da interpolacija faktorom 2 kompresuje frekventni odziv za faktor 2.
Interpolacijom takođe dolazi do skaliranja za faktor 2. Dakle, u ovom problemu,
interpolirani impulsni odziv će odgovarati idealnom niskofrekventnom filteru sa
odsečnom frekvencijom π/2 i povećanom propusnom opsegu za 2.
Scilab kod
clear;
clc;
wf1 = -%pi:1/100:%pi;
for i = 1:length(wf1);
if(abs(wf1(i))<(%pi/4)) then
x1(i)=1;
else
x1(i)=0;
end
end
plot(wf1, x1, "r");//iscrtavamo usemplovan signal
wf2=-%pi:1/100:%pi;
for i=1:length(wf2)
if(abs(wf2(i))<(%pi/2)) then
x2(i)=1/2;
else
x2(i)=0;
end
end
plot(wf2, x2, "g");
- 68 -
7.19)
Razmotrimo sistem koji je dat na Slici P7.19, sa ulazom x[n] i sa odgovarajućim
izlazom y[n]. Sistem sa ubacivanjem nula ubacuje 2 tačke sa nultom amplitudom
između svake dve sekvence vrednosti u x[n]. Desetkovanje je definisano sa
y[n] = w[5n],
gde je w[n] ulzna sekvenca za sistem sa desetkovanjem. Ako je ulaz oblika
x[n] = 𝑠𝑖𝑛𝜔1𝑛
𝜋𝑛,
odrediti izlaz y[n] ya sledeće vrednosti 𝜔1:
𝑎) 𝜔1 ≤ 3𝜋
5,
b) 𝜔1 > 3𝜋
5.
Rešenje:
Furijeova transformacija x[n] je data sa
)( jeX 1, |𝜔| ≤ 𝜔1
0, 𝑢 𝑠𝑢𝑝𝑟𝑜𝑡𝑛𝑜𝑚
Ovo je kao što je prikazano na slici.
- 69 -
a) Kada je 𝜔1 ≤ 3𝜋/5, Furijeova transformacija X1 )( je izlaza iz sistema sa
ubacivanjem nula je prikazana na slici. Izlaz W )( je niskofrekventnog filtera
je prikazana na slici. Furijeova transforamcija izlaza sistema za desetkovanje
Y )( je je očekivana ili razvučena verzija W )( je . Ovo je kao što je prikazano
na slici.Prema tome,
𝑦[𝑛] =1
5
sin (5𝜔1𝑛3 )
𝜋𝑛
Scilab kod
T=1/100;
f=1/T;
t=-1:T:1;
for i=1:length(t)
if(t(i)==0) then
w(i)=0;
else
w(i)=(2*%pi)/t(i);
end
end
//kreiranje x(e^jw)
w1=3*%pi/6 //manje od 3pi/2
for i=1:length(w)
if(abs(w(i))<=w1) then
X(i)=1;
else
X(i)=0;
end
end
subplot(2,1,1);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("X(e^jw)");
xlabel("w");
ylabel("X(e^jw)");
plot(w,X,'blue');
t=1:T:2;
//kreiranje y[n]
- 70 -
for i=1:length(t)
y(i)=(1/5)*(sin((5*w1*t(i))/3)/(%pi*t(i)));
end
subplot(2,1,2);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("y[n]");
xlabel("t");
ylabel("y[n]");
plot(t,y,'red');
b) Kada je 𝜔1 > 3𝜋/5 , Furijeova transformacija X1 )( je izlaza iz sistema sa
ubacivanjem nula je prikazana na slici. Izlaz W )( je niskofrekventnog filtera
je prikazana na slici.
Furijeova transforamcija izlaza sistema za desetkovanje Y )( je je očekivana
ili razvučena verzija W )( je . Ovo je kao što je prikazano na slici.
Prema tome:
𝑦[𝑛] =1
5𝛿[𝑛]
Scilab kod
T=1/100;
f=1/T;
t=-1:T:1;
- 71 -
//dirakov impuls
for i=1:length(t)
if(t(i)==0) then
d(i)=1;
else
d(i)=0;
end
end
subplot(3,1,1);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("d[n]");
xlabel("t");
ylabel("d[n]");
plot(t,d,'green');
for i=1:length(t)
if(t(i)==0) then
w(i)=0;
else
w(i)=(2*%pi)/t(i);
end
end
//kreiranje x(e^jw)
w1=3*%pi/6 //manje od 3pi/2
for i=1:length(w)
if(abs(w(i))>w1) then
X(i)=1;
else
X(i)=0;
end
end
subplot(3,1,2);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("X(e^jw)");
xlabel("w");
ylabel("X(e^jw)");
plot(w,X,'blue');
- 72 -
//kreiranje y[n]
y=(1/5)*d;
subplot(3,1,3);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
title("y[n]");
xlabel("t");
ylabel("y[n]");
plot(t,y,'red');
7.20)
Dva vremenski diskretna sistema S1 i S2 su predložena za implementaciju
idealnog nisko-frekventnog filtera sa graničnom frekvenicjom 𝜋/4. Sistem S1 je
predstavljen na slici a. Sistem S2 je predstavljen na b. Na ovim slikama, SA
odgovara sistemu za ubacivanje nula koji ubacuje jednu nulu posle svakog
ulaznog odmerka, dok SB odgovara sistemu desetkovanja koji izvlači svaki drugi
odmerak sa svog ulaza.
a) Da li predloženi sistem S1 odgovara željenom idealnom niskofrekventnom
filteru?
b) Da li predloženi sistem S2 odgovara željenom idealnom niskofrekventnom
filteru?
- 73 -
Rešenje:
a) Pretpostavimo da je )( jeX kao što je prikazano na slici, tada je Furijeova
transformacija XA )( je izlaza SA, Furijeova transformacija X1 )( je izlaza
niskofrekventnog filtera i Furijeova transformacija XB )( je izlaza SB su svi
prikazani ispod. Očigledno ovaj sistem, u potpunosti izvršava zadatak
filtriranja.
- 74 -
Scilab kod
clear;
clc;
T=1/10;
w=-%pi:T:%pi;
for i=1:length(w)
if(w(i)<0) then
x1(i)=w(i)+%pi;
else
x1(i)=-w(i)+%pi;
end
end
subplot(4,1,1);
plot(w,x1,"red");
w1=-0.5*%pi:T:0.5*%pi;
for i=length(w1)
if(w1(i)<0) then
x2(i)=w1(i)+%pi/2;
else
x2(i)=-w1(i)+%pi/2;
end
end
subplot(4,1,2);
plot(w1,x2,"green");
for i=1:length(w1)
w2(i)=w1(i)+%pi;
end
for i=1:length(w1)
w3(i)=w1(1)-%pi;
end
for i=1:length(w)
if w(i)<0 & w(i)>-%pi/2 then
x2(i)=w(i)+%pi;
elseif w(i)>0 & w(i)<%pi/8 then
x2(i)=-w(i)+%pi;
else
- 75 -
x2(i)=0;
end
end
subplot(4,1,3);
plot(w,x2,"blue");
for i=1:length(w)
if w(i)<0 & w(i)>-%pi/4 then
x3(i)=w(i)+%pi;
elseif w(i)>0 & w(i)>%pi/4 then
x3(i)=-w(i)+%pi;
else
x3(i)=0;
end
end
subplot(4,1,4);
plot(w,x3,"green");
b) Pretpostavimo da je )( jeX kao što je prikazano na slici, tada je Furijeova
transformacija XB )( je izlaza SB, Furijeova transformacijaX1 )( je izlaza prvog
filtera i Furijeova transformacija XA )( je izlaza prvog niskofrekventnog filtera
su svi prikazani ispod. Očigledno, ovaj sistem, ne izvršava zadatak filtriranja.
Scilab kod
w=-%pi:0.1:%pi;
for i=1:length(w)
if w(i)<0 then
x(i)=w(i)+%pi;
else
x(i)=-w(i)+%pi;
end
end
subplot(4,1,1);
plot(w,x,"blue");
- 76 -
for i=1:length(w)
w2(i)=w(i)+%pi
end
for i=1:length(w)
w3(i)=w(i)-%pi
end
subplot(4,1,2);
plot(w3,x,"green");
for i=1:length(w)
if abs(w(i))<%pi/2 then
x2(i)=1;
else
x2(i)=0;
end
end
subplot(4,1,3);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
plot(w,x2,"red");
for i=1:length(w)
if abs(w(i))<%pi/4 then
x2(i)=1;
else
x2(i)=0;
end
end
subplot(4,1,4);
lines(0);
a=get("current_axes");
a.axes_visible="on";
a.font_size=3;
plot(w,x2,"green");
- 77 -
Literatura
Alan V. Oppenheim, Alan S. Willsky: Signals and Systems, with S.Hamid
Nawab
Alan V. Oppenheim, Alan S. Willsky: Signals and Systems Solution Manual,
with S.Hamid Nawab
Scilab Code for Signals and Systems by Alan V. Oppenheim, Alan S. Willsky
and S.Hamid Nawab
Lathi, B.P., Principles Of Linear Systems And Signals, Oxford University Press,
2009
Nagrath, I. J., Sharan, S.N.,Ranjan R., Signals And Systems, New Delhi, Tata
McGRaw – Hill Education Pvt. Ltd., 2010.