FFT Filter
Het FFT Filter in GNU Radio is een zeer efficiënte manier om een signaal te filteren met behulp van de Fast Fourier Transform (FFT). Het maakt gebruik van frequentiedomeinverwerking in plaats van de zgn. directe convolutie zoals een FIR-filter in het tijdsdomein, wat rekenkracht bespaart, vooral bij lange filters.
Hoe Werkt Het?
De FFT Filter voert filtering uit in het frequentiedomein door het signaal en het filter beide te transformeren, een vermenigvuldiging uit te voeren in het frequentiedomein en daarna wordt een inverse FFT (IFFT) toegepast om het resultaat terug naar het tijddomein te brengen.
Stappen:
- FFT van het Signaal:
Het inkomende signaal wordt opgesplitst in blokken en elk blok wordt getransformeerd naar het frequentiedomein met behulp van de FFT.
- FFT van het Filter:
De filtercoëfficiënten (FIR-taps) worden ook getransformeerd naar het frequentiedomein.
- Frequentiedomeinvermenigvuldiging:
De FFT van het signaal wordt vermenigvuldigd met de FFT van het filter. Dit komt overeen met de zgn. convolutie in het tijddomein.
- Inverse FFT (IFFT):
Het resultaat wordt getransformeerd terug naar het tijddomein met behulp van de inverse FFT. Dit geeft het gefilterde signaal.
- Overlap-Add:
Omdat de filtering in blokken gebeurt, wordt de Overlap-Add-methode gebruikt om de blokken naadloos aan elkaar te hechten en het uiteindelijke signaal samen te stellen. Overlap betekent in dit geval dat de sampleblokken deels de zelfde samples gebruiken aan de randen.
Parameters:
- Filtertaps: De coëfficiënten van het FIR-filter die het filtergedrag bepalen.
- Blokgrootte (FFT-lengte): De grootte van de FFT die wordt gebruikt voor de verwerking. Deze moet groot genoeg zijn om aliasing te voorkomen en efficiënt te werken.
Voordelen van de FFT Filter:
- Efficiëntie:
Bij lange filters is de FFT-methode veel sneller dan directe convolutie omdat FFT-verwerking schaalbaar is als ordegrootte (NlogN), terwijl directe convolutie (zoals bij een FIR filter) ordegrootte (N2) kost.
Dit maakt het bijzonder geschikt voor real-time filtering van signalen met veel taps (lange filters).
- Flexibiliteit:
Het kan worden gebruikt voor low-pass, high-pass, band-pass of band-stop filters, afhankelijk van de FIR-taps.
- Toepassingen:
Veel gebruikt in SDR, digitale communicatie, en andere toepassingen waar complexe filtering nodig is.
Voorbeeld:
Stel dat je een signaal wilt filteren met een low-pass FIR-filter met 1024 taps en een samplefrequentie van 1 MHz
- Ontwerp de filtercoëfficiënten (bijvoorbeeld met behulp van firdes in GNU Radio of met de filter design tool).
- Het FFT Filter transformeert elk inkomend blok van samples naar het frequentiedomein, voert de filtering uit, en zet het resultaat terug naar het tijddomein.
- Door gebruik te maken van een grote FFT-grootte, blijft de filtering efficiënt ondanks het grote aantal taps.
Belangrijke Notities:
- Filterontwerp: Net als bij een gewone FIR-filter is het ontwerp van de filtertaps cruciaal. Ze bepalen welke frequenties worden doorgelaten of onderdrukt.
- FFT-grootte: Kies een FFT-grootte die groot genoeg is om aliasing te voorkomen. Vaak wordt een grootte gebruikt die groter is dan het aantal filtertaps.
- Real-Time Verwerking: De FFT Filter is geschikt voor real-time verwerking, zolang de blokgrootte en rekenkracht voldoende zijn.
FFT filter op de GNU Radio website vind je hier.