Sunday, 8 October 2017

Flytte Gjennomsnittet Filter Basics


Et innledende digitalt filter, godt åpent MicroModeler DSP, og velg et digitalt filter fra verktøylinjen øverst og dra det til vår applikasjon. Vel velg et glidende gjennomsnittsfilter fordi det er en av de enkleste filtypene. Etter at du har slettet filteret, vil bildene oppdateres automatisk. (Klikk for å starte MicroModeler DSP i et nytt vindu) Vi vet alle hva et gjennomsnitt er - legg tallene sammen og divider med hvor mange det er. Et glidende gjennomsnittsfilter gjør akkurat det. Den lagrer en historie med de siste N-tallene og sender ut gjennomsnittet. Hver gang et nytt nummer kommer inn, beregnes gjennomsnittet effektivt fra de lagrede prøvene, og et nytt nummer blir utført. Frekvensresponsen til et filter Øverst til høyre ser vi grafen for Magnitude vs Frequency, eller hvor mange forskjellige frekvenser vil bli forsterket eller redusert med det bevegelige gjennomsnittlige filteret. Som du kanskje regner med, vil gjennomsnittet av de siste N-prøvene gjelde en viss utjevning til signalet, holde de lave frekvensene og fjerne høyfrekvensene. Vi kan kontrollere antall tidligere innganger, eller prøver som det blir gjennomsnittlig ved å justere filterlengden, N. Ved å justere dette kan vi se at vi har noen grunnleggende kontroll over hvilke frekvenser som kan passere og som kasseres. Innsiden av et filter Hvis vi ser på strukturvisningen, kan vi se hva innsiden av et bevegelig gjennomsnittsfilter kan se ut. Diagrammet er annotert for å vise hva de forskjellige symbolene betyr. Z -1 symbolene betyr forsinkelse med en gangs prøve og symbolene betyr å legge til eller kombinere signaler. Pilene betyr multiplikasjon (tenk forsterk, reduser eller skala) signalet med mengden vist til høyre for pilen. For et gjennomsnitt på 5 prøver tar vi en femtedel (0.2) av den siste prøven, en femtedel av den nest siste prøven og så videre. Kjeden av forsinkelser kalles en forsinkelseslinje med inngangssignalet som blir forsinket med et ekstra tidstrinn når du går langs forsinkelseslinjen. Pilene kalles også kraner, så du kan nesten forestille deg at de er kraner som den i kjøkkenvasken som er alle en femtedel åpen. Du kan forestille signalet som strømmer inn fra venstre og blir gradvis forsinket når det beveger seg langs forsinkelseslinjen, og rekombineres i forskjellige styrker gjennom tappene for å danne utgangen. Det bør også være enkelt å se at filterets utgang er: Hvilket er ekvivalent med gjennomsnittet av de siste 5 prøvene. (Inngang t-N betyr forsinket inngang fra tid t-N) I praksis vil koden generert av MicroModeler DSP bruke triks for å gjøre dette mer effektivt, slik at bare første og siste prøver må være involvert, men diagrammet er godt for illustrative formål. Hvis du kan forstå dette, kan du få en ide om hva et FIR-filter er. Et FIR-filter er identisk med det bevegelige gjennomsnittsfilteret, men i stedet for at alle trykkstyrker er de samme, kan de være forskjellige. Her har vi et bevegelig gjennomsnittsfilter og et FIR filter. Du kan se at de er strukturelt like, den eneste forskjellen er styrken på kranene. Neste avsnitt vil introdusere deg til Finite Impulse Response (FIR) filtre. Ved å variere trykkstyrken, kan vi opprette nær alle frekvensresponser som vi vil ha. FIR Filter Basics 1.1 Hva er quotFIR filtersquot FIR-filtre er en av to primære typer digitale filtre som brukes i DSP-programmer (Digital Signal Processing), den andre typen å være IIR. 1.2 Hva betyr quotFIRquot betyr quotFIRquot quotFinite Impulse Responsequot. Hvis du legger inn en impuls, det vil si en enkelt quot1quot-prøve etterfulgt av mange quot0quot-prøver, vil nuller komme ut etter at quot1quot-prøven har gått gjennom filterets forsinkelseslinje. 1.3 Hvorfor er impulsresponsen quotfinitequot I det vanlige tilfellet er impulsresponsen endelig fordi det ikke er tilbakemelding i FIR. Manglende tilbakemelding garanterer at impulsresponsen vil være endelig. Derfor er uttrykket quotfinite impulse responsequot nesten synonymt med quotno feedbackquot. Men hvis tilbakemeldingen er ansatt, er impulsresponsen endelig, men filteret er fortsatt en FIR. Et eksempel er det bevegelige gjennomsnittsfilteret, hvor den Nth-forhåndseksempler trekkes tilbake (hver gang en ny prøve kommer inn). Dette filteret har en endelig impulsrespons, selv om den bruker tilbakemelding: etter N prøver av en impuls, vil utgangen vil alltid være null. 1.4 Hvordan uttaler jeg quotFIRquot Noen sier at bokstavene F-I-R andre uttaler som om det var en type tre. Vi foretrekker treet. (Forskjellen er om du snakker om et F-I-R-filter eller et FIR-filter.) 1.5 Hva er alternativet til FIR-filtre DSP-filtre kan også være quotInfinite Impulse Responsequot (IIR). (Se dspGurus IIR FAQ.) IIR-filtre bruker tilbakemelding, så når du skriver inn en impuls, ringer utgangen teoretisk på ubestemt tid. 1.6 Hvordan sammenligner FIR-filtre med IIR-filtre Hver har fordeler og ulemper. Samlet sett er fordelene ved FIR-filter større enn ulempene, så de brukes mye mer enn IIR. 1.6.1 Hva er fordelene med FIR-filter (sammenlignet med IIR-filtre) Sammenlignet med IIR-filtre, tilbyr FIR-filtre følgende fordeler: De kan enkelt utformes for å være kvadratlinjefase (og vanligvis er). Enkelt sagt, linjeskiftfiltre forsinker inngangssignalet, men donrsquot forvrenger sin fase. De er enkle å implementere. På de fleste DSP-mikroprosessorer kan FIR-beregningen gjøres ved å løse en enkelt instruksjon. De er egnet til multi-rate applikasjoner. Med multi-rate mener vi enten quotdecimationquot (redusere samplingsfrekvensen), quotinterpolationquot (øke samplingsfrekvensen), eller begge deler. Uansett om deimerer eller interpolerer, gjør bruk av FIR-filtre det mulig å utelate noen av beregningene, og gir dermed en viktig beregningseffektivitet. I motsetning dersom IIR-filtre brukes, må hver utgang beregnes individuelt, selv om den utgangen vil kasseres (slik at tilbakemeldingen vil bli innlemmet i filteret). De har ønskelige numeriske egenskaper. I praksis må alle DSP-filtre implementeres ved å bruke finite-presis aritmetikk, det vil si et begrenset antall biter. Bruk av finite-presisjon aritmetikk i IIR-filtre kan forårsake betydelige problemer på grunn av bruk av tilbakemelding, men FIR-filtre uten tilbakemelding kan vanligvis implementeres med færre biter, og designeren har færre praktiske problemer å løse i forbindelse med ikke-ideell aritmetikk. De kan implementeres ved hjelp av fraksjonal aritmetikk. I motsetning til IIR-filtre, er det alltid mulig å implementere et FIR-filter ved hjelp av koeffisienter med størrelsen mindre enn 1,0. (Den samlede gevinsten til FIR-filteret kan justeres ved utgang, hvis ønskelig.) Dette er et viktig hensyn når du bruker fastpunkts-DSP, fordi det gjør implementeringen mye enklere. 1.6.2 Hva er ulempene med FIR-filter (sammenlignet med IIR-filtre) Sammenlignet med IIR-filtre, har FIR-filtre noen ganger den ulempen at de trenger mer minne og eller annen beregning for å oppnå en bestemt filterresponskarakteristikk. Også enkelte svar er ikke praktiske å implementere med FIR-filtre. 1.7 Hvilke begreper brukes til å beskrive FIR-filter Impulsrespons - Quimpulsresponsequot av et FIR-filter er faktisk bare settet med FIR-koeffisienter. (Hvis du legger et kvoteprotokvot i et FIR-filter som består av en quot1quot-prøve etterfulgt av mange quot0quot-prøver, vil filterets utgang være settet av koeffisienter, da den ene prøven beveger seg forbi hver koeffisient i sin tur for å danne utgangen.) Trykk - En FIR quottapquot er bare et koeffisientpar. Antallet FIR-kraner, ofte angitt som quotNquot, er en indikasjon på 1) mengden minne som kreves for å implementere filteret, 2) antall kalkulasjoner som kreves, og 3) mengden av kvoteringskvotene som filteret kan utføre, flere kraner betyr mer stoppbånddemping, mindre krusninger, smalere filtre, etc. Multiply-Accumulate (MAC) - I en FIR-sammenheng er en quotMACquot drift av å multiplisere en koeffisient av den tilsvarende forsinkede dataprøven og akkumulere resultatet. FIRs krever vanligvis en MAC per trykk. De fleste DSP mikroprosessorer implementerer MAC-operasjonen i en enkelt instruksjons syklus. Overgangsbånd - Båndet mellom frekvenser mellom passbånd og stoppbåndskanter. Jo smalere overgangsbåndet, desto flere kraner er nødvendig for å implementere filteret. (Et quotsmallquot overgangsbånd resulterer i et quotsharpquot filter.) Delay Line - Settet av minneelementer som implementerer quZ-1quot forsinkelseselementene i FIR-beregningen. Sirkulær buffer - En spesiell buffer som er quotcircularquot fordi inkrementering på slutten fører til at den vikles rundt til begynnelsen, eller fordi dekrementering fra begynnelsen fører til at den vikles rundt til slutten. Sirkulære buffere leveres ofte av DSP mikroprosessorer for å implementere kvoteringskvoten av prøvene gjennom FIR-forsinkelseslinjen uten å måtte bokstavelig talt flytte dataene i minnet. Når en ny prøve legges til bufferen, erstatter den automatisk den eldste. Scientist og Engineers Guide til Digital Signal Processing av Steven W. Smith, Ph. D. Kapittel 14: Introduksjon til digitale filtre Digitale filtre er en svært viktig del av DSP. Faktisk er deres ekstraordinære ytelse en av hovedårsakene til at DSP er blitt så populært. Som nevnt i introduksjonen har filtre to bruksområder: Signalseparasjon og signalgjenoppretting. Signalseparasjon er nødvendig når et signal har blitt forurenset med interferens, støy eller andre signaler. For eksempel, tenk en enhet for å måle den elektriske aktiviteten til et babys hjerte (EKG) mens du fortsatt er i livmor. Råsignalet vil trolig bli ødelagt av pusten og hjerteslaget til moren. Et filter kan brukes til å skille disse signalene slik at de kan analyseres individuelt. Signalgjenoppretting brukes når et signal er forvrengt på noen måte. For eksempel kan et lydopptak laget med dårlig utstyr filtreres for å bedre representere lyden som den faktisk fant sted. Et annet eksempel er deblurring av et bilde som er oppnådd med en feilfokusert linse eller et rystende kamera. Disse problemene kan angripes med enten analoge eller digitale filtre. Som er bedre Analog filtre er billige, raske, og har et stort dynamisk område i både amplitude og frekvens. Digitale filtre er i sammenligning langt bedre i ytelsesnivået som kan oppnås. For eksempel har et lavpas digitalt filter som presenteres i kapittel 16 en gevinst på 1-0.0002 fra DC til 1000 hertz, og en gevinst på mindre enn 0,0002 for frekvenser over 1001 hertz. Hele overgangen skjer innen bare 1 hertz. Forvent ikke dette fra en op amp krets Digitale filtre kan oppnå tusenvis av ganger bedre ytelse enn analoge filtre. Dette gjør en dramatisk forskjell i hvordan filtreringsproblemer nærmer seg. Med analoge filtre ligger vekt på å håndtere begrensninger av elektronikken, slik som motstanden og stabiliteten til motstandene og kondensatorene. Til sammenligning er digitale filtre så gode at filterets ytelse ofte ignoreres. Vekten skifter til begrensningene av signalene. og de teoretiske problemene knyttet til behandlingen. Det er vanlig i DSP å si at filtreinngangs - og utgangssignaler er i tidsdomene. Dette skyldes at signaler vanligvis opprettes ved prøvetaking med jevne mellomrom. Men dette er ikke den eneste måten prøvetaking kan finne sted. Den nest vanligste måten å prøve ut, er med like store mellomrom i rommet. For eksempel, tenk å ta samtidige avlesninger fra en rekke spenningssensorer montert med en centimeter trinn langs lengden på en flygel. Mange andre domener er imidlertid mulig, tid og rom er langt den vanligste. Når du ser begrepet tidsdomene i DSP, husk at det faktisk kan referere til prøver tatt over tid, eller det kan være en generell referanse til et hvilket som helst domene som prøvene tas inn. Som vist i figur 14-1, vil hver lineær filteret har en impulsrespons. et trinnrespons og et frekvensrespons. Hvert av disse svarene inneholder fullstendig informasjon om filteret, men i en annen form. Hvis en av de tre er angitt, er de andre to faste og kan beregnes direkte. Alle tre representasjonene er viktige, fordi de beskriver hvordan filteret vil reagere under ulike forhold. Den enkleste måten å implementere et digitalt filter på er å samle inngangssignalet med impulsresponsen til digitale filtre. Alle mulige lineære filtre kan gjøres på denne måten. (Dette burde være klart. Hvis det ikke er, har du sannsynligvis ikke bakgrunnen for å forstå denne delen om filterdesign. Prøv å gå gjennom forrige avsnitt om DSP-grunnleggende). Når impulsresponsen brukes på denne måten, gir filterdesignere det et spesielt navn: filterkjernen. Det er også en annen måte å lage digitale filtre, kalt rekursjon. Når et filter implementeres ved konvolusjon, beregnes hver prøve i utgangen ved å veie prøvene i inngangen, og legge dem sammen. Rekursive filtre er en forlengelse av dette, ved hjelp av tidligere beregnede verdier fra utgangen. foruten poeng fra inngangen. I stedet for å bruke en filterkjerne, defineres rekursive filtre av et sett av rekursjonskoeffisienter. Denne metoden vil bli diskutert i detalj i kapittel 19. For nå er det viktige punktet at alle lineære filtre har et impulsrespons, selv om du ikke bruker den til å implementere filteret. For å finne impulsresponsen til et rekursivt filter, må du bare gi en impuls og se hva som kommer ut. Impulsresponsene av rekursive filtre er sammensatt av sinusoider som eksponentielt forfall i amplitude. I prinsippet gjør dette deres impulsrespons uendelig lang. Imidlertid faller amplituden til slutt under avrundet støy av systemet, og de gjenværende prøvene kan ignoreres. På grunn av denne egenskapen blir rekursive filtre også kalt Infinite Impulse Response eller IIR filtre. Til sammenligning kalles filtre utført ved konvolutt Finite Impulse Response eller FIR filtre. Som du vet, er impulsresponsen utgangen av et system når inngangen er en impuls. På samme måte er trinnsvaret utgangen når inngangen er et trinn (også kalt en kant og et kantsvar). Siden trinnet er integralet av impulsen, er trinnresponsen integral av impulsresponsen. Dette gir to måter å finne trinnsvaret: (1) feed en trinnbølgeform i filteret og se hva som kommer ut, eller (2) integrere impulsresponsen. (For å være matematisk korrekt: integrasjon brukes med kontinuerlige signaler, mens diskret integrasjon, dvs. en løpende sum, brukes med diskrete signaler). Frekvensresponsen kan bli funnet ved å ta DFT (ved hjelp av FFT-algoritmen) av impulsresponsen. Dette vil bli vurdert senere i dette kapittelet. Frekvensresponsen kan tegnes på en lineær vertikal akse, som i (c), eller på en logaritmisk skala (desibel), som vist i (d). Den lineære skalaen er best på å vise passbåndet rippel og avrulling, mens dekibelskalaen er nødvendig for å vise stoppbånddempingen. Ikke husk desibel Her er en rask anmeldelse. En bel (til ære for Alexander Graham Bell) betyr at kraften endres med en faktor på ti. For eksempel produserer en elektronisk krets som har 3 bels amplifisering et utgangssignal med 10 ganger 10 ganger 10 1000 ganger effekten av inngangen. En decibel (dB) er en tiendedel av en bel. Derfor betyr decibelverdiene for: -20dB, -10dB, 0dB, 10dB amp 20dB, henholdsvis effektforholdene: 0,01, 0,1, 1, 10, amp 100. Med andre ord betyr hvert ti desibel at kraften har endret seg med en faktor på ti. Heres fangsten: du vil vanligvis jobbe med en signal amplitude. ikke dens makt. For eksempel tenk en forsterker med 20dB gevinst. Per definisjon betyr dette at kraften i signalet har økt med en faktor på 100. Siden amplituden er proporsjonal med kvadratroten av effekten, er amplitude av utgangen 10 ganger amplituden til inngangen. Mens 20dB betyr en faktor på 100, betyr det bare en faktor på 10 i amplitude. Hver tjue desibel betyr at amplituden har forandret seg med en faktor på ti. I ligningsform: De ovennevnte ligningene bruker basen 10 logaritmen, men mange dataspråk gir bare en funksjon for base e logaritmen (den naturlige loggen, skrevet logg e eller ln x). Den naturlige loggen kan brukes ved å modifisere ovennevnte ligninger: dB 4.342945 log e (P 2 P 1) og dB 8.685890 log e (A 2 A 1). Siden desibel er en måte å uttrykke forholdet mellom to signaler, er de ideelle for å beskrive forsterkningen av et system, dvs. forholdet mellom utgang og inngangssignal. Men ingeniører bruker også desibel til å spesifisere amplitude (eller kraft) av et enkelt signal, ved å referere til noe standard. For eksempel betyr termen: dBV at signalet refereres til et 1 volt rms signal. På samme måte indikerer dBm et referansesignal som produserer 1 mW til en 600 ohm belastning (ca. 0,78 volt rms). Hvis du ikke forstår noe annet om desibel, husk to ting: For det første, -3dB betyr at amplitude er redusert til 0.707 (og strømmen er derfor redusert til 0,5). For det andre, husk følgende konverteringer mellom desibel og amplitudeforhold: Moving Average Filter Beskrivelse MovingAverageFilter implementerer et lavpass glidende gjennomsnittlig filter. MovingAverageFilter er en del av Preprocessing Modules. Et eksempel på et signal (sinusbølgeavhengig støy) filtrert ved hjelp av et glidende gjennomsnittsfilter. Det røde signalet er den opprinnelige signalstøyen, det grønne signalet er det filtrerte signalet ved hjelp av et glidende gjennomsnittsfilter med en vindustørrelse på 5, og det blå signalet er det filtrerte signalet ved hjelp av et glidende gjennomsnittsfilter med en vindustørrelse på 20. MovingAverageFilterExampleImage1. jpg-fordeler MovingAverageFilter er bra for å fjerne en liten mengde høyfrekvent støy fra et N-dimensjonssignal. Ulemper Den største ulempen ved MovingAverageFilter er at for å filtrere ut signifikant høyfrekvent støy, må filterstørrelsen på filteret være stor. Problemet med å ha et stort filtervindu er at dette vil forårsake stor latens i ethvert signal som passerer gjennom filteret, noe som kanskje ikke er fordelaktig for sanntidsapplikasjoner. Hvis du finner ut at du trenger et stort filtervindu for å filtrere ut høyfrekvent støy, og latensen fremkalt av dette vinduets størrelse ikke passer for din sanntidsapplikasjon, vil du kanskje prøve enten et dobbeltflytende gjennomsnittfilter eller lavpasfilter i stedet. Eksempelkode GRT MovingAverageFilter Eksempel Dette eksempelet viser hvordan du lager og bruker GRT MovingAverageFilter PreProcessing Module. MovingAverageFilter implementerer et lavpass glidende gjennomsnittlig filter. I dette eksemplet oppretter vi en forekomst av en MovingAverageFilter og bruker dette til å filtrere noen dummy data, generert fra en sinusbølge tilfeldig støy. Testsignalet og filtrerte signaler blir deretter lagret i en fil (slik at du kan plotte resultatene i Matlab, Excel, etc. hvis nødvendig). Dette eksempelet viser hvordan du: - Lag en ny MovingAverageFilter-forekomst med en bestemt vindusstørrelse for et 1-dimensjonalt signal - Filtrer noen data ved hjelp av MovingAverageFilter - Lagre MovingAverageFilter-innstillingene til en fil - Legg inn MovingAverageFilter-innstillingene fra en fil, inkluderer quotGRT. hquot bruker navneområde GRT int main 40 int argc. const char argv 91 93 41 123 Opprett en ny forekomst av et bevegelig gjennomsnittsfilter med en vindustørrelse på 5 for et 1-dimensjonalt signal MovingAverageFilter-filter 40 5. 1 41 Opprett og åpne en fil for å lagre datafilens filfil. åpne 40 quotMovingAverageFilterData. txtquot. fstream. ut 41 Generer noen data (sinusbølge støy) og filtrer den dobbel x 0 const UINT M 1000 Tilfeldig tilfeldig for 40 UINT i 0 I lt I 41 123 dobbelt signal sin 40 x 41 tilfeldig. getRandomNumberUniform 40 - 0.2. 0,2 41 dobbeltfilterValuefilter. filter 40 signal 41 fil l ltt signal l lt kvittet filtrertValue LLT endl x TWOPI dobbelt 40 M 41 10 125 Lukk filfilen. lukk 40 41 Lagre filterinnstillingene til et filfilter. saveSettingsToFile 40 quotMovingAverageFilterSettings. txtquot 41 Vi kan deretter laste inn innstillingene senere hvis det er nødvendig, filter. loadSettingsFromFile 40 quotMovingAverageFilterSettings. txtquot 41 returnering EXITSUCCESS 125 MovingAverageFilter fungerer også med et N-dimensjonalt signal: Opprett en ny forekomst av MovingAverageFilter med en vindustørrelse på 10 for et 3-dimensjonalt signal MovingAverageFilter-filter 40 10. 3 41 Verdien du vil filtrere vektor lt dobbelt gt data 40 3 41 data 91 0 93 0. Få verdi fra sensordata 91 1 93 0. Få verdi fra sensordata 91 2 93 0. Få verdi fra sensor Filtrer signalvektoren lt double gt filteredValue filter. filter 40 data 41 kode amp ressurser

No comments:

Post a Comment