Digitális jelfeldolgozás eszközei. II. kötet. A jelfeldolgozás szoftver eszközei Matlab gyakorlatok

Hasonló dokumentumok
Indirekt térfogat-vizualizáció. Fourier térfogat-vizualizáció. Tomográfiás rekonstrukció. Radon-transzformáció. A Fourier vetítő sík tétel

Matematika M1 1. zárthelyi megoldások, 2017 tavasz

Híradástechikai jelfeldolgozás

d(f(x), f(y)) q d(x, y), ahol 0 q < 1.

Fuzzy rendszerek. A fuzzy halmaz és a fuzzy logika

VARIANCIAANALÍZIS (szóráselemzés, ANOVA)

4 2 lapultsági együttható =

s n s x A m és az átlag Standard hiba A m becslése Információ tartalom Átlag Konfidencia intervallum Pont becslés Intervallum becslés

Ötvözetek mágneses tulajdonságú fázisainak vizsgálata a hiperbolikus modell alkalmazásával

Statisztikai próbák. Ugyanazon problémára sokszor megvan mindkét eljárás.

Teljes eseményrendszer. Valószínőségszámítás. Példák. Teljes valószínőség tétele. Példa. Bayes tétele

MATEMATIKAI STATISZTIKA KISFELADAT. Feladatlap

ORVOSI STATISZTIKA. Az orvosi statisztika helye. Egyéb példák. Példa: test hőmérséklet. Lehet kérdés? Statisztika. Élettan Anatómia Kémia. Kérdések!

2. gyakorlat Mintavételezés, kvantálás

Minősítéses mérőrendszerek képességvizsgálata

Hipotézis vizsgálatok. Egy példa. Hipotézisek. A megfigyelt változó eloszlása Kérdés: Hatásos a lázcsillapító gyógyszer?

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

Egy negyedrendű rekurzív sorozatcsaládról

Véletlenszám generátorok. 6. előadás

MATLAB. 5. gyakorlat. Polinomok, deriválás, integrálás

8. Programozási tételek felsoroló típusokra

ALAKOS KÖRKÉS PONTOSSÁGI VIZSGÁLATA EXCEL ALAPÚ SZOFTVERREL OKTATÁSI SEGÉDLET. Összeállította: Dr. Szabó Sándor

Digitális jelfeldolgozás

MATLAB alapismeretek III.

Digitális szűrők - (BMEVIMIM278) Házi Feladat

Röntgen diagnosztikai eljárások:

Algoritmusok és adatszerkezetek gyakorlat 09 Rendezések

CRT Monitor gammakarakteriszikájának

10. Alakzatok és minták detektálása

A multikritériumos elemzés célja, alkalmazási területe, adat-transzformációs eljárások, az osztályozási eljárások lényege

Hurokegyenlet alakja, ha az áram irányával megegyező feszültségeséseket tekintjük pozitívnak:

Regresszió. Fő cél: jóslás Történhet:

BUDAPESTI MŰ SZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM KÖZLEKEDÉSMÉRNÖKI ÉS JÁRMŰMÉRNÖKI KAR VASÚTI JÁRMŰVEK ÉS JÁRMŰRENDSZERANALÍZIS TANSZÉK

2. Elméleti összefoglaló

Az entrópia statisztikus értelmezése

Fourier-sorfejtés vizsgálata Négyszögjel sorfejtése, átviteli vizsgálata

Számítógépes gyakorlat MATLAB, Control System Toolbox

Jelgenerálás virtuális eszközökkel. LabVIEW 7.1

Analóg elektronika - laboratóriumi gyakorlatok

63/2004. (VII. 26.) ESzCsM rendelet

Digitális jelfeldolgozás

Darupályák ellenőrző mérése

Orvosi Fizika és Statisztika

NKFP6-BKOMSZ05. Célzott mérőhálózat létrehozása a globális klímaváltozás magyarországi hatásainak nagypontosságú nyomon követésére. II.

Kvantum-tömörítés II.

Analóg-digitális átalakítás. Rencz Márta/ Ress S. Elektronikus Eszközök Tanszék

3. Évközi ellenőrzés módja: 2 zárhelyi dolgozat íratása. 4. A tárgy előírt külső szakmai gyakorlatai: -

A gyakorlat célja a fehér és a színes zaj bemutatása.

Matlab alapok. Baran Ágnes. Grafika. Baran Ágnes Matlab alapok Grafika 1 / 21

Híradástechikai jelfeldolgozás

Elektronika 2. TFBE1302

Analóg digitális átalakítók ELEKTRONIKA_2

Eseményvezérelt szimuláció

KOVÁCS BÉLA, MATEMATIKA I.

Statisztikai. Statisztika Sportszervező BSc képzés (levelező tagozat) Témakörök. Statisztikai alapfogalmak. Statisztika fogalma. Statisztika fogalma

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Digitális jelfeldolgozás

Mintavételezés és AD átalakítók

Biostatisztika e-book Dr. Dinya Elek

Függvények ábrázolása

Jelek és rendszerek 1. 10/9/2011 Dr. Buchman Attila Informatikai Rendszerek és Hálózatok Tanszék

The original laser distance meter. The original laser distance meter

Sorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján

Q 1 D Q 2 (D x) 2 (1.1)

A mágneses tér energiája, állandó mágnesek, erőhatások, veszteségek

Adatelemzés és adatbányászat MSc

Elektromos zajok. Átlagérték Időben változó jel átlagértéke alatt a jel idő szerinti integráljának és a közben eltelt időnek a hányadosát értik:

Optikai elmozdulás érzékelő illesztése STMF4 mikrovezérlőhöz és robot helyzetérzékelése. Szakdolgozat

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

ANTAL Margit. Sapientia - Erdélyi Magyar Tudományegyetem. Jelfeldolgozás. ANTAL Margit. Adminisztratív. Bevezetés. Matematikai alapismeretek.

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei

