Oefeningenbundel Systeemtheorie 1. Basisbegrippen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1 De functie dB(x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Root Mean Square . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Een beetje theorie: de Discrete Fourier Transformatie . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Lineaire systemen en niet-ideaal gedrag . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.1 Commutativiteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Lineariteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Meten van het impulsantwoord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.1 Intermezzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 Metingen in aanwezigheid van stoorruis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4. Transferfunctiemetingen met sinussen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 5. Transferfunctiemetingen: Impuls vs. multisinus . . . . . . . . . . . . . . . . . . . . . . 8 6. Transferfunctiemetingen met ruis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 7. Lijst met handige Matlab routines bij het oplossen van de oefeningen . . . . . 10 Systeemtheorie oefeningen p. 1/10 1. Basisbegrippen 1.1 De functie dB(x) Deze functie wordt als volgt gedefinieerd: dB ( x ) = 20 log 10 ( x ) Getallen worden uitgedrukt in dB wanneer er sprake is van een reeks getallen met een grote dynamiek (d.w.z. tegelijk zeer grote en zeer kleine getallen in een zelfde dataset). Deze eenheid wordt dikwijls gebruikt bij het voorstellen van spectra en transferfuncties (bv. Bode- en Nicholsdiagrammen). Oef. 1. Test deze ingebouwde Matlab functie uit met de volgende voorbeelden: 1. dB(1) = ? 2. dB(10) = ? 3. dB( 2 ) = ? Dit zijn getallen die je als ingenieur nog van pas gaan komen. 1.2 Root Mean Square De Root Mean Square of RMS waarde van een signaal is een maat voor de amplitude van dit signaal. Deze functie, die we o.a. zullen gebruiken om signalen te normaliseren, wordt voor een signaal x bestaande uit N tijdspunten gedefinieerd als N rms ( x ) = 12 --x( i) N∑ i=1 Het vermogen van het signaal x wordt gegeven door rms(x)^2. Oef. 2. Implementeer de functie rms(x). Opmerking: Het is gebruikelijk om data (in dit geval het signaal x) in Matlab op te slaan als kolomvectoren, niet als rijvectoren. (d.w.z. N × 1 i.p.v. 1 × N ). Oef. 3. Bereken een sinus-signaal (met amplitude A = 1 en fase φ = 0 ) bestaande uit... 1. één periode van 16 punten 2. twee periodes van 16 punten (dus in totaal 32 punten) Gebruik hiervoor de volgende uitdrukkingen: x continu(t) = A sin ( 2πft + φ ) x(n) = x continu(nT s) = x continu(--n-) fs Je mag hier onderstellen dat de sample frequentie f s = 1 Hz . Het komt er dus op aan f zodanig te kiezen dan je met 16 punten 1 periode doorloopt. Let erop dat je signalen perfect periodiek zijn. Ter controle plot je het signaal enkele keren herhaald na elkaar. 3. Bereken de RMS waarde en het vermogen van deze signalen. Is er een verschil in RMS waarde tussen de signalen van 1. en 2.? Verklaar. 4. Bereken nu de Discrete Fourier Transformatie (DFT) van deze signalen met behulp van de functie fft van Matlab, en plot de spectra onder elkaar (met stem en subplot). Vergeet bij het plotten niet dat je met een complex signaal te doen hebt, waarvan voorlopig enkel de amplitude van belang is. De vector die de functie fft teruggeeft bevat eerst de DC component, daarna de positieve helft van het spectrum, en uiteindelijk de negatieve helft. Om de interpretatie van deze spectra te vereenvoudigen voeg je een Systeemtheorie oefeningen p. 2/10 correcte frequentie-as toe (onderstel een genormaliseerde samplefrequentie: f s = 1 Hz ). Wat is het verschil tussen de spectra uit 1. en 2.? Wat concludeer je hieruit? Oef. 4. Schrijf een functie plotspectrum die van een willekeurig signaal het amplitudespectrum plot in dB’s (gebruik hiervoor plot i.p.v. stem), inclusief correcte frequentie-as. Benoem ook de assen a.h.v. functies xlabel en ylabel. Oef. 5. Schrijf een functie maakSinus(N,f) die voor een gegeven aantal punten N en een gegeven frequentie f (relatief tot f s ) een sinus genereert. Probeer dan het volgende: >> subplot(2,1,1); plotspectrum(maakSinus(64, 1/64)); >> subplot(2,1,2); plotspectrum(maakSinus(64, 5/64)); Je kan met deze functie dus een willekeurige zogenaamde “bin” (component in het digitale frequentiedomein) aanslaan. Oef. 6. Een impulssignaal wordt in het discrete tijdsdomein gedefinieerd als een sample gelijk aan 1, gevolgd door een aantal nulsamples. Schrijf een functie impuls(N), met als parameter N de totale lengte van het impulssignaal. Plot het amplitudespectrum van een impuls-signaal. Verklaar wat je ziet. 1.3 Een beetje theorie: de Discrete Fourier Transformatie Definitie Als een signaal x(n) slechts gekend is op de discrete tijdspunten (of zgn. samples) n = 0…N – 1 (zoals dit hier het geval is), is het onmogelijk om de continue-tijds-Fourierintegraal te gebruiken ter bepaling van het spectrum. Hiertoe maakt men gebruik van de Z-getransformeerde van het signaal x(n) , gegeven door: X(z) = +∞ ∑n = –∞ x(n)z –n Hierin is z een complexe veranderlijke, naar analogie met s voor de Laplace-getransformeerde in continue tijd. Om over te gaan op de Discrete Fourier Transformatie (DFT) gaat men als volgt te werk: a) Omdat enkel x(0)…x(N – 1) gekend zijn, laat men alle andere termen vallen. b) Omdat z een complexe grootheid is, evalueert men X(z) in N uniform verdeelde punten op de discrete eenheidscirkel (het discrete equivalent van de imaginaire as in het s-vlak): z k = exp ( jΩ k ) = exp ( j2πk ⁄ N ) met j = –1 Im ( z ) z-vlak z2 z1 z0 = 1 Re ( z ) zN – 1 Figuur 1: De Discrete Fourier Transformatie bekomen door N uniform verdeelde punten op de eenheidscirkel in het z-vlak ( N = 18 ) In de bovenstaande uitdrukking stelt men een periodiciteit vast in de zgn. (frequentie)index k (ook binnummer genoemd): z k + N = z k . Daarom beperkt men zich tot de binnummers k = 0…N – 1 . Bijgevolg definieert men de volgende uitdrukking als de DFT van het signaal x(n) op bin k : X(z k) = N–1 –n ∑n = 0 x(n)zk Systeemtheorie oefeningen p. 3/10 Merk op dat – in de veronderstelling dat x(n) reëel is – de DFT op bin k en op bin – k complex toegevoegd is1. Vanwege de periodiciteit in k geldt: X(z k) = X(z –k) = X(z N – k) , en vindt men dezelfde informatie (op het complex toevoegen na) op bin N – k en bin k . Daarom volstaat het in de meeste gevallen om de eerste helft van de DFT te gebruiken. Interpretatie en terminologie De DFT geeft de frequentie-inhoud (of spectrale inhoud) weer van het signaal x(n) . Dit ziet men ook aan de hand van de inverse transformatieformule, gegeven door: 1 N–1 n x(n) = ---- ∑ X(z k)z k k = 0 N 1 N–1 X(z k) exp ( jΩ k n ) = ---- ∑ N k=0 Het signaal is dus ontwikkeld in een gewogen som van complexe sinusoïden, met als gewichten de DFT op de respectievelijke bins. De DFT op frequentie-index k geeft dus aan hoeveel de sinusoïde n z k = exp ( jΩ k n ) meeweegt in x(n) . Ω k = 2πk ⁄ N wordt discrete pulsatie genoemd (uitgedrukt in radialen per sample) en komt overeen met de positie (hoek) op de eenheidscirkel.2 Op binnummer k = 0 vindt men de constante bijdrage (DCcomponent) van x(n) . De bekomen frequentie-resolutie is de afstand tussen twee opeenvolgende bins ∆k = 1 : ∆Ω = Ω k + 1 – Ω k = 2π ⁄ N rad/sample (wat overeenkomt met: ∆f = f k + 1 – f k = 1 ⁄ N ). De periode van de DFT over k , Ω , en f , is respectievelijk gelijk aan N , 2π en 1 . 1. z – k = exp ( – j2πk ⁄ N ) = z k , waarbij met z het complex toegevoegde van z bedoeld wordt. Maakt men van deze eigenschap gebruik, dan vindt men: X(z –k) = N–1 –n ∑n = 0 x(n)z–k n = N–1 ∑n = 0 x(n)( zk ) n+N⁄k 2. De periode van deze sinusoïde is T k = N ⁄ k samples (want z k = z k frequentie van de sinusoïde is f k = Ωk ⁄ ( 2π ) = –1 Tk = k⁄N. Systeemtheorie oefeningen p. 4/10 –n = N–1 –n ∑n = 0 x(n)zk = X(z k) . ). De (discrete of genormaliseerde) 2. Lineaire systemen en niet-ideaal gedrag In de volgende oefeningen zullen we twee systemen gebruiken: dutResp1 en dutResp2 (DUT = Device Under Test) en daarvan het (niet)lineair gedrag onderzoeken. Het aanroepen van de functies die deze systemen simuleren gebeurt als volgt: >> [xm, ym] = dutResp1(u); ideal case De parameter u is een vector met het aan te leggen ingangssignaal (excitatie). Het resultaat van dutResp zijn twee vectoren die aangeven wat aan de ingang (xm) en de uitgang (ym) van het systeem gemeten wordt. 1 u Generator DUT On:16 NL:8 2 4 xm ym Figuur 2: dutResp en de niet-idealiteiten Een tweede, optionele parameter bepaalt welke niet-idealiteiten (die voorkomen in reële meetsituaties) meegesimuleerd worden: >> [xm, ym] = dutResp2(u,11); generator noise, input noise, nonlinear distortion De parameters worden samengevat in Tabel 1: Tabel 1: Niet-idealiteiten in dutResp Generator noise Input noise 1 Ruis aan de uitgang van de generator, bv. aanwezig in een versterker. 2 Het ingangssignaal dat werkelijk wordt aangelegd aan het Device Under Test (DUT) wordt gemeten (xm) en is onderhevig aan meetruis. Output noise 4 Het signaal dat uit het DUT komt (ym), wordt gemeten en is onderhevig aan meetruis. Nonlinear distortion 8 De meeste systemen zijn niet zuiver lineair. Met deze optie schakel je in de DUT een zwakke niet-lineariteit in. Actuator dynamics 16 De generator heeft slechts een beperkte bandbreedte. Dit wordt gesimuleerd door een lineair systeem tussen generator en DUT. Het getal in de tweede kolom geeft aan hoe een niet-idealiteit wordt ingeschakeld: 8 + 2 + 1 = 11 betekent bijvoorbeeld dat er generator- en meetruis aan de ingang aanwezig is, evenals niet-lineaire distorsie. De routine print op het scherm welke niet-idealiteiten worden gebruikt. Wijzig eventueel het pad van Matlab (met File, Set Path... of addpath) om in een ander directory te kunnen werken dan waar de functies dutResp1 en dutResp2 gedefinieerd staan. 2.1 Commutativiteit Dit betekent dat de volgorde waarin de operaties worden uitgevoerd geen invloed heeft op het eindresultaat. Oef. 7. Ga na of de twee systemen dutResp1(u,0) en dutResp2(u,0) commutatief zijn a.h.v. een testsignaal. Opgelet: de gemeten uitgang is de tweede output-parameter van de functie dutResp1 of dutResp2. 2.2 Lineariteit Een functie f ( x ) is lineair (strict wiskundig spreekt men van affien) indien f ( αx + βy ) = αf ( x ) + βf ( y ) Oef. 8. Ga na of de ideale systemen dutResp1(u,0) en dutResp2(u,0) lineair zijn met behulp van de functie maakSinus. Probeer dit ook voor dutResp2(u,8) met verschillende amplitudes, die je combineert op één figuur met subplot. Onder welke voorwaarde kan dutResp2(u,8) als quasi lineair beschouwd worden? Kijk voor een grote amplitude ook naar het uitgangsspectrum t.g.v. een sinus. Systeemtheorie oefeningen p. 5/10 3. Meten van het impulsantwoord Oef. 9. Meet het impulsantwoord van dutResp1 (ideaal geval). Hoe kun je zien of je lang genoeg meet? Oef. 10. Gebruik het impulsantwoord gecombineerd met de DFT om de transferfunctie te schatten. Bekijk de invloed van het aantal punten van de impuls. Vergelijk de resultaten met de ‘echte transferfunctie’ die je kan benaderen door een zeer hoog aantal meetpunten te gebruiken (N = 215). 3.1 Intermezzo Als je de transferfunctie bekijkt van dutResp1, is het moeilijk om daar op het eerste zicht een eerste orde systeem in te herkennen. Schrijf op basis van plotspectrum een routine plotspectrumlog die enkel de positieve helft van het spectrum plot, met een logaritmisch geschaalde frequentieas. Maak hiertoe behulp van de ingebouwde Matlab functie semilogx. Oef. 11. Herhaal Oefening 9 en Oefening 10 voor dutResp2. Is dit ook een eerste orde systeem? 3.2 Metingen in aanwezigheid van stoorruis Oef. 12. Meet het impulsantwoord in aanwezigheid van ruis, en bereken hieruit de transferfunctie. Plot deze samen met de transferfunctie van Oefening 11. >> [xm, ym] = dutResp2(u,7); Wat zijn de gevolgen van de aanwezigheid van stoorruis? Wat kan je hiertegen ondernemen (twee mogelijkheden)? Oef. 13. Schakel nu ook de niet-lineariteit in en speel op de amplitude van u om de invloed van de stoorruis te verminderen: >> [xm, ym] = dutResp2(u,15); Wat stel je vast? Oef. 14. Wat is de invloed van de dynamiek van de generator op de meting van de transferfunctie? Waar doet het probleem zich voor en hoe kan het opgelost worden? Gebruik dutResp2 als volgt: >> [xm, ym] = dutResp2(u,23); Oef. 15. Laat nu alle niet-idealiteiten vrij en probeer een zo goed mogelijk beeld te krijgen van de transferfunctie. Alle niet-idealiteiten worden ingeschakeld indien je dutResp2 zo oproept: >> [xm, ym] = dutResp2(u,31); Systeemtheorie oefeningen p. 6/10 4. Transferfunctiemetingen met sinussen Oef. 16. Wat is de output van een lineair systeem voor een sinusoïdale excitatie? Werk eerst met een ideaal systeem om het theoretische resultaat te kunnen verifiëren (dutResp2(u,0)). Wat valt je op aan het begin van de respons? Kijk ook naar het DFT om de spectrale invloed te onderzoeken. Oef. 17. Meet de transferfunctie van dutResp2(u,0) op met behulp van sinussen. Dit doe je als volgt: schrijf een functie multisine(N,M) die een signaal met lengte N maakt, en alle bins van 1 (dus zonder DC) tot en met M (<N/2) exciteert, de rest staat op nul. Gebruik hiervoor de functie maakSinus (zie ook Oefening 5). Exciteer ongeveer 95% van de frequentieband. Vergeet de transients niet weg te gooien! Selecteer de geëxciteerde lijnen. Oef. 18. Wat is de invloed van de fase op de meting van de transferfunctie? Probeer eens met een functie maakCosinus. Oef. 19. Wat is de meest efficiënte manier om een multisinus aan te maken? (Hint: vertrek vanuit het frequentiedomein.) Ook hierbij kan je een keuze maken voor de fase van de componenten. Wat gebeurt er als je ze allen op π ⁄ 2 laat beginnen? Kies ze ook eens willekeurig (uniform verdeeld over het interval [0,2π[ ). Dit signaal noemt men een Random Phase Multisinus. Oef. 20. Meet de transferfunctie van dutResp2(u,0) aan de hand van een Random Phase Multisinus. Bekijk dit excitatiesignaal ook in het tijdsdomein. Systeemtheorie oefeningen p. 7/10 5. Transferfunctiemetingen: Impuls vs. multisinus Oef. 21. Bekijk de invloed van niet-lineariteiten op de transferfunctie voor dutResp2(u,8) bij verschillende input amplitudes. Wat zijn de resultaten vergeleken met de impuls als excitatie? Gebruik gelijke RMS waarden om tot een eerlijke vergelijking te komen. Oef. 22. Bereken de Crest Factor van de excitatiesignalen die je in de vorige oefening gebruikt hebt (impuls en multisine). max( u ( t ) ) C(u) = --------------------------u rms Oef. 23. Probeer de Crest Factor van deze signalen kleiner te maken. Helpt het om de amplitude van het signaal te veranderen? Oef. 24. Bekijk de transferfunctie voor dutResp2(u,31) (dus met alle niet-idealiteiten). Wat zijn de resultaten vergeleken met de resultaten verkregen met een impuls als excitatie? Systeemtheorie oefeningen p. 8/10 6. Transferfunctiemetingen met ruis Oef. 25. Genereer 10 sequenties witte ruis die als excitatie moeten dienen. Bereken de Crest Factor van deze signalen. Oef. 26. Schrijf een functie die voor een gegeven aantal punten het Hanning venster teruggeeft: 1 1 hanning venster met lengte T = --- – --- cos 2πt -------2 2 T Oef. 27. Meet de transferfunctie van dutResp2(u,0) met ruis als excitatie. Probeer een zo goed mogelijk beeld te krijgen van de transferfunctie. Probeer verschillende vensters (Rechthoekig, Driehoek en Hanning) en ook een burst. Oef. 28. Doe hetzelfde voor dutResp2(u,1). Oef. 29. Doe hetzelfde voor dutResp2(u,23). Oef. 30. Doe hetzelfde voor dutResp2(u,31). Oef. 31. Werken met cross correlaties voor output ruis. Systeemtheorie oefeningen p. 9/10 7. Lijst met handige Matlab routines bij het oplossen van de oefeningen Om over het commando “xxx” informatie te krijgen volstaat het om in de “Command Window” van Matlab “help xxx” (of “doc xxx”) in te typen. function: Add new function. fft: Discrete Fourier transform. ifft: Inverse discrete Fourier transform. fftshift: Shift zero-frequency component to center of spectrum. ifftshift: Inverse FFT shift. db: Convert to decibels. abs: Absolute value or complex modulus (magnitude). angle: Phase angle. phase: Computes the phase of a complex vector. sin: Sine of argument in radians. cos: Cosine of argument in radians. rand: Uniformly distributed pseudo-random numbers. randn: Normally distributed random numbers. mean: Average or mean value. repmat: Replicate and tile an array. reshape: Change size. plot: Linear plot. subplot: Create axes in tiled positions. stem: Discrete sequence or "stem" plot. semilogx: Semi-log scale plot. semilogy: Semi-log scale plot. loglog: Log-log scale plot. xlabel: X-axis label. ylabel: Y-axis label. axis: Control axis scaling and appearance. xlim: X limits. ylim: Y limits. title: Graph title. legend: Display legend. Systeemtheorie oefeningen p. 10/10