Thursday 16 November 2017

Kalman Filter Moving Average Matlab


Denne tråden spør når et diskret tids Kalman filter er bedre enn et enkelt bevegelige gjennomsnitt av observasjonene: det er ikke et definitivt svar. kan noen gi et definitivt eksempel der kalmanfilteret, ideelt sett i enkle 1D-tilfelle, gjør noe annerledes (og bedre) enn å holde et glidende gjennomsnitt, og angi forholdene når kalmanfilteret ville redusere til et enkelt glidende gjennomsnitt, en tanke er at kalman filter ville ikke veie alle datapunktene like fordi dets varians er i utgangspunktet mindre og blir bedre med tiden. men det høres ut som om det bare ville ha betydning i forhold til de første observasjonene, og at når variansen kom sammen, ville kalmanfilteret veie hver observasjon like mye som et bevegelige gjennomsnitt, så ikke se når de to er forskjellige og hvorfor når filteret ville gjøre det bedre. spurte 17 februar klokken 23:52 som det første svaret (med flest stemmer) sier kalman-filteret er bedre i alle fall når signalet endrer seg. Legg merke til problemstillingen Disse bruker algoritmen til å anslå noen konstant spenning. Hvordan kunne et Kalman filter for dette være bedre enn bare å holde et løpende gjennomsnitt? Er disse eksemplene bare forenklet bruk tilfeller av filteret ved hjelp av et kalmanfilter for å estimere en konstant spenning er definitivt overkill. I det spesifikke problemet er det bedre å bruke løpende gjennomsnittet, som vi vet er den beste estimatoren for Gauss-distribusjoner. I dette eksemplet er den målte spenningen den faktiske spenningen V, men med litt støy typisk modellert som 0 betyr Gaussisk (hvit støy). slik at våre målinger er gaussiske med meanV og sigmasigma støy. Kalman-filteret er bedre egnet til å estimere ting som endrer seg over tid. Det mest konkrete eksemplet er sporing av bevegelige objekter. La oss forestille oss å kaste en ball, vi vet at det vil gjøre en parabolbue, men hva vil våre estimatorer vise. Et Kalman filter vil være svært nær den faktiske bane fordi det står at den siste måling er viktigere enn de eldre (når kovariansen er lav det er). Det løpende gjennomsnittet tar alle målinger like blåballbane, røde løpende gjennomsnitt (beklager, ikke kalman hvis jeg har syk tid kaster den inn der hvis jeg har tid, men det ville meg mye nærmere den blå linjen hvis du modellerte systemet godt ) Kalman-filteret sier derimot at hvis vår sammenheng og rest var liten (det betyr at vi hadde et godt estimat), så skal vi holde fast ved tidligere estimater og justere det en liten bit basert på rest (eller vår estimering feil). Nå siden vår xhat kk ligger svært nær den faktiske tilstanden, vil vi bruke en systemtilstand som nære samsvarer med den faktiske tilstanden når vi utarbeider neste oppdatering. Ved x30, det løpende gjennomsnittet sier, den opprinnelige tilstanden y (0) er like viktig som y (29), det er det, og du får en stor feil. Kalman-filteret sto for dette. Det er sagt siden feilen vår siste gangen var stor, la oss gjøre en drastisk endring i vårt estimat (vår xhat), så når vi bruker den til neste oppdatering, vil den komme nærmere hva som faktisk skjer. Jeg håper det gir mening jeg bare la merke til Spørsmålet ditt spørre om et bevegelige gjennomsnitt mot Kalman. Jeg svarte å kjøre avg vs kalman (det er emnet for lenken du oppgav) Bare for å legge litt mer info spesifikt til det bevegelige (windowed) gjennomsnittet. Det bevegelige gjennomsnittet er en bedre estimator for endrede verdier. Siden det bare tar hensyn til nyere prøver. Dessverre har det et lag i tilknytning til det, spesielt ved å endre derivater (Bare se nær t30, hvor derivatet går fra positivt til negativt). Dette skyldes at gjennomsnittet er sakte for å se svingninger. Det er vanligvis hvorfor vi bruker det, for å fjerne svingninger (støy). Vinduestørrelsen spiller også en rolle. Et mindre vindu er vanligvis nærmere de målte verdiene, noe som gir mening og høres bra ut. Ulempen av dette er at hvis du har støyende målinger, betyr et lite vindu at mer støy vises mer i utgangen. La oss se på det andre spørsmålet igjen målinger med gjennomsnittlig .5, sigma .1 z 0,3708435, 0,4985331, 0,4652121. gjennomsnittet av de tre første prøvene er 0,44448629, ikke akkurat i nærheten av .5 forventet verdi. Dette viser igjen at med det mindre vinduet har støy en dypere effekt på utgangen. Så så logisk er vårt neste skritt å ta større vinduer for å forbedre støyimmuniteten vår. Vel, det viser seg at større vinduer er enda tregere for å gjenspeile de faktiske endringene (igjen se på t30 i grafen min) og det ekstreme tilfellet med windowing er i utgangspunktet det løpende gjennomsnittet (som vi allerede vet er dårlig for å endre data). Nå tilbake til den magiske kalman filter. Hvis du tenker på det, det ligner på et 2-utvalgsvinduet gjennomsnitt (tilsvarende ikke det samme). Se på X kk i oppdateringstrinnet, det tar forrige verdi, og legger til en vektet versjon av gjeldende utvalg. Du kan tenke, vel hva med støy Hvorfor er det ikke utsatt for det samme problemet som vinduet gjennomsnitt med en liten prøvetakestørrelse Fordi kalmanfilteret tar hensyn til usikkerheten til hver måling. Vektningsverdien K (kalman gain) kan være omtalt som et forhold mellom kovariansen (usikkerheten) av ditt estimat og kovariansen (usikkerheten) av det nåværende estimatet (faktisk er det resterende, men det er lettere å tenke på det på denne måten) . Så hvis den siste måling har mye usikkerhet K, reduseres, og dermed spiller den nyeste prøven en mindre rolle. Hvis den siste måling har mindre usikkerhet enn prediksjonen, øker k, og nå spiller den nye informasjonen et større rolle i neste estimat. Så selv med en liten utvalgsstørrelse blokkerer kalmanfilteret fortsatt mye av støyen. Uansett håper jeg det svarer vinduet avg vs kalman spørsmålet nå besvart feb 18 15 kl 03:34 En annen gang: Kalman-filteret lar deg legge til mer informasjon om hvordan systemet du filtrerer. Med andre ord kan du bruke en signalmodell for å forbedre filterets utgang. Visst, et glidende gjennomsnittsfilter kan gi svært gode resultater når du forventer en nær-konstant utgang. Men så snart signalet du har modellert er dynamisk (tenk tale eller posisjon målinger), vil det enkle, glidende gjennomsnittlige filteret ikke endres raskt nok (eller i det hele tatt) i forhold til hva Kalman Filter vil gjøre. Kalman-filteret bruker signalmodellen, som fanger din kunnskap om hvordan signalet endres, for å forbedre sin produksjon i forhold til variansen fra sannheten. besvart feb 18 15 kl 13: 11 Jeg har forsøkt å forstå Kalman-filtre. Her er noen eksempler som har hjulpet meg så langt: Disse bruker algoritmen til å anslå noen konstant spenning. Hvordan kan et Kalman-filter for dette være bedre enn bare å holde et løpende gjennomsnitt? Er disse eksemplene bare forenklet brukstilfeller av filteret. (Hvis ja, hva er et eksempel der et løpende gjennomsnitt ikke er tilstrekkelig?) For eksempel, vurder følgende Java-program og utgang . Kalman-utgangen samsvarer ikke med gjennomsnittet, men de er veldig nært. Hvorfor plukke en over den andre JA det er oversimplified eksempel, mer misvisende enn utdannelse. I så fall, hva er et eksempel der et løpende gjennomsnitt ikke er tilstrekkelig Uansett når signalet endres. Tenk deg å flytte kjøretøy. Beregning av gjennomsnitt betyr at vi antar signalverdi fra et øyeblikk til å være like viktig. Tydeligvis er det feil. Intuisjon sier, den siste måling er mer pålitelig enn den fra en time før. Et veldig godt eksempel på å eksperimentere med er av form frac. Den har en stat, slik at ligningene ikke blir kompliserte. På diskret tid kan det se slik ut: Det er koden som bruker den (jeg beklager sin Matlab, jeg brukte ikke Python nylig): Det er noen tips: Still alltid Q og R større enn null. Case Q 0 er veldig dårlig eksempel. Du sier til filteret: det er ingen forstyrrelse som virker på anlegget, så etter en stund vil filteret bare tro på sine spådommer basert på modell i stedet for å se på målinger. Matematisk sett Kk til 0. Som vi kjenner modeller, beskrives ikke virkeligheten perfekt. Eksperimenter med noen modell unøyaktighet - modelError Endre første gjetning av staten (xpost (1)) og se hvor raskt den konvergerer for forskjellige Q, R og innledende Ppost (1) Kontroller hvordan filteret får K endringer over tid, avhengig av Q og R svarte Okt 3 12 kl 22:37 Faktisk er de samme i viss forstand, jeg vil vise noe bak Kalman filteret og du vil bli overrasket. Vurder følgende enkleste estimeringsproblemet. Vi får en rekke målinger z1, z2, cdots, zk, av en ukjent konstant x. Vi antar at additivmodellen begynner zi x vi, i1,2, cdots, k (1) slutten der vi er målerlyder. Hvis ingenting annet er kjent, vil alle være enige om at et rimelig estimat på x gitt k-målene kan gis ved å begynne hatten k frac sum zi Nå kan vi skrive om over ekv. (2) ved enkel algebraisk manipulering for å få begynnelsen hatten k hat frac (zk-hat) (3) ende ekv. (3) som ganske enkelt er ekv. (2) uttrykt i rekursiv form har en interessant tolkning. Det står at det beste estimatet av x etter k måling er det beste estimatet av x etter k-1 målinger pluss en korreksjonsperiode. Korrigeringsperioden er forskjellen mellom det du forventer å måle basert på k-1-måling, dvs. og hva du faktisk måler zk. Hvis vi merker korrigeringsfrekvensen som Pk, kan det igjen bare algebraisk manipulasjon skrive rekursiv form av Pk som begynnelse PkP-P (P 1) P Tro det eller ei, Eqs. (3-4) kan gjenkjennes som Kalman-filtreringen ligninger for dette enkle tilfellet. Eventuell diskusjon er velkommen. For å gi litt smak, se denne listen over bøker: Jeg har GrewalAndrews med MatLab, også GrewalWeillAndrews om GPS. Det er det grunnleggende eksemplet, GPS. Her er et forenklet eksempel, jeg intervjuet for en jobb hvor de skrev programvare for å holde oversikt over alle lastebiler som går inn og ut av et stort leveringssted, for Walmart eller lignende. De hadde to typer informasjon: Basert på å sette en RFID-enhet i hver lastebil, hadde de ganske god informasjon om hvilken retning hver lastebil gikk med målinger mulig mange ganger per sekund, men til slutt vokser i feil, slik som en hvilken som helst vesentlig ODE-tilnærming. På en mye lengre tidskala kunne de ta GPS-posisjonen til en lastebil, noe som gir en veldig god, upartisk plassering, men har en stor varianse, du får posisjon innen 100 meter eller noe. Hvordan kombinere disse Det er hovedbruken av Kalman-filteret, når du har to kilder til informasjon som gir omtrent motsatte feiltyper. Min ide, som jeg ville ha fortalt dem om de hadde betalt meg, var å plassere en enhet på hver semi hvor førerhuset møter tilhengeren, og gir den nåværende svingradiusen. Dette kunne ha vært integrert for å gi veldig god korttidsinformasjon om hvilken retning lastebilen var på vei. Vel, det er det de gjør med nesten alt som beveger seg i dag. Den jeg trodde var søt var gårder i India, og holdt oversikt over hvor traktorer var. Den bevegelige kroppen trenger ikke å bevege seg raskt for å få de samme spørsmålene. Men selvfølgelig var den første store bruken NASA Apollo-prosjektet. Min far møtte Kalman på et tidspunkt. Pappa jobbet for det meste på navigasjon, i utgangspunktet raketter for hæren, senere ubåter for marinen. svarte 22. juli kl 19: 25Kalman filter verktøykasse for Matlab Kalman filter verktøykasse for Matlab Skrevet av Kevin Murphy, 1998. Sist oppdatert: 7. juni 2004. kalmanfilter kalmansmoother - implementerer RTS ligningene learnkalman - finner størst sannsynlighet estimater av parametrene ved hjelp av EM samplelds - generere tilfeldige prøver ARtoSS - konvertere Auto Regressive bestillingsmodell k til Stat Space Space form SStoAR learnAR - finner størst sannsynlighet estimater av parametrene ved hjelp av minst firkanter Hva er et Kalman filter For et utmerket nettsted, se WelchBishops KF side. For en kort introduksjon, les videre. Et lineært dynamisk system er en delvis observert stokastisk prosess med lineær dynamikk og lineære observasjoner, begge underlagt Gaussisk støy. Det kan defineres som følger, der X (t) er den skjulte tilstanden ved tid t, og Y (t) er observasjonen. Kalman-filteret er en algoritme for å utføre filtrering på denne modellen, dvs. beregning av P (X (t) Y (1). Y (t)). Rauch-Tung-Striebel (RTS) - algoritmen utfører fast-intervall offlineutjevning, dvs. beregning P (X (t) Y (1). Y (T)) for t

No comments:

Post a Comment