Vensterfunctie

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een vensterfunctie, in het Engels window function, apodization function of tapering function[1], is een wiskundige functie die nul is buiten een bepaald interval. Zo wordt een functie die nul is buiten een interval, en een constante waarde heeft binnen het interval een rechthoekige vensterfunctie of rechthoekig venster genoemd, gezien de vorm die dit venster heeft. Wanneer een ander signaal met de vensterfunctie puntsgewijs wordt vermenigvuldigd is het product nul buiten het interval van de vensterfunctie. Vandaar de benaming venster: men kijkt naar een ander signaal door een venster, waardoor men als het ware een stuk uit het volledige signaal knipt. Indien de vorm binnen het bereik van de vensterfunctie niet constant is, wordt het uitgeknipte stuk van het oorspronkelijk signaal ook nog eens gewijzigd.

Vensterfuncties worden onder meer gebruikt in alle analoge en digitale toepassingsgebieden van signaalverwerking, gevorderde varianten van de fouriertransformatie, beeldverwerking en digitale spraakverwerking. Ook analoge en digitale filters kunnen op basis van vensterfuncties worden ontworpen.

Effecten van het gebruik[bewerken]

Effecten van windowing van 5 seconden op de Fouriertransformatie van een sinus van 5,26 Hz. Groen: werkelijk spectrum op 5,26 Hz. Rood: convolutie van het sinusspectrum en het spectrum van het gebruikte rechthoekig venster. Blauw: uiteindelijk spectrum dat Fouriercoëfficiënten bevat op de veelvouden van 0,2Hz. Omdat de werkelijke frequentie van de sinus hiermee niet samenvalt zal leakage optreden.

De nevenstaande figuur illustreert de onderstaande uitleg concreet voor een sinus van 5,26 Hz die wordt waargenomen met een rechthoekig venster van 5 seconden. De fouriertransformatie van een oneindig lange sinus bestaat uit één enkele piek op de eigen frequentie. Een wiskundig perfecte sinus bevat immers enkel zijn eigen frequentie. Deze piek, groen op bijgaande figuur, is wiskundig voor te stellen als een Diracfunctie op die precieze frequentie. Wanneer echter (bijvoorbeeld) een rechthoekig venster op de sinus wordt toegepast is de fouriertransformatie, wegens de convolutiestelling de convolutie van de fouriertransformatie van de sinus en de fouriertransformatie van het venster. De convolutie van een Diracfunctie en een andere functie is op zijn beurt een verschuiving van de andere functie tot op de plaats van de Diracfunctie. Dit is een eigenschap van de Diracfunctie. Deze convolutie is de golvende functie in het rood op de figuur. De fouriertransformatie van een sinus, genomen door een rechthoekig venster, is dus een sinc-functie met haar maximum op de frequentie van de sinus (en een tweede sinc-functie op de negatieve frequentie). De fouriertransformatie van een rechthoekig tijdsignaal is immers een sinc-functie in frequentie.

Indien:

f(t) \, = \, A \!

op het interval [-T/2 ... T/2] \! en nul daarbuiten, dan is de fouriertransformatie

F(\omega) \, = \, AT \ \operatorname{sinc}(\omega T/2)

De unieke spectrale lijn op de frequentie van de sinus is dus nu vervangen door deze sinc-functie gecentreerd op de frequentie van de sinus.

Indien:

f(t) \, = \, A \sin(\omega_o t)\!

op het interval [-T/2 ... T/2] \! en nul daarbuiten, dan is de fouriertransformatie

F(\omega) \, = \, AT \ \operatorname{sinc}[(\omega + \omega_o) T/2] + AT \ \operatorname{sinc}[(\omega - \omega_o) T/2]

Daarboven komt nog het feit dat de fouriertransformatie in de praktijk wordt berekend door middel van een FFT, en deze berekent de fouriertransformatie in een discrete vorm: het resultaat van de FFT bevat enkel informatie op de veelvouden van de grondfrequentie van de meting, en deze is één gedeeld door de duur van de meting. Een meting van 5 seconden levert dus enkel fouriercoëfficiënten op 0,2 Hz, 0,4 Hz, 0,6 Hz... In het algemeen zullen deze zichtbare frequenties, de blauwe pieken op de figuur, niet samenvallen met de piek van de getransformeerde van het venster, en wordt er dus geen unieke piek gemeten, maar een gans bos van pieken die hun maximum bereiken in de buurt van de werkelijke frequentie van de te meten sinus. De maximale piek zal echter lager zijn dan de werkelijke sterkte van de sinus.

