labo voor EIT

advertisement
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
Download