Non- causale filters <
in bewerking
>
<laatst bijgewerkt: 2014-12-28>
In het kort:
Non-causaal
filteren betekent dat een filter al output geeft vóórdat er input
geweest is. In de echte, analoge wereld kan dat niet, maar bij digitale
signalen is het heel goed mogelijk, als het gehele signaal enige tijd
vertraagd wordt. Je kunt dan een filter maken dat vooruit kijkt naar
wat er komen gaat.
Er is een vermoeden dat zulke filters, die volop toegepast worden in de
CD-techniek, gehoormatig ongewenste bij-effecten hebben, waarvan de
SACD gespeend zou zijn.
Bedenk dat geluidsopwekking in muziekinstrumenten en de akoestiek van
concertzalen en andere gehoor-ruimtes altijd perfect causaal zijn.
Verwante onderwerpen:
SACD, Frequenties boven de gehoorgrens Filters, groeplooptijden, Fourier transformatie, impuls responsie, FIR-filter, IIR-filter, convolutie
Waarom niet-causale filters?
Nou, dat verhaal is niet gemakkelijk te vatten, maar ik ga het proberen.
Voor het CD-systeem met de sample frequentie van 44.1 kHz is het nodig om aan de opneem-kant een steil z.g. anti-alias filter te gebruiken dat alle frequenties boven ca. 20 kHz tegenhoudt. Zie ook AD-en DA conversie. Men heeft ook geargumenteerd dat zo'n filter in de doorlaatband alle frequenties met gelijke vertraging zou moeten doorlaten.
Die laatste eis vereist een filter met een in de tijd symmetrische impulsresponsie. (voor het inzicht hierover: bestudeer de eigenschappen van de Fourier transformatie)
In de analoge filter techniek kan een symmetrische impulsresponsie
slechts benaderd worden, en dan nog alleen voor een beperkt
frequentiegebied. De z.g bessel-karakteristiek geeft dan de beste benadering.
Met digitale filters kan echter een perfect symmetrische
impulsresponsie verkregen worden met een filter van het FIR type,
Finite Impuls Response.
Je bereikt dat met een convolutie van het ingangssignaal met de impuls-responsie van het filter.
Wat is convolutie / convolueren?
Convolueren is een wat moeilijke manier van vermenigvuldigen van twee functies. < hier moeten plaatjes bij en een stukje pseudo C-code >
Het komt erop neer dat je de twee functies (grafieken van een reeks
getallen) boven elkaar zet, en dan alle overeenkomstige x-punten met
elkaar vermenigvuldigt en die producten sommeert. Dat geeft 1 punt van
de resultaat grafiek.
Vervolgens verschuif je 1 van de twee functies 1 plaats, en bereken je
opnieuw de som van de producten, dat geeft het tweede punt van het
resultaat. Etcetera..etcetera..
Wat ik hier schets is de manier waarop je dat in het digitale (tijddiscrete) domein kunt doen.
Er bestaan overigens slimmere methodes om de hoeveelheid rekenwerk te beperken.
Wat we ons niet zo vaak realiseren is dat analoge filters, dus die met
weerstanden, condensatoren en zelfinducties, precies hetzelfde doen,
echter met tijd-continue signalen en -idem impuls-responsies. Een
belangrijk verschil is echter dat analoge filters altijd causaal zijn,
dus nooit output geven vóórdat er iets aan de input-kant gebeurt, en
een oneindige impulsresponsie hebben naar de toekomst. Zo'n filter zal
-in beginsel- oneindig lang een resultaat produceren t.g.v. een
inputsignaal (nou ja, totdat het in de ruis verzopen is)
E.e.a impliceert dat analoge filters nooit een perfect symmerische
impuls responsie kunnen hebben. Immers, naar de toekomst toe gaat het
oneindig lang door, maar in het verleden kan er niets. DUS: symmetrie
is onmogelijk. En: symmetrie is vereist voor gelijke (groep)looptijden
over het gehele frequentiebereik. Q.E.D.