Alles bij elkaar wordt in het Fourierspectrum een sinus dus vervangen door de Fouriertransformatie van het gebruikte venster, en wordt dit dan nog eens bemonsterd op de zichtbare frequenties van de Fouriertransformatie. Als de werkelijke frequentie van de sinus niet met een die zichtbare frequenties samenvalt zal de fouriertransformatie van het gebruikte venster dus niet in zijn maximum worden bemonsterd.

Een rechthoekig venster gebruiken zal dus aanleiding geven tot de volgende fouten:

  • Amplitudefout: De amplitude wordt te laag gemeten. Deze fout kan in het slechtste geval oplopen tot 36% te weinig, of dus 3,9dB te laag
  • Resolutiefout: De werkelijke frequentie van de sinus is niet meer nauwkeurig te meten, maar ligt tussen de twee hoogste pieken. Ook kan het voorkomen dat twee sinussen met lichtjes verschillende frequentie niet meer afzonderlijk te zien zijn, maar één gezamenlijke piek in het spectrum creëren.
  • Leakage: De nabijgelegen zichtbare frequenties hebben niet-nulle amplitude, die er in realiteit niet is, maar die wel zwakkere sinussen in het signaal kunnen overstemmen. Dit effect wordt aangeduid met de Engelse benaming leakage, het weglekken van de energie van de werkelijke niet zichtbare frequentie naar nabijgelegen zichtbare frequenties.

Het gebruik van andere vensters probeert aan deze fouten iets te doen, maar geen enkel venster kan alle fouten samen verminderen. In het algemeen worden de amplitudefout en leakage samen kleiner (of groter) naargelang de resolutiefout groter (of kleiner) wordt.

Kwaliteitscriteria[bewerken]

Kwaliteitscriteria van een venster: side lobe roll off (deze helling is constant indien de frequentieas logaritmisch is), scalloping loss, breedte van de hoofdlobe op -3 dB en hoogte van de hoogste zijlobe

De fouriergetransformeerde van een venster bestaat steeds uit een centrale hoofdlobe (main lobe) en afnemende zijlobes (side lobes). De vensters kunnen worden beoordeeld volgens volgende criteria:

  • Scallop loss: de maximale fout in dB die kan voorkomen bij een amplitudemeting. Deze fout treedt op indien de top van de hoofdlobe niet samenvalt met een zichtbare frequentie van de Fouriertransformatie. In het slechtste geval ligt de frequentie van een te meten sinus toevallig net tussen de frequenties van twee opeenvolgende fouriercoëfficiënten. In deze situatie wordt de scallop loss bepaald.
  • Main lobe width: de breedte van de hoofdlobe. Hoe breder de hoofdlobe, hoe moeilijker sinussen met bijna gelijke frequentie zullen kunnen onderscheiden worden. Bij vensters met een zeer brede hoofdlobe zullen de twee sinussen als één gezamenlijke piek zichtbaar zijn. Deze breedte kan op verschillende wijze worden gegeven, bijvoorbeeld de breedte op -3dB uitgedrukt in bins. Een bin is het verschil in frequentie tussen twee opeenvolgende fouriercoëfficiënten.
  • Highest side lobe level: geeft aan hoeveel dB de hoogste zijlobe onder het niveau van de hoofdlobe ligt.
  • Side lobe roll off: geeft aan met hoeveel dB/decade het niveau van de zijlobes zakt. Een decade is een frequentietoename met een factor tien. Samen met het niveau van de hoogste zijlobe bepaalt dit criterium in welke mate zwakke sinussen mogelijk zullen worden overstemd door de leakage van sterke sinussen die in de buurt liggen. Indien de frequentieas logaritmisch wordt gekozen is de side lobe roll off op de figuur een constant dalende lijn.

Types van vensters[bewerken]

Terminologie:

  • N\, is de breedte in netpunten van de discrete vorm van het venster. Meestal is dat in de praktijk een macht van 2 zodat het Fast Fourier Transform-algoritme in optimale omstandigheden kan worden toegepast.
  • n\, is een gehele parameter die loopt van 0 tot N-1. De vensters worden dus beschreven op een internal [0..N-1] zodat het maximum van de vensters ruwweg ligt op n = N/2.

Rechthoekig venster[bewerken]

Rechthoekig venster
w(n) = 1\,

Het rechthoekig venster is ook gekend onder de naam Dirichlet-venster. Het snijdt gewoon een stuk van lengte N uit een digitaal signaal zonder dat de samplewaarden van het signaal worden gewijzigd. Dit leidt in veel gevallen tot discontinuïteiten aan de randen van het interval waardoor het venster zeer slecht scoort op de criteria betreffende de hoogte zijlobe (slechts 13 onder de centrale lobe). Omdat de side lobe roll off slechts 20 dB met decade bedraagt kampt dit venster met ernstige leakage. Qua resolutie scoort dit venster wel heel goed.

Von Hann-venster[bewerken]

Hann-venster

Dit venster is ook gekend onder de benaming Hann-venster en Hanning-venster.

w(n) = 0,5\; \left(1 - \cos \left ( \frac{2 \pi n}{N-1} \right) \right)

De vorm is niets anders dan een cosinusvorm die aan beide uiteinden nul wordt. Hierdoor worden discontinuïteiten aan de uiteinden vermeden. De side lobe roll off scoort heel goed met 60 dB/decade. Het Hanning-venster is een eenvoudig en goed compromis dat als algemeen bruikbaar venster wordt beschouwd, zonder uitzonderlijke kwaliteiten maar ook zonder grote gebreken.

Hamming-venster[bewerken]

Hamming-venster
w(n) = 0,54 - 0,46\; \cos \left ( \frac{2\pi n}{N-1} \right)

Dit is een optimalisatie van het Hanning-venster. De vorm is een kleine constante plus een cosinusvorm. De optimalisatie is zodanig dat de hoogte van de eerste zijlobe gevoelig wordt onderdrukt. De prijs die hiervoor betaald wordt is een minder snelle afname van de zijlobes: de side lobe roll off is 20 dB/decade, net zoals het rechthoekig venster. Omdat de hoogste zijlobe echter veel lager ligt dan bij het rechthoekig venster en het verval bij beide vensters gelijk is, scoort het Hamming-venster beter dan het rechthoekig venster op het gebied van detectie van zwakkere componenten in het signaal.

Tukey-venster[bewerken]

Tukey-venster, a=0.5