Integrált rendszerek n é v; dátum

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

TRANSZMULTIPLEXEREK TERVEZÉSI PROBLÉMÁI

IDA ELŐADÁS I. Bolgár Bence október 17.

IT jelű DC/DC kapcsolóüzemű tápegységcsalád

/11 Változtatások joga fenntartva. Kezelési útmutató. UltraGas kondenzációs gázkazán. Az energia megőrzése környezetünk védelme

Elosztott rendszerek játékelméleti elemzése: tervezés és öszönzés. Toka László

minden x D esetén, akkor x 0 -at a függvény maximumhelyének mondjuk, f(x 0 )-at pedig az (abszolút) maximumértékének.

MÓDOSÍTOTT RÉSZLETEZŐ OKIRAT (2) a NAH /2014 nyilvántartási számú (2) akkreditált státuszhoz

Mintavétel: szorzás az idő tartományban

A +Q töltés egy L hosszúságú egyenes szakasz mentén oszlik el egyenletesen (ld ábra ábra

Mérés és adatgyűjtés

Gyakorló többnyire régebbi zh feladatok. Intelligens orvosi műszerek október 2.

1. Jelgenerálás, megjelenítés, jelfeldolgozás alapfunkciói

Tanult nem paraméteres próbák, és hogy milyen probléma megoldására szolgálnak.

Mérés 3 - Ellenörzö mérés - 5. Alakítsunk A-t meg D-t oda-vissza (A/D, D/A átlakító)

Intelligens Rendszerek Elmélete

Periodikus figyelésű készletezési modell megoldása általános feltételek mellett

Leica DISTOTMD510. X310 The original laser distance meter. The original laser distance meter

Első egyéni feladat (Minta)

Sztochasztikus rezonancia vizsgálata a FitzHugh-Nagumo-féle neuron modellben 1/f és fehér zajú gerjesztések esetén

Nagy Gábor compalg.inf.elte.hu/ nagy

1. ábra. 24B-19 feladat

Diszkrét matematika 2.

Függvények december 6. Határozza meg a következő határértékeket! 1. Feladat: x 0 7x 15 x ) = lim. Megoldás: lim. 2. Feladat: lim.

Egyenáramú szervomotor modellezése

Bevezetés a programozásba. 3. Előadás Algoritmusok, tételek

A/D és D/A átalakítók gyakorlat

Átírás:

Gaál József Dgtáls jelfeldolgozás eszköze II. kötet A jelfeldolgozás szoftver eszköze Matlab gyakorlatok KHVM - BMGE HT (2001.) 3. kadás Budapest, 2006.

2/40 Bevezetés 1. Gyakorlat: ARMA jelek dő- és operátortartomány reprezentácónak grafkus vzsgálatára 2. Gyakorlat: Idő- és frekvencatartomány reprezentácók grafkus vzsgálatára 3. Gyakorlat: Sávhatárolt KF jel alul-mntavételezés frekvencájának meghatározása 4. Gyakorlat: Egyenletes és logartmkus kvantálók vzsgálata 5. Gyakorlat: Dfferencáls kódolók vzsgálata

3/40 Bevezetés A dgtáls jelfeldolgozás dszkrét dejű jelenek és rendszerenek analízsét és szntézsét gen hatékonyan támogató lehetőségeket nyújt (a korábban már más tárgyak során megsmert) MATLAB. Ezen tárgy keretében, néhány számítógépterm gyakorlat során pár jellegzetes példa-feladat elkészítésére és működtetésére kerül sor. A gyakorlatok fő célja, hogy kdogozott esetek kapcsán, mntegy példát mutatva segítsen kalakítan azt a készséget, mellyel a későbbekben a mndenkor problémakörhöz lleszkedve mndenk elkészíthet majd a saját feladat-orentált eszközet. Néhány általános tanács: javasolt az on-lne help ntenzív használata a szerszámankat.m fle-ba írjuk folyamatos tesztelés MATLAB command wndow-ban használjuk az autohelp konvencót összetettebb esetben herarchkusan szervezett, egyszerű szerszámokból építsük fel a kísérletenket jól átgondolt nterfésszel (paraméter lstával) szeparáljuk az algortmkus és a megjelenítő, grafkus funkcókat kerüljük a for cklusok használatát, amkor lehet tömb műveleteket és ndex-tömböket alkalmazzunk

4/40 1. Gyakorlat: ARMA jelek dő- és operátortartomány reprezentácónak grafkus vzsgálatára A dszkrét dejű jelek (és rendszerek) dő- és operátortartománybel leírása között közlekedés eszköz a Z-transzformácó és az nverz Z-transzformácó. A dszkrét dejű jeleket az dőtartományban x(n) számsorozatokkal írjuk le (reprezentáljuk), az operátor tartományban pedg valamely körgyűrű felett analtkus X(z), r1< z <r2 komplex függvényekkel. Az ARMA jelek - defnícó szernt - azok a jelek, melyek Z-transzformáltja raconáls törtfüggvény. Ebben az esetben az operátor(z)-tartomány teljes leírást megkapjuk a z változó raconáls törtje nevező és számláló polnomjanak a gyökevel. Tehát az operátor tartományban a grafkus leírás a pólus-zérus ábra. Első lépésként készítsük el a sorozatokat ll. a raconálstörtek pólus-zérus ábrát megjelenítő MATLAB függvényeket. Az xnplot.m fle: functon xnplot(n,x); % xnplot(n,x) % n: ndexek vektora % x: mntak vektora for = 1:3*length(n) nn() = n(1+floor((-1)/3)); end; xx = zeros(sze(nn)); for = 1:length(n) xx(3*-1) = x(); end; plot(nn,xx,'-',n,x,'o'); Egy példa az dősor rajzoló függvény hívására:» n=[-2:10]; x=0.8.^n; xnplot(n,x); A pzabra.m fle:

