Saturday, 23 December 2017

Rörliga genomsnittet filter basics


Ett inledande digitalt filter Väl öppet MicroModeler DSP och välj ett digitalt filter från verktygsfältet överst och dra det till vår applikation. Välja ett glidande medelfilter eftersom det är en av de enklaste filtertyperna. När du har släppt filtret uppdateras displayerna automatiskt. (Klicka för att starta MicroModeler DSP i ett nytt fönster) Vi vet alla vad ett genomsnitt är - lägg till siffrorna ihop och dela med hur många som finns. Ett glidande medelfilter gör just det. Den lagrar en historia av de sista N-talen och matar ut sina medelvärden. Varje gång ett nytt nummer kommer in, genberäknas genomsnittsvärdet effektivt från de lagrade proven och ett nytt nummer matas ut. Frekvensresponsen hos ett filter Högst upp till höger ser vi grafen för magnitude vs frekvens, eller hur mycket olika frekvenser kommer att förstärkas eller minskas med det glidande medelfiltret. Som du kan förvänta, kommer medelvärdet av de sista N-proven att applicera någon typ av utjämning till signalen, behålla de låga frekvenserna och ta bort högfrekvenserna. Vi kan styra antalet tidigare ingångar, eller prover som det genomsnittliga genom att justera filterlängden, N. Genom att justera detta kan vi se att vi har viss grundläggande kontroll över vilka frekvenser som kan passera och vilka kasseras. Insidan av ett filter Om vi ​​tittar på strukturvyn kan vi se hur inuti ett glidande medelfilter kan se ut. Diagrammet har kommenterats för att visa vad de olika symbolerna betyder. Z -1-symbolerna innebär fördröjning med en gångs sample och symbolerna betyder att lägga till eller kombinera signalerna. Pilarna betyder multiplicera (tänk att förstärka, minska eller skala) signalen med den mängd som visas till höger om pilen. För i genomsnitt 5 prover tar vi en femtedel (0.2) av det senaste provet, en femtedel av det näst senaste provet och så vidare. Kedjan av förseningar kallas en fördröjningslinje med ingångssignalen fördröjd med ett ytterligare tidssteg när du fortsätter längs fördröjningslinjen. Pilarna kallas också kranar, så du kan nästan föreställa dig dem som kranar som den i din kökshandfat som är alla en femtedel öppen. Du kan föreställa sig signalen som flyter in från vänster och fördröjs gradvis när den rör sig längs fördröjningslinjen, och rekombineras sedan i olika styrkor genom kranen för att bilda utgången. Det ska också vara lätt att se att filtrets utdata kommer att vara: Vilket motsvarar genomsnittet för de senaste 5 proven. (Inmatning t-N betyder den fördröjda ingången från tiden t-N) I praktiken kommer koden som genereras av MicroModeler DSP att använda tricks för att göra det mer effektivt så att endast första och sista samplen behöver vara involverade, men diagrammet är bra för illustrativa ändamål. Om du kan förstå detta kan du få en uppfattning om vad ett FIR-filter är. Ett FIR-filter är identiskt med det glidande medelfiltret, men i stället för att alla dragstyrkor är desamma kan de vara olika. Här har vi ett glidande medelfilter och ett FIR-filter. Du kan se att de är strukturellt densamma, den enda skillnaden är styrkan hos kranarna. Nästa avsnitt kommer att introducera dig till Finite Impulse Response (FIR) filter. Genom att ändra knackstyrkorna kan vi skapa nära vilket frekvensrespons som helst vi vill. FIR Filter Basics 1.1 Vad är quotFIR filtersquot FIR-filter är en av två primära typer av digitala filter som används i DSP-applikationer (Digital Signal Processing), den andra typen vara IIR. 1.2 Vad betyder quotFIRquot mean quotFIRquot quotFinite Impulse Responsequot. Om du sätter in en impuls, det vill säga ett enda kvotprov följt av många quot0quotprover kommer nollor att komma ut efter att kvototprovet har gått igenom filterets fördröjningslinje. 1.3 Varför är impulssvaret quotfinitequot I det gemensamma fallet är impulsresponsen begränsad eftersom det inte finns någon feedback i FIR. En brist på feedback garanterar att impulsresponsen blir begränsad. Därför är uttrycket quotfinit-impulsresponsequot nästan synonymt med kvot-feedbackquot. Om återkoppling används är emellertid impulssvaret ändligt, filtret är fortfarande en FIR. Ett exempel är det rörliga genomsnittsfiltret, där det Nth föregående provet subtraheras (matas tillbaka) varje gång ett nytt prov kommer in. Detta filter har ett ändligt impulsrespons även om det använder feedback: efter N-prov av en impuls, kommer alltid att vara noll. 1.4 Hur uttalar jag quotFIRquot Vissa säger att bokstäverna F-I-R andra människor uttalar sig som om det var en typ av träd. Vi föredrar trädet. (Skillnaden är om du pratar om ett F-I-R-filter eller ett FIR-filter.) 1.5 Vad är alternativet till FIR-filter DSP-filter kan också vara quotInfinite Impulse Responsequot (IIR). (Se dspGurus IIR FAQ.) IIR-filter använder feedback, så när du matar in en impuls ringer utgången teoretiskt på obestämd tid. 1.6 Hur jämför FIR-filter med IIR-filter Var och en har fördelar och nackdelar. Sammantaget överväger fördelarna med FIR-filter dock nackdelarna, så de används mycket mer än IIR. 1.6.1 Vilka är fördelarna med FIR-filter (jämfört med IIR-filter) Jämfört med IIR-filter, erbjuder FIR-filter följande fördelar: De kan enkelt utformas för att vara kvadratisk fasquot (och vanligtvis är). Enkelt sagt, linjära fasfilter fördröjer ingångssignalen, men donrsquot snedvrider sin fas. De är enkla att genomföra. På de flesta DSP-mikroprocessorer kan FIR-beräkningen göras genom att slinga en enda instruktion. De är lämpade för flervärdiga applikationer. Med flera räntesatser menar vi antingen quotdecimationquot (reducering av samplingsfrekvensen), quotinterpolationquot (ökning av samplingsfrekvensen) eller båda. Oavsett om decimering eller interpolering gör det, använder användningen av FIR-filter några av beräkningarna att utelämnas, vilket ger en viktig beräkningseffektivitet. Däremot, om IIR-filter används, måste varje utmatning beräknas individuellt, även om den utsignalen kommer att kasseras (så återkopplingen kommer att införlivas i filtret). De har önskvärda numeriska egenskaper. I praktiken måste alla DSP-filter implementeras med hjälp av finit-precision aritmetik, det vill säga ett begränsat antal bitar. Användningen av slutgiltig aritmetik i IIR-filter kan orsaka signifikanta problem på grund av användningen av återkoppling, men FIR-filter utan återkoppling kan vanligtvis implementeras med färre bitar och konstruktören har färre praktiska problem att lösa i samband med icke-idealisk aritmetik. De kan implementeras med fraktionell aritmetik. Till skillnad från IIR-filter är det alltid möjligt att implementera ett FIR-filter med hjälp av koefficienter med en storlek mindre än 1,0. (Den totala förstärkningen av FIR-filtret kan justeras vid dess utgång, om så önskas.) Detta är ett viktigt övervägande vid användning av fastpunkts-DSP, eftersom det gör implementeringen mycket enklare. 1.6.2 Vad är nackdelarna med FIR-filter (jämfört med IIR-filter) Jämfört med IIR-filter har FIR-filter ibland nackdelen att de behöver mer minne och eller beräkning för att uppnå en viss filterresponskarakteristik. Också vissa svar är inte praktiska att implementera med FIR-filter. 1.7 Vilka termer används för att beskriva FIR-filter? Impulsrespons - Quimpulsresponsequot av ett FIR-filter är egentligen bara uppsättningen FIR-koefficienter. (Om du lägger ett kvotplott i ett FIR-filter som består av ett quot1quot-prov följt av många quot0quot-prov, kommer filtrets utdata att vara uppsättningen koefficienter, eftersom det 1 provet rör sig förbi varje koefficient i sin tur för att bilda utgången.) Knacka - En FIR quottapquot är helt enkelt ett koefficientdelay-par. Antalet FIR-kranar (ofta betecknat som quotNquot) är en indikation på 1) mängden minne som krävs för att implementera filtret, 2) antalet beräkningar som krävs och 3) mängden kvoteringskvot som filtret kan åstadkomma, fler kranar betyder mer stoppbanddämpning, mindre krusning, smalare filter etc. Multiplicera-ackumulera (MAC) - I ett FIR-sammanhang är en quotMACquot funktionen att multiplicera en koefficient med motsvarande fördröjda dataprov och ackumulera resultatet. FIR kräver vanligen en MAC per kran. De flesta DSP-mikroprocessorer implementerar MAC-operationen i en enda instruktionscykel. Övergångsband - frekvensbandet mellan passband och stoppbandskanter. Ju smalare övergångsbandet desto större kranar krävs för att implementera filtret. (Ett quotsmallquot-övergångsband resulterar i ett kvartsarpotfilter.) Delay Line - Den uppsättning minneselement som implementerar kvZ-1quot-fördröjningselementen i FIR-beräkningen. Cirkulär buffert - En speciell buffert som är quotcircularquot eftersom inkrementering i slutet gör att den slingras runt till början, eller eftersom minskning från början gör att den slingrar sig runt till slutet. Cirkulära buffertar tillhandahålls ofta av DSP-mikroprocessorer för att implementera kvotens kvotenhet för proverna via FIR-fördröjningslinjen utan att behöva bokstavligen flytta data i minnet. När ett nytt prov läggs till i bufferten, ersätter den automatiskt den äldsta. Scientist and Engineers Guide till Digital Signal Processing av Steven W. Smith, Ph. D. Kapitel 14: Introduktion till digitala filter Digitala filter är en mycket viktig del av DSP. Faktum är att deras extraordinära prestanda är en av de viktigaste orsakerna till att DSP har blivit så populär. Såsom nämnts i introduktionen har filter två användningar: signalavskiljning och signalåterställning. Signalseparation behövs när en signal har förorenats med störningar, brus eller andra signaler. Tänk dig för exempel en apparat för att mäta den elektriska aktiviteten hos ett barns hjärta (EKG) medan du fortfarande är i livmodern. Råsignalen kommer sannolikt att vara skadad av andras andning och hjärtklapp. Ett filter kan användas för att separera dessa signaler så att de kan analyseras individuellt. Signalåterställning används när en signal har förvrängts på något sätt. Till exempel kan en ljudinspelning gjord med dålig utrustning filtreras för att bättre representera ljudet som det faktiskt inträffade. Ett annat exempel är deblurring av en bild som förvärvats med en felaktigt fokuserad lins eller en skakig kamera. Dessa problem kan attackeras med antingen analoga eller digitala filter. Vilka är bättre Analoga filter är billiga, snabba och har ett stort dynamiskt intervall i både amplitud och frekvens. Digitala filter är i jämförelse överlägset överlägsen prestationsnivå som kan uppnås. Exempelvis har ett lågpass digitalt filter som presenteras i kapitel 16 en förstärkning av 1-0.0002 från DC till 1000 Hz och en förstärkning på mindre än 0,0002 för frekvenser över 1001 Hz. Hela övergången sker inom endast 1 hertz. Förvänta dig inte detta från en op amp krets Digitala filter kan uppnå tusentals gånger bättre prestanda än analoga filter. Detta gör en dramatisk skillnad i hur filtreringsproblemen närmar sig. Med analoga filter ligger betoningen på hanteringsbegränsningar av elektroniken, såsom motstånd och stabilitet hos motstånd och kondensatorer. I jämförelse är digitala filter så bra att filterets prestanda ofta ignoreras. Tonvikten växlar till gränserna för signalerna. och de teoretiska frågorna om deras behandling. Det är vanligt i DSP att säga att en filtersignal och utsignaler finns i tidsdomänen. Detta beror på att signaler vanligtvis skapas genom stickprov med jämna mellanrum. Men detta är inte det enda sättet provtagningen kan äga rum. Det näst vanligaste sättet för provtagning är med lika stora mellanrum i rymden. Tänk exempelvis att du tar samtidiga avläsningar från en uppsättning av spänningssensorer monterade med ett centimeter steg längs längden på en flygplanvinge. Många andra domäner är dock möjligt, tid och rum är överlägset vanligast. När du ser termen tidsdomän i DSP, kom ihåg att det faktiskt kan referera till prov som tagits över tiden, eller det kan vara en allmän referens till vilken domän som samplarna tas i. Såsom visas i Fig. 14-1 är varje linjär filtret har ett impulsrespons. ett stegsvar och ett frekvenssvar. Var och en av dessa svar innehåller fullständig information om filtret, men i en annan form. Om en av de tre är angivna, är de andra tvåa fasta och kan beräknas direkt. Alla tre av dessa representationer är viktiga, eftersom de beskriver hur filtret ska reagera under olika omständigheter. Det enklaste sättet att implementera ett digitalt filter är att sammanfoga ingångssignalen med det digitala filtrets impulsrespons. Alla möjliga linjära filter kan göras på detta sätt. (Detta borde vara uppenbart. Om det inte är det har du förmodligen inte bakgrunden för att förstå det här avsnittet om filterdesign. Försök att granska det föregående avsnittet om DSP-principer). När impulssvaret används på detta sätt, ger filterdesigners det ett speciellt namn: filterkärnan. Det finns också ett annat sätt att göra digitala filter, kallad recursion. När ett filter implementeras genom konvolvering beräknas varje prov i utgången genom att vikta proverna i ingången och lägga dem ihop. Rekursiva filter är en förlängning av detta, med hjälp av tidigare beräknade värden från utgången. förutom poäng från inmatningen. I stället för att använda en filterkärna definieras rekursiva filter av en uppsättning rekursionskoefficienter. Denna metod kommer att diskuteras i detalj i kapitel 19. För närvarande är den viktiga punkten att alla linjära filter har ett impulsrespons även om du inte använder den för att implementera filtret. För att hitta impulsresponsen hos ett rekursivt filter, mata bara in en impuls och se vad som kommer ut. Impulsresponsen hos rekursiva filter är sammansatta av sinusoider som exponentiellt förfallna i amplitud. I princip gör detta deras impulssvar oändligt långa. Amplituden sjunker så småningom under systemets avrunda ljud, och de återstående proverna kan ignoreras. På grund av denna egenskap kallas även rekursiva filter som oändliga impulsrespons eller IIR-filter. I jämförelse kallas filter som utförs av faltning Finite Impulse Response eller FIR-filter. Som du vet är impulssvaret utmatningen av ett system när ingången är en impuls. På samma sätt är stegsvaret utgången när ingången är ett steg (kallas även en kant och ett kantsvar). Eftersom steget är integralet av impulsen är stegsvaret integralet av impulssvaret. Detta ger två sätt att hitta stegsvaret: (1) mata en stegvågform i filtret och se vad som kommer ut, eller (2) integrera impulsresponsen. (För att vara matematiskt korrekt: integration används med kontinuerliga signaler, medan diskret integration, dvs en löpande summa, används med diskreta signaler). Frekvensresponsen kan hittas genom att ta DFT (med FFT-algoritmen) av impulssvaret. Detta kommer att ses över senare i detta kapitel. Frekvensresponsen kan plottas på en linjär vertikal axel, såsom i (c), eller i en logaritmisk skala (decibel), som visas i (d). Den linjära skalan är bäst vid visning av passbandets rippel och avrullning, medan decibelskalan behövs för att visa stoppbanddämpningen. Kom ihåg inte desibel Här är en snabb recension. En bel (för att hedra Alexander Graham Bell) betyder att kraften ändras med en faktor om tio. Till exempel producerar en elektronisk krets som har 3 bels amplifiering en utsignal med 10 gånger 10 gånger 10 1000 gånger effekten av ingången. En decibel (dB) är en tiondel av en bel. Därför betyder decibelvärdena för: -20dB, -10dB, 0dB, 10dB amp 20dB, effektförhållandena: 0,01, 0,1, 1, 10, amp 100. Med andra ord betyder varje tio decibel att kraften har förändrats med en faktor på tio. Heres fångsten: du brukar vilja arbeta med en signal amplitud. inte dess makt. Tänk dig till exempel en förstärkare med 20dB förstärkning. Per definition betyder detta att effekten i signalen har ökat med en faktor på 100. Eftersom amplituden är proportionell mot kvadratkroppen av effekten är amplituden för utsignalen 10 gånger amplituden för ingången. Medan 20dB betyder en faktor på 100, betyder det bara en faktor 10 i amplituden. Varje tjugo decibel betyder att amplituden har förändrats med en faktor på tio. I ekvationsform: Ovanstående ekvationer använder bas 10 logaritmen men många datorspråk ger bara en funktion för bas-e-logaritmen (den naturliga loggen, den skrivna loggen x eller ln x). Den naturliga loggen kan användas genom att modifiera ovanstående ekvationer: dB 4.342945 log e (P 2 P 1) och dB 8.685890 log e (A 2 A 1). Eftersom decibel är ett sätt att uttrycka förhållandet mellan två signaler är de ideala för att beskriva förstärkningen av ett system, dvs förhållandet mellan utsignalen och ingångssignalen. Ingenjörer använder emellertid decibel för att specificera amplituden (eller kraften) för en enda signal, genom att referera till en viss standard. Exempelvis betyder termen: dBV att signalen refereras till en 1 volt rms-signal. På samma sätt anger dBm en referenssignal som producerar 1 mW i en 600 ohm belastning (ca 0,78 volt rms). Om du inte förstår något annat om decibel, kom ihåg två saker: Först -3dB innebär att amplituden sänks till 0.707 (och kraften reduceras därför till 0,5). För det andra, memorera följande omvandlingar mellan decibel - och amplitudförhållanden: Flyttande medelfilter Beskrivning MovingAverageFilter implementerar ett lågpass glidande medelfilter. MovingAverageFilter är en del av förbehandlingsmodulerna. Ett exempel på en signal (sinusvågs slumpmässigt brus) filtreras med hjälp av ett glidande medelfilter. Den röda signalen är det ursprungliga signalljudet, den gröna signalen är den filtrerade signalen med ett glidande medelfilter med en fönsterstorlek på 5 och den blå signalen är den filtrerade signalen med ett glidande medelfilter med en fönsterstorlek på 20. MovingAverageFilterExampleImage1. jpg Fördelar MovingAverageFilter är bra för att ta bort en liten mängd högfrekvent ljud från en N-dimensionell signal. Nackdelar Den största nackdelen med MovingAverageFilter är att filterfönstret för filtret måste vara stort för att filtrera bort högfrekventa ljud. Problemet med att ha ett stort filterfönster är att detta kommer att leda till en stor latens i vilken signal som passerar genom filtret, vilket kanske inte är fördelaktigt för realtidsapplikationer. Om du upptäcker att du behöver ett stort filterfönster för att filtrera bort högfrekventa ljud och latensen som induceras av denna fönsterstorlek inte är lämplig för din realtidsapplikation, kanske du vill prova antingen ett dubbelrörande medelfilter eller lågpassfilter istället. Exempel Kod GRT MovingAverageFilter Exempel I det här exemplet visas hur man skapar och använder GRT MovingAverageFilter PreProcessing Module. MovingAverageFilter implementerar ett lågpass glidande medelfilter. I det här exemplet skapar vi en förekomst av en MovingAverageFilter och använder det här för att filtrera några dummy data, genererade av ett sinusvåg slumpmässigt brus. Testsignalen och filtrerade signaler sparas sedan i en fil (så att du kan plotta resultaten i Matlab, Excel, etc. om det behövs). I det här exemplet kan du: - Skapa en ny MovingAverageFilter-instans med en viss fönsterstorlek för en 1-dimensionell signal - Filtrera vissa data med MovingAverageFilter - Spara MovingAverageFilter-inställningarna till en fil - Ladda inställningarna MovingAverageFilter från en fil inkluderar quotGRT. hquot använder namnrymden GRT int main 40 int argc. const char argv 91 93 41 123 Skapa en ny instans av ett glidande medelfilter med en fönsterstorlek på 5 för en 1-dimensionell signal MovingAverageFilter-filter 40 5. 1 41 Skapa och öppna en fil för att spara data fstreamfilfilen. öppna 40 quotMovingAverageFilterData. txtquot. FStream. ut 41 Generera lite data (sinusvågljud) och filtrera det dubbelt x 0 const UINT M 1000 Slumpmässigt slumpmässigt för 40 UINT i 0 I lt M i 41 123 dubbel signal sint 40 x 41 slumpmässigt. getRandomNumberUniform 40 - 0.2. 0,2 41 dubbelfilterValuefilter. filtrera 40 signal 41 fil LLT-signal LLT-kvittot filtreratValue LLT ENDL x TWOPI dubbel 40 M 41 10 125 Stäng filfilen. stäng 40 41 Spara filterinställningarna till ett filfilter. saveSettingsToFile 40 quotMovingAverageFilterSettings. txtquot 41 Vi kan sedan ladda inställningarna senare om det behövs filter. loadSettingsFromFile 40 quotMovingAverageFilterSettings. txtquot 41 retur EXITSUCCESS 125 MovingAverageFilter fungerar också med någon N-dimensionell signal: Skapa en ny instans av MovingAverageFilter med en fönsterstorlek på 10 för en tredimensionell signal MovingAverageFilter-filter 40 10. 3 41 Värdet du vill filtrera vektor lt dubbel gt data 40 3 41 data 91 0 93 0. Få värde från sensordata 91 1 93 0. Få värde från sensordata 91 2 93 0. Få värdet från sensorn Filtrera signalen vektor lt double gt filteredValue filter. filtrera 40 data 41 Code amp Resources

No comments:

Post a Comment