w_0(n) = \left\{ \begin{matrix}
\frac{1}{2} \left[1+\cos \left(\pi \left( \frac{2 n}{\alpha N}-1 \right) \right) \right]
& \mbox{when}\, 0 \leqslant n \leqslant \frac{\alpha N}{2} \\ [0.5em]
1 & \mbox{when}\, \frac{\alpha N}{2}\leqslant n \leqslant N (1 - \frac{\alpha}{2}) \\ [0.5em]
\frac{1}{2} \left[1+\cos \left(\pi \left( \frac{2 n}{\alpha N}- \frac{2}{\alpha} + 1 \right) \right) \right]
& \mbox{when}\, N (1 - \frac{\alpha}{2}) \leqslant n \leqslant  N \\
\end{matrix} \right.

Het Tukey-venster kan worden beschouwd als een cosinusvorm met een breedte \tfrac{\alpha N}{2} die wordt geconvolueerd met een rechthoekig venster met een breedte \left(1 -\tfrac{\alpha}{2}\right)N. Voor a=0 wordt het venster rechthoekig, en voor a=1 een Hanning-venster.

Cosinus-venster[bewerken]

Cosinus-venster
w(n) = \cos\left(\frac{\pi n}{N-1} - \frac{\pi}{2}\right) = \sin\left(\frac{\pi n}{N-1}\right)

Driehoekig venster (Bartlett-venster)[bewerken]

Bartlett-venster

Met eindpunten die nul zijn (Bartlett-venster):

w(n)=\frac{2}{N-1}\cdot\left(\frac{N-1}{2}-\left |n-\frac{N-1}{2}\right |\right)\,
Driehoekig venster

Met eindpunten verschillend van nul:

w(n)=\frac{2}{N}\cdot\left(\frac{N}{2}-\left |n-\frac{N-1}{2}\right |\right)\,

Dit venster heeft een hoofdlobe die tweemaal zo breed is als het rechthoekig venster, en een hoogste zijlobe op -26 dB.

Kaiser-vensters[bewerken]

Kaiser-venster, a =2
Kaiser-venster, a =3

Kaiser-vensters zijn gebaseerd op de Besselfunctie, en kunnen niet in een expliciete analytische vorm geschreven worden:

w(n)=\frac{I_0\Bigg (\pi\alpha \sqrt{1 - (\begin{matrix} \frac{2 n}{N-1} \end{matrix}-1)^2}\Bigg )} {I_0(\pi\alpha)}

waarbij  I_0 de nulde orde gemodificeerde Besselfunctie van de eerste soort is, en \alpha een parameter die doorgaans 3 wordt gekozen. Merk op dat


w_0(n) = \frac{I_0\Bigg (\pi\alpha \sqrt{1 - (\begin{matrix} \frac{2 n}{N-1} \end{matrix})^2}\Bigg )} {I_0(\pi\alpha)}

Blackman–Harris-venster[bewerken]

Blackman–Harris-venster

Dit is een veralgemening van een Hanning-venster. Er wordt in het venster nog een tweede cosinusgolf toegevoegd met een dubbele frequentie van die van het Hanning-venster. De bedoeling is het niveau van de zijlobes te verlagen.

w(n)=a_0 - a_1 \cos \left ( \frac{2 \pi n}{N-1} \right)+ a_2 \cos \left ( \frac{4 \pi n}{N-1} \right)- a_3 \cos \left ( \frac{6 \pi n}{N-1} \right)
a_0=0.35875;\quad a_1=0.48829;\quad a_2=0.14128;\quad a_3=0.01168\,

Flattopvenster[bewerken]

Flattopvenster
w(n)=a_0 - a_1 \cos \left ( \frac{2 \pi n}{N-1} \right)+ a_2 \cos \left ( \frac{4 \pi n}{N-1} \right)- a_3 \cos \left ( \frac{6 \pi n}{N-1} \right)+a_4 \cos \left ( \frac{8 \pi n}{N-1} \right)
a_0=1;\quad a_1=1.93;\quad a_2=1.29;\quad a_3=0.388;\quad a_4=0.032\,

Het flattopvenster is ontworpen om de scallop loss, dus de mogelijke fout bij de amplitudemeting van een sinusvormig signaal, te minimaliseren. Een flattopvenster geeft een quasi-correcte amplitudemeting. Daar tegenover staat een zeer slechte prestatie op het gebied van resolutie, want de hoofdlobe van een flattopvenster is vijf maal zo breed als bij een rechthoekig venster.

Vergelijking van enkele vensters[bewerken]

Vensterkarakteristieken

Onderstaande tabel vergelijkt de kwaliteitskarakterstieken van enkele veelgebruikte vensters. De scallop loss verbetert naarmate men lager in de tabel afdaalt, net als het niveau van de hoogste zijlobe. De breedte van de hoofdlobe wordt dan weer slechter. Het flat top venster is een speciaal geval. Signalen waarin sinuscomponenten aanwezig zijn met sterk verschillende amplitude zullen beter bestudeerd worden met vensters die lager in de tabel staan, omdat zwakke componenten kans lopen in het spectrum te worden overstemd door de zijlobes van de sterkere componenten indien een venster van bovenaan de tabel gebruikt wordt. Die vensters zijn dan weer beter geschikt om frequenties nauwkeuriger te meten. In het algemeen is een Hanning-venster een goed compromis.

Venster Scallop Loss main lobe width op -3 dB higest side lobe level side lobe roll off
Rechthoekig -3.92 0.89 -13 -20
Driehoekig -1.82 1.28 -26 -40
Hanning -1.42 1.44 -31 -60
Hamming -1.78 1.30 -41 -20
Kaiser(a=3) -1.02 1.71 -69 -20
Blackman Harris (3 sample) -1.13 1.66 -71 -20
Flat top < 0.01 2.94 -44 -20

Overlappende vensters[bewerken]

Indien een signaal te lang is om in één keer te worden behandeld kan men het opdelen en de stukken afzonderlijk bestuderen. Echter, de meeste vensters gaan aan de uiteinden naar nul. Om toch met alle informatie rekening te houden moeten de vensters daarom elkaar gedeeltelijk overlappen. Indien men bijvoorbeeld Hanning-vensters 50% laat overlappen wordt met elk detail in het signaal voor precies 100% rekening gehouden, verdeeld over twee aansluitende vensters.

Dit principe wordt toegepast in de zogenaamde Short-time Fourier Transformatie, kortweg STFT. Door een venster in overlappende stapjes over een lang signaal te laten schuiven, en steeds een Fouriertransformatie te berekenen krijg men niet alleen informatie over de frequenties die in het signaal aanwezig zijn, maar ook hoe deze in de tijd doorheen het signaal evolueren. De nauwkeurigheden waarmee die gebeurt in tijd en frequentie zijn echter omgkeerd evenredig met elkaar. Een verbeterde nauwkeurigheid (resolutie) in de tijd betekent een verzwakte nauwkeurigheud in frequentie en omgekeerd.

Externe link[bewerken]

Bronnen, noten en/of referenties
  • E.C. Ifeachor, B.W. Jervis "Ditigal Signal Processing, a practical approach" Addison-Wesley Publ.Company ISBN 0-201-54431-8
  • S.K. Mitra "Digital Signal Processing, a computer based approach" McGraw-Hill International Edition ISBN 007-124467-0
  • A.W.M. van den Enden, N.A.M. Verhoeckx "Discrete-time Signal Processing, an introduction" Prentice Hall, ISBN 0-13-216755-7

  1. Eric W. Weisstein, CRC Concise Encyclopedia of Mathematics, CRC Press, 2003 ISBN 1-58488-347-2.