Ik dacht dat DSP zou worden gedaan door FFT van delen van een signaal, wijzig de samples die het resultaat zijn van FFT (aangezien ze het spectrum van ons signaal + ruis vertegenwoordigen) en verwijder alle ongewenste signalen en doe dan een inverse FFT om een weergave in het tijddomein van het gefilterde signaal te krijgen (ruis is nu verwijderd) . Dit wordt echter niet gedaan, in plaats daarvan doen we al het werk in het tijdsdomein met behulp van vensterfuncties. Waarom?

Als we de vensterfunctie in het tijdsdomein vermenigvuldigen, dan convolueren we de frequentierespons van de vensterfunctie met het spectrum van ons signaal in het frequentiedomein, hoe werkt dat dan? Ik bedoel als we gewoon alle het werk in het frequentiedomein door ons signaal te vermenigvuldigen met de frequentierespons van het filter, dat zou hetzelfde zijn als filteren, toch? Maar hier doen we alle dingen in het tijddomein in plaats van het venster te gebruiken.

-> Laten we eens kijken waar mijn verwarring komt voort uit. Voor analoge filters, bijv. laagdoorlaatfilter, hebben we deze pulsachtige frequentierespons. Wanneer we een signaal filteren, vermenigvuldigen we in feite het spectrum van ons signaal met de pulsachtige frequentierespons van het filter. Dit zal alle frequenties in ons signaal boven een cut-off terugbrengen tot 0. Dit is hoe een laagdoorlaatfilter in wezen werkt. Waarom niet hetzelfde doen met digitale filters?

Opmerkingen

Answer

Windowing vermindert spectraal lekkage.

Stel dat u begint met een $ \ sin (y) = \ cos (\ omega_0 t) $. De periode is duidelijk $ 2 \ pi / \ omega_0 $.

Maar als niemand u heeft verteld dat de periode $ 2 \ pi / \ omega $ is en u blindelings het bereik $ [0, 1.8 \ pi / \ omega_0] $ kiest en de FFT van deze afgekorte golfvorm neemt, zal frequentiecomponenten in andere frequenties observeren die allemaal nep zijn, omdat de sprongen die worden gemaakt door het kopiëren en plakken van de afgekapte golfvorm voor periodiciteit niet echt aanwezig zijn in het originele signaal – het is een artefact van een ongelukkige afkapping die de overgang tussen periodes niet soepel vastlegt . Idealiter is er slechts één spectrale component op $ \ omega = \ omega_0 $.

Het doel van windowing in het tijdsdomein is om al deze fictieve spectrale componenten te verminderen.

Antwoord

Windowing wordt gebruikt omdat de DFT-berekeningen werken op de oneindige periodieke uitbreiding van het ingangssignaal. Aangezien veel feitelijke signalen helemaal niet periodiek zijn, of worden bemonsterd over een interval dat verschilt van hun werkelijke periode, kan dit valse frequentiecomponenten produceren op de kunstmatige “rand” tussen herhaalde intervallen, genaamd lekkage . Door eerst het tijddomeinsignaal te vermenigvuldigen met een vensterfunctie die aan beide uiteinden naar nul gaat, creëer je een soepele overgang tussen herhaalde intervallen in de oneindige periodieke verlenging, waardoor de creatie van deze kunstmatige frequentiecomponenten wordt verzacht wanneer we vervolgens de DFT nemen.

Deze paper geeft een meer diepgaande blik op dit fenomeen, evenals enig inzicht in de effecten van verschillende windowing-functies.

Answer

Ik denk dat je twee verschillende bewerkingen door elkaar haalt.

Windowing in het tijdsdomein wordt verklaard door @ sam, dus ik zal dat niet herhalen. Maar windowing wordt niet gedaan om filtering uit te voeren. Filteren door de FFT van een signaal te vermenigvuldigen met de filterfrequentierespons is in veel situaties volkomen redelijk, en wordt inderdaad gedaan. Het alternatief voor filteren is tijd -domein convolutie (wat anders is dan windowing). Dit heeft zijn eigen voordelen, zoals het werken op een signaal in real-tim e “zoals het wordt gemeten zonder te wachten tot het hele ding is opgeslagen en vervolgens wordt getransformeerd.

Dus op uw vraag” Waarom niet hetzelfde doen met digitale filters? “, is het antwoord simpelweg” wij doen , wanneer het u uitkomt. “

Opmerkingen

  • Ik heb ook de indruk dat convolutie en windowing in de vraag door elkaar zijn geraakt. Goed dat je erop hebt gewezen!

Antwoord

Er zijn verschillende goede antwoorden op deze vraag. Ik vind echter dat een belangrijk punt niet helemaal duidelijk is gemaakt. Een deel van de vraag was waarom we de FFT van een signaal niet alleen vermenigvuldigen met de gewenste filterrespons. Als we bijvoorbeeld ons signaal een laagdoorlaatfilter willen, kunnen we eenvoudig alle frequentiecomponenten op nul zetten die hoger zijn dan de gewenste afsnijfrequentie. Dit is in feite een eenvoudige toepassing van de bekende frequentiebemonsteringsmethode voor het ontwerpen van FIR-filters. Het probleem is dat we de discrete frequentiecomponenten berekend door de FFT gewoon op nul kunnen stellen. We hebben geen controle over wat er tussen deze discrete frequenties gebeurt. .Het blijkt dat een dergelijke simpele versie van filteren alleen een slechte stopbandverzwakking geeft (ongeacht de FFT-lengte). Als je toegang hebt tot matlab of octaaf, is het erg leerzaam om het zelf te proberen:

x=2*rand(1024,1)-1; X=fft(x); Y=X.*[ones(200,1);zeros(625,1);ones(199,1)]; % lowpass filter y=real(ifft(Y)); % real() just to remove numerical errors Y=fft(y,4096); plot(20*log10(abs(Y(1:2048)))),axis([0,2048,-30,50]) 

Antwoord

Als u geen niet-rechthoekig venster gebruikt, zullen de FFT-resultaten al geconvolueerd zijn met de transformatie van een standaard rechthoekig venster (een periodieke Sinc) voordat u enige frequentiedomeinfiltering uitvoert. bijv. u krijgt twee filters toegepast, waarvan u er één waarschijnlijk niet wilt.

Door in het tijddomein te vensters, vóór de FFT- en frequentiedomeinfiltering, vervangt u elke filtering (de zogenaamde “leakage” ) gedaan door rechthoekige vensters, en dus geen extra ongewenste filterconvolutie krijgen.

De andere manier om dit te doen is om methoden voor het opslaan van overlappingen toe te voegen of overlappen te gebruiken op opeenvolgende vensters, waarbij de effecten van een rechthoekig venster wordt geannuleerd door vergelijkbare effecten van de aangrenzende vensters.

Antwoord

Venster in het tijdsdomein omdat

  • we kunnen nul garanderen aan de randen van het venster
  • vensterfuncties hebben een mooie analytische uitdrukking in ruimtelijk domein
  • veel vensterfuncties hebben een vreemd gevormd spectrum dat zou zijn moeilijk te benaderen
  • slechts een eindig aantal samples is nodig (windowing kan worden gedaan terwijl het signaal binnenstroomt)

bijv. van wikipedia

voer hier een afbeeldingsbeschrijving in

De harde afgesneden naar nul van vensterfuncties betekent dat ze in het spectrale domein zijlobben hebben die heel langzaam naar nul gaan. Als we van deze beperking afkomen, kunnen we functies hebben die compact zijn in zowel ruimtelijke als spectrale domeinen, zoals het Gauss-filter. Dit betekent dat je zou kunnen filteren via het spectrale domein, maar daarvoor moet het hele signaal bekend zijn.

Als je het volledige signaal al hebt, is een ander alternatief het gebruik van wavelets

Answer

Ik had dezelfde vraag.

Een convolutie is de integrale / cumulatieve som van het tijddomeinsignaal vermenigvuldigd met het venster. Dit moet niet worden verward met het “windowed” tijddomeinsignaal.

Het einde van dit artikel heeft me veel geholpen.

In feite zegt het dat echte signalen eindig zijn en dat het abrupt afsnijden van een echt signaal resulteert in veel ongewenste frequenties / artefacten in het frequentiedomein.

Om deze artefacten te vermijden / minimaliseren je kunt een gladde (bijv. klokvormige) vensterfunctie gebruiken zodat je sample begint en eindigt met een nul, in plaats van abrupt te eindigen met een scalaire waarde die niet nul is.

Smooth cut off

Het voorbeeld met vensters hierboven heeft minder artefacten in het frequentiedomein dan het onbewerkte voorbeeld hieronder.

Abrupt afgesneden

Antwoord

Er zijn twee brede categorieën verbonden aan een FFT en deze zijn 1) een efficiënte manier om een FIR-filter te implementeren en 2) spectrale analyse.

Voor FIR-filtering, men maakt zich geen zorgen over vensters en gebruikt ze niet, tenzij het venster overeenkomt met een filter, maar dat is niet algemeen g te doen. Lekkage is geen probleem.

Spectrale analyse is waar men vensters gebruikt. Hier kijk je naar een sensor die aan een grote industriële machine is bevestigd en probeer je erachter te komen of er diep in de ingewanden een lager defect is. Lagers piepen als ze falen, maar het geluid dat ze kunnen maken is meestal veel lager dan de andere geluiden die de machine maakt. Dit is waar lekkage en middeling om de hoek komt kijken. Gegeven sterke tonen, zal lekkage het zwakke signaal overstemmen waar we een paar bakken over zoeken. Het verbetert de gevoeligheid van spectrale analyse voor zwakke signalen in aanwezigheid van sterke signalen. Er is een soortgelijk effect wanneer het achtergrondgeluid afloopt. De informatie die we zoeken, bevindt zich in het frequentiedomein. Dit is hetzelfde probleem in RADAR en SONAR en Geophysics. Het is doel om het zwakke signaal te zien.

Antwoord

Windowing in het tijdsdomein is vereist om te voorkomen dat een enkele frequentie die niet precies op een frequentiebak ligt, wordt verspreid over het hele spectrum. Misschien helpt deze pagina: http://www.sm5bsz.com/slfft/slfft.htm Linrad (mijn 20 jaar oude project) gebruikt een FFT met vensters en past vervolgens een filter toe in het frequentiedomein (maak nul wat we niet willen.) Pas een venster toe – ga niet abrupt van gewicht 1 naar gewicht 0 op de frequentiebakken. Pas dan een achterwaartse FFT toe – maar nu op een veel kleiner aantal punten. Het is niet nodig om alle frequentiebakken op te nemen waarvan we weten dat ze nul zijn !! Als resultaat krijgen we een tijdfunctie met een veel kleinere omvang – dat wil zeggen met een veel lagere bemonsteringsfrequentie. De procedure doet filteren en decimeren in één stap.Dit is zeer efficiënt in het geval men meerdere kanalen tegelijk wil filteren. De linrad-startpagina is hier: http://www.sm5bsz.com/linuxdsp/linrad.htm

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *