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:
SACDFrequenties 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.