5/40 functon pzabra(a,b); % pzabra(a,b); pólus-zérus ábra rajzolása % a a számláló (z)polnom együttható (csökkenő hatvány sorrendben) % b a nevező (z)polnom együttható (csökkenő hatvány sorrendben) zk = roots(a); pk = roots(b); m = max([abs(zk);abs(pk);1]); kx = [-m,0,0,0,0,m]; ky = [0,0,m,-m,0,0]; korx = cos([0:2*p/200:2*p]); kory = sn([0:2*p/200:2*p]); plot(korx,kory, -',kx,ky,'-',... real(zk),mag(zk),'o',real(pk),mag(pk),'x'); m = 1.2*m; axs([-m,m,-m,m]); axs('square'); A pzabra.m hívása:» pzabra([1,-1,1],conv([1,0.7,0.49],[1,-1.5])); és az eredménye: A továbbakan készítsük el raconáls tört alakú Z-transzformáltak nverz Z-transzformáltját számító MATLAB függvényt. Feltételezzük, hogy X(z)-nek adott az A(z) számláló, és B(z) nevező polnomja, továbbá adott a ρ konvergenca sugár, melyet tartalmazó körgyűrűhöz, mnt konvergenca tartományhoz tartozó nverz z-transzformáltat akarjuk kszámítan. A továbbakban még feltételezzük, hogy X(z)-nek csak egyszeres pólusa vannak, így alkalmazhatjuk a parcáls törtekre bontás egyszerű esetét.

6/40 X(z) = A(z) B(z) = = = a z b z M j j j N 0 0 ( ) ( ) = = = N j j N M M p z b z z a 1 1, ahol a z -k X(z) zérusa és p j -k X(z) pólusa. Egyszeres pólusok esetén X(z) parcáls törtek összegeként s felírható: = = + = N N M z k p z r 1 0 B(z) A(z) = X(z), ahol { } r z p = = = res X(z) A(p B'(p ) ) továbbá k az (M-N)-ed fokú egészrész polnom együttható, melyek nullák, ha X(z) valód tört. Az r p k számok vektora a MATLAB-ban a resdue utasítással határozhatóak meg. Mvel a z-transzformácó lneárs művelet, a fent összeg tagjanak külön-külön vehetjük az nverz z-transzformáltját, és az így kapott részsorozatokat a végén összegezhetjük. Ezeket a részsorozatokat a geometra sorok összegére vonatkozó tétel segítségével határozzuk meg: { } { } < + + + = > + + + = = = p z p z p p r p z p r p z p z p z p r z p z r z p z r ρ ρ ρ,... 1 1 1,... 1 1, 2 3 1 2 1 1 1 3 2 2 1 1 0 1 1 1 1 Z Z Z Z Z azaz, < < > > < > = = ha 1,, 0, n 0, ha 1, n 0, 0,,, 1 1 1 n n p n p r p n p r z p z r ρ ρ ρ Z

7/40 A fent meggondolások alapján megírhatjuk az alább nvzp függvényt. (A függvény neve végén levő p betűvel azt hangsúlyozzuk, hogy az a és b nput polnomok z poztív hatványahoz tartoznak.) functon x=nvzp(a,b,ro,nl,nu); %functon x=nvz(a,b,ro,nl,nu); % nverz Z transzformaco (z poztv hatvanya szernt tortre) % a: szamlalo a(1)*z^m + a(2)*z^(m-1)+...+a(m+1) % b: nevezo b(1)*z^n + b(2)*z^(n-1)+...+b(n+1) % ro:konvergenca tartomanybel sugar % nl, nu : a kszamtando dotengely felett ndex-ntervallum % x : eredmeny: az nl...nu ndexekhez tartozo domntak sorozata [res,pol,k]=resdue(a,b); f length(pol) == 0 k=a/b(1); end; t=[nl:nu]; % do ndex tomb mask1=sgn(max(zeros(sze(t)),t)); % ro-n belul polus nemnulla mntanak ndexe mask2=-(ones(sze(t))-mask1); % ro-n kvul polus nemnulla mntanak ndexe x=0*t; for =1:length(pol) x=pol()*ones(sze(t)); x=x.^(t-1); f abs(pol()) <= ro x=mask1.*x; else x=mask2.*x; end; x=x+res()*x; end % for nk=length(k); f nk>0 % nem valod tort eseten tovabb kegesztes [w,xw]=add(t,x,[-(nk-1):0],k); [w,x]=mult(w,xw,t,ones(sze(t))); end A fent megoldásban, az egészrészhez tartozó FIR szűrő mpulzusválasz sorozatának meghatározásánál, felhasználtuk az alább két segédfüggvényt, melyet ndekszelt vektorok összeadását és szorzását végzk:

8/40 functon [3,x3]=add(1,x1,2,x2); %functon [3,x3]=add(1,x1,2,x2); % ndexelt vektorok ndex-helyes osszeadasa % 1, 2, 3: ndexek folyamatosan felsorolt vektora % x1, x2, x3: ndexekhez tartozo mntak vektora % ndextartomanyon kvul nulla mntak feltetelezettek % 3: 1 es 2 unoja 3=[mn(1(1),2(1)):max(1(length(1)),2(length(2)))]; x3=zeros(sze(3)); x3(1-3(1)+1)=x3(1-3(1)+1)+x1; x3(2-3(1)+1)=x3(2-3(1)+1)+x2; functon [3,x3]=mult(1,x1,2,x2); %functon [3,x3]=mult(1,x1,2,x2); % ndexelt vektorok ndex-helyes osszeszorzasa % 1, 2, 3: ndexek folyamatosan felsorolt vektora % x1, x2, x3: ndexekhez tartozo mntak vektora % ndextartomanyon kvul nulla mntak feltetelezettek % 3: 1 es 2 metszete l=max(1(1),2(1)); u=mn(1(length(1)),2(length(2))); f u >= l 3=[l:u]; 3s=[1:length(3)]; x3=x1(3(1)-1(1)+3s).*x2(3(1)-2(1)+3s); end; Az eddg eszközenk kényelmes használatát támogatandó, írjuk meg a grafkát vezérlő gnvzp.m fle-t.

9/40 functon x=gnvzp(a,b,r,nl,nu,ny,nx,n) %functon x=gnvzp(a,b,r,nl,nu,ny,nx,n); % nverz Z transzformaco grafkus outputtal % a: szamlalo a(1)*z^m + a(2)*z^(m-1)+...+a(m+1) % b: nevezo b(1)*z^n + b(2)*z^(n-1)+...+b(n+1) % r: konvergenca tartomanybel sugar % nl, nu : a kszamtando dontervallum % ny,nx,n: subplot(ny,nx,n) vezerlo adatok subplot(ny,nx,n); pzabra(a,b); %szoveg=['konvergenca tartomanybel kontursugar: ',num2str(r)]; szoveg=['ro=',num2str(r)]; xlabel(szoveg); ttle('polus-zerus kep'); t=[nl:nu]; x=nvzp(a,b,r,nl,nu); subplot(ny,nx,n+nx); xnplot(t,x); xlabel('idosor'); subplot(111); Ellenőrző és llusztratív példaként vzsgáljuk meg az 2z - 2.5 1 1 X(z) = = + (z - 0.5)(z - 2.0) z - 0.5 z 2.0 esetét ρ = 0.2, 1.0 és 5.0 konvergenca sugarak esetére.

10/40 A három különböző konvergenca gyürűvel kapott eredmények: gnvzp([2,-2.5],conv([1,-0.5],[1,-2]),0.2,-10,10,2,3,1); gnvzp([2,-2.5],conv([1,-0.5],[1,-2]),1.0,-10,10,2,3,2); gnvzp([2,-2.5],conv([1,-0.5],[1,-2]),5.0,-10,10,2,3,3);

11/40 Tanulságos összehasonlításként tt vannak az eredmények a csak egy (az egységsugarú körön belül vagy kívül) pólus esetére s, különböző konvergenca sugarak mellett: gnvzp([1],conv([1,-0.5],[1]),0.2,-10,10,2,4,1); gnvzp([1],conv([1,-0.5],[1]),1.0,-10,10,2,4,2); gnvzp([1],conv([1,-2.0],[1]),1.0,-10,10,2,4,3); gnvzp([1],conv([1,-2.0],[1]),5.0,-10,10,2,4,4);

12/40 2. Gyakorlat: Idő- és frekvencatartomány reprezentácók grafkus vzsgálatára Készítsük el azt a t2f.m nevű szerszámot, mellyel egy fc órajelű, nt vektorban levő dőndexek sorozatához tartozó xt mntavektorok komplex sx Fourer transzformáltját számítjuk k a frekvencatengelyen tetszőlegesen előírható fa-ff ntervallum felett. Az fft eljáráson alapuló számítás frekvenca tengely felett f = fc/nfft felbontását az xt mntavektor hossza határozza meg! t2f.m: functon [ft,sx]=t2f(fc,nt,xt,fa,ff); % Tme to Frequency %[ft,sx]=t2f(fc,nt,xt,fa,ff); % fc: orajel % nt, xt: do-ndex vektor es mnta vektor % fa, ff : a szamtando frekvenca sav % sx-ben a komplex spektrum mntak az ft bel frekvencak szernt % FFT pontszam meghatarozasa nfft = 2^cel(log(length(xt))/log(2)); sx = fft(xt,nfft); % a szamtando frekvenca-ndex ntervallum nf = [round(nfft*fa/fc):round(nfft*ff/fc)]; ft = nf*fc/nfft; % a perodkus spektrum nf felett resze sx = sx(mod(nf,nfft)+1); % az xt mntak dobel helyzetenek megfelelo fazs korrekco sx = sx.* exp(-j*2*p*nt(1)*ft/fc); A fent eljáráshoz felhasználtuk az alább moduló függvényt: mod.m: functon y = mod(x,a); % y = mod(x,a) y = x - a * floor(x/a); Az egyébként sokszor használandó moduló függvényünk tesztelése, llusztrálása az alábbak szernt történhet:» plot([-6:0.01:6],mod([-6:0.01:6],4),'.'); grd;» xlabel('x'); ylabel('y'); ttle('y = mod (x,4)');

13/40 Elkészített eszközünket használjuk fel az dőtartomány ablakolás frekvenca-tartomány következményenek vzsgálatára. pelda21.m naa=-2; naf=2; %ablak ndex hatarok % a jel adata fc=10000; T=1/fc; % orajel na=-200; nf=200; nt=[na:nf]; tt=t*nt; %do tengely xat=sgn(nt-(naa-0.1)); xft=sgn((naf+0.1)-nt); xt=(xat+xft)/2; fgure(1); subplot(211); plot(tt,xt,'-'); xlabel('do'); [ft,sx]=t2f(fc,nt,xt,-fc/2,fc/2); subplot(111); fgure(2); subplot(221); plot(ft,real(sx),'-'); xlabel('frekvenca'); ylabel('real'); subplot(223); plot(ft,mag(sx),'-'); xlabel('frekvenca'); ylabel('mag'); subplot(222); plot(ft,abs(sx),'-'); xlabel('frekvenca'); ylabel('abs'); subplot(224); semlogy(ft,abs(sx),'-'); xlabel('frekvenca'); ylabel('log abs'); subplot(111);

14/40

15/40 Szélesebb ablak: naa=-20; naf=20; %ablak ndex hatarok

16/40 201 mnta szélességű ablak esete: naa=-100; naf=100; %ablak ndex hatarok Megjegyzések: - A képzetes részre kapott eredmény a numerkus pontosságra vonatkozó tájékoztatásként értelmezhető - Tovább ksérletek végezhetőek nem páros függvényű ablakkal - Tovább vzsgálatok: fazs, futás dő karaktersztkák - Tovább vzsgálat: ablakolt sznusz spektruma, rövd dejű burst hullam vzsgálata

17/40 3. Gyakorlat: Sávhatárolt KF jel alul-mntavételezés frekvencájának meghatározása A rádótechnkában gyakran előforduló eset, hogy távközlő csatorna jelét valamely középfrekvencás (KF) sávban dolgozzák fel. A feladatunk, hogy meghatározzuk, melyek az adott csatornaszűrő által meghatározott lehetséges mntavétel frekvencák. Példaként tekntsük az alább sávszűrő karaktersztkát: 10kHz ± 1,5dB 60dB df=20 khz 60dB f0=455 khz df=20khz 445 450 455 460 465 khz Fa=f0-df/2 f0 Ff=f0+df/2 Készítsünk Matlab programot, mely az f0, df paraméterekből a frekvencatengely fsa... fsf ntervalluma felett krajzolja a lehetséges mntavétel frekvencák ndkátor függvényét (1 az érték lehetséges frekvenca felett, nulla egyébként) A program megírása előtt tekntsük át a vonatkozó összefüggéseket: A sávszűrő után maradó spektrum, tehát csak az Fa Ff = df ntervallumban tartalmaz komponenseket: -Ff -Fa Fa Ff Az Fs frekvencájú mntavételezés után spektrum: Fs δ 2 δ 1 δ 1 δ 2 k Fs (k+1)fs f -Ff -Fa Fa Ff

18/40 A mntavett jel perodkus spektrumának átlapolódás mentességéhez szükséges az alább egyenlőtlenség rendszer teljesülése: δ 1, δ 2 > 0 ; k egész ; -Fa + k Fs + δ 1 = Fa -Ff + (k+1) Fs - δ 2 = Ff Fs > 2 (Ff - Fa)=2 df k < 2 Fa/Fs, k > (2 Ff Fs)/Fs, kmax = floor(2 Fa / Fs) kmn =cel((2 Ff Fs)/Fs) = cel (2Fa / Fs (1-2 df /Fs)) Adott Fa, Ff értékek mellett a fent egyenlőtlenségrendszernek csak olyan Fs mntavétel frekvenca értékeknél van egész megoldása k-ra, ahol kmn(fs) >= kmax(fs). Mvel 0 < (1-2 df /Fs) < 1, ezért kmn vagy egyenlő kmax-szal, vagy eggyel nagyobb, tehát a keresett ndkátor függvény: 1+ kmax(fs)-kmn(fs) Ezek után a Matlab program: functon subsamp(f0,df,fsa,fsf); fa=f0-df/2; ff=f0+df/2; f fsa < 2*df fsa=2*df; end; fs=[fsa:(fsf-fsa)/1000:fsf]; kmax=floor(2*fa./fs); kmn=cel(2*ff./fs-1); ke=1+ kmax-kmn; % k engedelyezett ndkatora fgure(1) subplot(211) plot(fs,ke,fs,kmax,fs,kmn); grd; ttle(['f0=',num2str(f0),' Hz df=',num2str(df),' Hz']); xlabel('mntavetel frekvenca (Hz)'); %ylabel('kmax(kek), knm(zold)'); delta1=ke.*(2*fa-kmn.*fs); delta2=-ke.*(2*ff-(kmn+1).*fs); subplot(212) plot(fs, delta1, fs, delta2); grd; xlabel('mntavetel frekvenca (Hz)'); ylabel('delta 1,2 (Hz)'); subplot(111);

19/40 Futtatás eredmények: clear; subsamp(455000,22000,44000); Knagyítva a lehetséges legksebb frekvenca környezete: subsamp(455000,22000,44200,44600);

20/40 A továbbakban vzsgáljuk meg, hogyan kell módosítan a számítást, ha fgyelembe akarjuk venn, hogy nem folytonos dejű (analog) jel mntavételezés frekvencáját kell meghatároznunk, hanem már egy fc előzetes mtavétel frekvencáról (nagyfrekvencán dgtalzált jel) akarunk áttérn egy ksebb alul-mntavételezés frekvencára. Ebben az esetben a lehetséges Fs mntavétel frekvencák, nem a folytonos értékek felett értelmezett ntervallumokban lehetségesek, hanem csak a dszkrét Fs = fc/n szubharmónkus frekvencák közül azok, melyek a korábban megsmert egyenlőtlenség rendszert kelégítk. A módosított MATLAB program: functon subsamp(f0,df,fsa,fsf, fc); fa=f0-df/2; ff=f0+df/2; f fsa < 2*df fsa=2*df; end; fs=[fsa:(fsf-fsa)/1000:fsf]; kmax=floor(2*fa./fs); kmn=cel(2*ff./fs-1); ke=1+ kmax-kmn; % k engedelyezett ndkatora cm=['f0=',num2str(f0),' Hz df=',num2str(df),' Hz']; fgure(1) subplot(211) f nargn > 4 % dszkret frekvencak esete nmax=floor(fc/fsa); nmn=cel(fc/fsf); fsd=fc./[nmax:-1:nmn]; kmaxd=floor(2*fa./fsd); kmnd=cel(2*ff./fsd-1); ked=(1+kmaxd-kmnd); % k engedelyezett dszkret ndkatora plot(fs,ke,fs,kmax,fs,kmn,fsd,2*ked,'x'); grd; ttle([cm, fc=',num2str(fc),' Hz']); else plot(fs,ke,fs,kmax,fs,kmn); grd; ttle(cm); end; xlabel('mntavetel frekvenca (Hz)'); delta1=ke.*(2*fa-kmn.*fs); delta2=-ke.*(2*ff-(kmn+1).*fs); subplot(212) f nargn > 4 delta1d=ked.*(2*fa-kmnd.*fsd); delta2d=-ked.*(2*ff-(kmnd+1).*fsd); plot(fs,delta1,fs,delta2,fsd,delta1d,'x',fsd,delta2d,'x'); grd; else plot(fs, delta1, fs, delta2); grd; end xlabel('mntavetel frekvenca (Hz)'); ylabel('delta 1,2 (Hz)'); subplot(111);

21/40 A kapott eredmények, a KF-jel előzetes 1MHz mntavételezés frekvencán történt dgtalzálása esetén: subsamp(455000,22000,44000,100000,1000000); subsamp(455000,22000,57000,60000,1000000);

22/40 4. Gyakorlat: Egyenletes és logartmkus kvantálók vzsgálata Egyenletes, szmmetrkus, r btes kvantálás karaktersztkát az alább függvénnyel valósíthatunk meg: kvant_e.m functon y = kvant_e(x,r,xmn,xmax); % y = kvant_e(x,r,xmn,xmax); % Egyenletes kvantalo % x: bemenet mntak % r: r btes kvantalas % xmn-xmax: felett egyenletes kvantalo, hba < q/2 % y: kvantalt kmenet mntak l = 2^r; % dontes ntervallumok, szntek szama q = (xmax-xmn)/l; % a kvantalas lepcso % nagy jelu mukodes y = mn(x,(xmax-q/2)*ones(sze(x))); % ks jelu mukodes y = max(y,(xmn+q/2)*ones(sze(y))); % kerektes y = xmn+q/2+q*round((y-(xmn+q/2))/q); 4 btes kvantáló esetére a lépcsős kvantálás karaktersztka és a fűrész alakú hba karaktersztkák az alábbak szernt jeleníthető meg: pelda41.m % Egyenletes kvantalo kvantalas es hba karaktersztkaja; fgure(1); r=4; d=1; x=1.5*[-d:d/300:d]; y=kvant_e(x,r,-d,d); e=y-x; plot(x,y,'-',x,e,'-'); grd; axs('equal');

23/40 Kvantálók mérésére gyakran használunk szélessávú, véletlen jelet. 1000 darab, [-1...+1] ntervallum felett egyenletes eloszlású független véletlen szám x vektorát és a hsztogramját az alábbak szernt álthatjuk elő: pelda41.m (folytatás) % mérő jel x=2*(rand(1,1000)-0.5); fgure(2); hst(x,10); v=axs; axs(1.5*v); A kvantálás torzítás mértékének számítására az alább függvényt használhatjuk: snrdb.m: functon s=snrdb(x,y,d); %s=snrdb(x,y,d); %Az x es az y mntak kozott totorztas jelzajvszonya db-ben. %Az osszetartozo mntak y-ban d-utemmel kesnek lx=length(x); ly=length(y); l=mn(lx,ly-d); e=y(1+d:l+d)-x(1:l); s=(sum(x.*x)/lx)/(sum(e.*e)/l); s=10*log10(s);

24/40 A különböző felbontású (különböző btszámú) egyenletes kvantálók kvantálás torzításának a bemenet jelsznttől való függését az alábbak szernt vzsgálhatjuk meg: pelda41.m (folytatás) ns=40; % a bemenet jelszntek szama szgma=logspace(-4,1,ns); % a bemenet jelszntek erteke % a vzsgalando kvantalo-felbontasok:2,4,6,8,10,12,14,16 bt bts=[4:2:16]; for j=1:length(bts), for =1:ns, xs=szgma()*x; ys=kvant_e(xs,bts(j),-1,1); snr(j,)=snrdb(xs,ys,0); end; %for end; %j % jel/zaj meghatarozasa fgure(3); semlogx(szgma.*szgma,snr,'-'); grd, ylabel('snr(db)'); xlabel('nput level'); for j=1:length(bts), text(szgma(27)*szgma(27),snr(j,27),[num2str(bts(j)),' bt']); end;

25/40 Adott kvantálás dnamkatartomány felett sznt független jel-zaj vszonyt logartmkus kvantálóval érhetünk el. kvant_l.m functon y = kvant_l(x,r,d,ddb); % y = kvant_l(x,r,d,ddb); % logartmkus kvantalo % x: bemenet mntak % r: r btes kvantalas % d: +-d felett logartmkus kvantalas % ddb: a logartmkus kvantalo dnamkatartomanya db-ben % y: kvantalt kmenet mntak l = 2^(r-1); % dontes ntervallumok, szntek szama xmn=10^(-ddb/20); ql = (0-log(xmn))/(l-1); % a kvantalas lepcso y = mn(abs(x/d),ones(sze(x))); y = max( y, xmn*ones(sze(x))); yl=log(y); y = (round((yl)/ql))*ql; % nagy jelu mukodes % ks jelu mukodes % kerektes y = d* sgn(x).*exp(y); Természetesen a logartmkus karaktersztka szernt kvantálást s vsszavezethetjük egyenletes kvantálásra a log() kompander- és exp() expander-karaktersztkák használatával: functon y = kvant_le(x,r,d,ddb); % y = kvant_le(x,r,d,ddb); % szmmetrkus, logartmkus kvantalo % x: bemenet mntak % r: r btes kvantalas % d: +-d felett logartmkus kvantalas % ddb: a logartmkus kvantalo dnamkatartomanya db-ben % y: kvantalt kmenet mntak xmax=d; xmn=d*10^(-ddb/20); lxmax=log(xmax); lxmn=log(xmn); ly=kvant_e(log(abs(x)),r-1,lxmn, lxmax); y=sgn(x).*exp(ly);

26/40 A logartmkus kvantáló kvantálás- és torzítás karaktersztkájának megjenítése: r=4; d=1; ddb=r*6; x=2*[-d:d/500:d]; y=kvant_l(x,r,d,ddb); e=y-x; plot(x,y,'w-',x,e,'w-'); grd; axs('equal'); A jel-zaj vszony sznt-függésének szmulácós vzsgálata: % mérő jel x=2*(rand(1,1000)-0.5); ns=40; xmax=logspace(-4,1,ns); % a bemenet jelszntek erteke bts=[4:2:16]; ddb=100; %nput dnamkatartomany db-ben for j=1:length(bts), for =1:ns, xs=xmax()*x; ys=kvant_le(xs,bts(j),d,ddb); snr(j,)=snrdb(xs,ys,0); end; %for end; %j % a bemenet jelszntek szama fgure(6); semlogx(xmax,max(snr,zeros(sze(snr))),'-'); grd; ylabel('snr(db)'); xlabel('nput level'); for j=1:length(bts), text(szgma(27)*szgma(27),snr(j,27),[num2str(bts(j)),' bt']); end;

27/40

28/40 5. Gyakorlat: Dfferencáls kódolók vzsgálata A MATLAB segítségével végezzük el az alább három hullámforma kódoló-dekódoló (jeldgtalzáló és rekonstruáló) rendszer összehasonlító elemzését. Az első rendszer pusztán egy llesztett kvantáló (a kvantáló dnamka tartománya a kvantálandó jel szórásának a háromszorosa): KÓDOLÓ 1 jel generálás x kvantáló y1 mnősítés: SNR1 A másodk esetben a jel és a predkáltja különbségeként előálló dfferencáls jelet kvantáljuk: KÓDOLÓ 2 jel generálás x predktor d2 - kvantáló d2q predktor y2 mnősítés: SNR2 A harmadk esetben a dfferencáls-predktív kódoló körbe hurkolja a kvantálót: KÓDOLÓ 3 jel generálás x xk d3 - kvantáló predktor w d3q predktor y3 mnősítés: SNR3 Vzsgáló jelként állítsuk elő két sznusz és fehé zaj összegét. A kezdet vzsgálódásanknál zaj mentes esettel foglalkozunk:

29/40 pelda5.m clear; %jeleloalltas fc=8000; dt=1/fc; xn=400; nt=[0:xn]; tt=nt*dt; f1=447; f2=1017; a1=1; a2=1; az=0.0; x=a1*sn(2*p*f1*tt)+a2*sn(2*p*f2*tt)+az*randn(sze(tt)); fgure(1); [ft,sx]=t2f(fc,nt,x,0,fc/2); subplot(211); plot(ft,abs(sx),'-'); xlabel('frekvenca'); ylabel('abs'); subplot(212); semlogy(ft,abs(sx),'-'); xlabel('frekvenca'); ylabel('log abs'); A vzsgáló jel spektruma:

30/40 Az első kódoló vzsgálatához használjuk fel a korábban készített kvant_e.m és snrdb.m eszközenket. pelda5.m (folytatás) % KÓDOLÓ 1 qbt=8; qd=3*std(x); y1=kvant_e(x,qbt,-qd, qd); % mnostes snr1=snrdb(x,y1,0); fgure(2); subplot(211); plot(nt,x,'-',nt,y1,'-'); xlabel('a bemenet es kmenet jelek: x, y1'); subplot(212); plot(nt,y1-x,'-'); xlabel('a hbajel: y1-x'); A kapott jelalakok: és a kapott jel-zaj vszony: SNR1 = 43.29 db.

31/40 A másodk rendszerben a dfferencáls jel előállításához szükséges (negyed fokúnak választott) predktort (a jelet a korább mntából optmálsan megbecslő szűrőt) a MATLAB lpc függvényével határozzuk meg a kódolandó x jelből. Egyúttal krajzoltatjuk az így kapott kódoló P-Z ábráját s. pelda5.m (folytatás) % KODOLO 2 npred=4; pn=real(lpc(x,npred)); fgure(3); subplot(111); pzabra(pn,1); xlabel('lpc kodolo transzferfuggvenye'); % 4-ed foku predktor tervezes Fgyeljuk meg, hogy a kódoló zérusa közel vannak a predkálandó jelben lévő sznuszok frekvencájához.» (447/8000)*360 = 20.1150 fok és» (1017/8000)*360 = 45.7650 fok

32/40 A másodk kódoló analízse: pelda5.m (folytatás) d2=flter(pn,[1],x); %dfferenca kepzes qd=3*std(d2); % az llesztett kvantalo dnamtartomanya d2q=kvant_e(d2,qbt,-qd,qd); %kvantalas y2=flter([1],pn,d2q); %dfferencals jelbol vsszalltas %mnostes ndex=[100:length(x)]; snr2=snrdb(x(ndex),y2(ndex),0); gp=10*log10((sum(x.*x)/length(x))/(sum(d2.*d2)/length(d2))); fgure(4); subplot(221); plot(nt,x,'-'); xlabel('a bemenet jel: x'); subplot(222); plot(nt,y2,'-'); xlabel('a kmenet jel: y2'); subplot(223); plot(nt,d2,'-'); xlabel('a dfferencals jel: d2'); subplot(224); plot(nt,y2-x,'-'); xlabel('a hbajel: y2-x'); A kapott jelalakok: A rendszert mnősítő SNR2 érték számításánál a tranzens mntákat fgyelmen kívül hagytuk. A kapott SNR2 = 43.44dB

33/40 érték lényegében ugyan anny, mnt az előző egyszerű esetben, pedg a dfferencáls kódolótól várható predkcós nyereség számított értéke (az eredet x jel és a kvantálandó d2 jel teljesítményenek hányadosa): Gp = 19.72 db, azaz ezzel az értékkel megnővelt SNR lenne elérhető. Természetesen ez az elv lehetőség csak akkor realzálható, ha a predktv hurok közrefogja a kvantálót. Ezen meggondolások szernt épül fel a harmadk kódoló. pelda5.m (folytatás) % KODOLO 3 w=zeros(1,npred); % predktor allapotvaltozonak ncalzalasa % rekurzv rendszer for 1=npred:length(x), xk=-pn(2:npred+1)*w(1:npred)'; % predkco d3(1)=x(1)-xk; % dfferenca kepzes d3q(1)=kvant_e(d3(1),qbt,-qd,qd); % kvantalas w=[d3q(1)+xk,w(1:(npred-1))]; % predktor allapot update end; y3=flter([1],pn,d3q); %dfferencals jelbol vsszalltas %mnostes ndex=[100:length(x)]; snr3=snrdb(x(ndex),y3(ndex),0); fgure(5); subplot(221); plot(nt,x,'-'); xlabel('a bemenet jel: x'); subplot(222); plot(nt,y3,'-'); xlabel('a kmenet jel: y3'); subplot(223); plot(nt,d3,'-'); xlabel('a dfferencals jel: d3'); subplot(224); plot(nt,y3-x,'-'); xlabel('a hbajel: y3-x'); Összegező adatok, hsztogrammok kírása: pelda5.m (folytatás) dsp(['snr1=',num2str(snr1),'db ','snr2=',num2str(snr2),'db ',... 'snr3=',num2str(snr3),'db ','Gp=',num2str(gp),'dB ' ]); fgure(6); subplot(221); [nn,hh]=hst(x); bar(hh,nn,'-');xlabel('x hsztogram'); subplot(223); [nn,hh]=hst(d2); bar(hh,nn,'-'); xlabel('d2 hsztogram'); subplot(224); [nn,hh]=hst(d3); bar(hh,nn,'-'); xlabel('d3 hsztogram'); A kapott eredmények és ábrák: SNR1=43.29dB SNR2=43.44dB SNR3=-14.78dB Gp=19.72dB

34/40

35/40 Mnt több jelből látható, valam nagy baj van, a rendszer "gerjed": SNR3=-14.78dB! értelmetlenség a dfferencáls- (d3) és a hbajel (y3-x) "felcseng", sokkal nagyobb mnt maga az eredet jel A helytelen működés oka, a kvantáló nagyjelű nemlneartásában (lmter karaktersztka) keresendő. Ennek bzonyítására, deglenesen módosítsuk a kvant_e.m függvényünket úgy, hogy a nagyjelű lmtálást "kkapcsoljuk", azza mnden bemenetre csak kerekítést végez a kvantáló: kvant_e.m (deglenesen módosítva) functon y = kvant_e(x,r,xmn,xmax); % y = kvant_e(x,r,xmn,xmax); % Egyenletes kvantalo % x: bemenet mntak % r: r btes kvantalas % xmn-xmax: felett egyenletes kvantalo, hba < q/2 % y: kvantalt kmenet mntak l = 2^r; % dontes ntervallumok, szntek szama q = (xmax-xmn)/l; % a kvantalas lepcso % nagy jelu mukodes %%%% y = mn(x,(xmax-q/2)*ones(sze(x))); % ks jelu mukodes %%%% y = max(y,(xmn+q/2)*ones(sze(y))); % kerektes y = xmn+q/2+q*round((y-(xmn+q/2))/q); Ezek után újrafuttatva a pelda5.m programot, az alábbak szernt eredményeket kapjuk: SNR1=43.29dB SNR2=43.51dB SNR3=62.87dB Gp=19.72dB Most már SNR3 értelmes (a Gp predkcós nyereséggel megnövelt) értéket ért el. A kapott ábrák:

36/40 Tehát, am a jeleket llet, most már mnden az elvárások szernt alakult. Ez a ksérlet, természetesen nem megoldása a predkcós kódoló müködésének, csupán azt bzonyítottuk, hogy a fxen a d2 dfferencáls jelhez (,mely a fnom kvantálástól eltekntve ugyan az, mnt a d3 dfferencáls jel és staconer esetben gen ks jel) llesztett ks dnamka tartományú kvantáló a bekapcsoláskor (és a tranzens elején) olyan nagy túlvezérlést kap, hogy az ekkor keletkező jelekre a nemlnárs, vsszacsatolt rendszer nagyjelű, határcklusos gerjedést produkál. A valód megoldás skálázófaktor-adaptv kvantáló alkalmazása a vsszacsatolt hurkon belül. Ennek az elgondolásnak a MATLAB-bel mplementácóját a korább pelda5.m program megfelelő helyének az alább módosításával készíthetjük el:

37/40 pelda5.m (kegészítve adaptív kvantálóval) % KODOLO 3. w=zeros(1,npred); powd3=1; alfa=2^(-5); % adaptalas ncalzalasa % rekurzv rendszer for 1=npred:length(x), xk=-pn(2:npred+1)*w(1:npred)'; % predkco d3(1)=x(1)-xk; % dfferenca kepzes % Adaptv kvantalo powd3=(1-alfa)*powd3 + alfa*d3(1)*d3(1); qd=3*sqrt(powd3); d3q(1)=kvant_e(d3(1),qbt,-qd, qd); % kvantalas w=[d3q(1)+xk,w(1:(npred-1))]; % predktor allapot update end; y3=flter([1],pn,d3q); %dfferencals jelbol vsszalltas A ksérlet újra futtatásánál ne felejtsük el kvant_e.m eredet működését vsszaállítan! A kapott eredmények: SNR1=43.29dB SNR2=43.51dB SNR3=63.4dB Gp=19.72dB Az edg vzsgálatoknál a kódólandó jelnek csak keskenysávú (sznuszos) összetevő voltak.

38/40 Az alábbak szernt módosítva pelda5.m flet futtassuk újra a MATLAB programunkat. pelda5.m (adat módsításs) %a1=1; a2=1; az=0.0; a1=1; a2=1; az=0.2; A keskeny és szélessávú (feher zaj) összetevőt s tartalmazó bemenő jel spektruma: A következő oldalon a KODOLÓ 1. kmenő jelét és hba jelét látjuk.

39/40 A dfferencáls kódolók predktoranak zérusa a zaj öszetevő megjelenésének hatására az ábrán látható módon változtak. A KÓDOLÓ3 jele:

40/40 Hsztogrammok: Végezetül a jel/zaj értékek: SNR1=43.32dB SNR2=42.4dB SNR3=50.92dB Gp=7.374dB