Korištenje Kalmanovog filtra za obradu niza GPS koordinata. Suvremeni problemi znanosti i obrazovanja Kalmanov filtar za trajektorijska mjerenja

04.03.2021 Vijesti

Nekako se dogodilo da mi se jako sviđaju sve vrste algoritama koji imaju jasno i logično matematičko opravdanje) Ali često je njihov opis na Internetu toliko preopterećen formulama i izračunima da je jednostavno nemoguće razumjeti opće značenje algoritma. Ali razumijevanje suštine i principa rada uređaja/mehanizma/algoritma puno je važnije od pamćenja ogromnih formula. Koliko god banalno bilo, pamćenje čak i stotine formula neće vam pomoći ako ne znate kako i gdje ih primijeniti 😉 Zapravo, čemu sve ovo.. Odlučio sam napraviti opis nekih algoritama koji Morao sam se susresti u praksi. Nastojat ću ne pretrpavati matematičkim izračunima kako bi materijal bio razumljiv i lak za čitanje.

A danas ćemo razgovarati o Kalmanov filter, shvatimo što je to, zašto i kako se koristi.

Počnimo s malim primjerom. Suočimo se sa zadatkom određivanja koordinata letjelice. Štoviše, naravno, koordinata (označimo je) treba odrediti što je točnije moguće.

U avionu smo unaprijed instalirali senzor koji nam daje potrebne podatke o lokaciji, ali kao i sve na ovom svijetu, naš senzor je nesavršen. Stoga umjesto vrijednosti dobivamo:

gdje je greška senzora, odnosno slučajna varijabla. Dakle, iz netočnih očitanja mjerne opreme, moramo dobiti vrijednost koordinate () koja je što bliža stvarnom položaju zrakoplova.

Zadatak je postavljen, prijeđimo na njegovo rješavanje.

Javite nam radnju upravljanja () zahvaljujući kojoj avion leti (pilot nam je rekao koje poluge povlači 😉). Zatim, znajući koordinatu u k-tom koraku, možemo dobiti vrijednost u (k+1) koraku:

Čini se da je to ono što nam treba! I ovdje nije potreban Kalmanov filter. Ali nije sve tako jednostavno. U stvarnosti ne možemo uzeti u obzir sve vanjske čimbenike koji utječu na let, pa formula ima sljedeći oblik:

gdje je nastala greška vanjski utjecaj, nesavršenost motora itd.

Pa što se događa? U koraku (k+1) imamo, prvo, netočno očitanje senzora, i drugo, netočno izračunatu vrijednost dobivenu iz vrijednosti u prethodnom koraku.

Ideja Kalmanovog filtra je dobiti točnu procjenu željene koordinate (za naš slučaj) iz dvije netočne vrijednosti (uzimajući ih s različitim težinskim koeficijentima). Općenito, izmjerena vrijednost može biti apsolutno bilo što (temperatura, brzina...). Evo što se događa:

Matematičkim izračunima možemo dobiti formulu za izračun Kalmanova koeficijenta u svakom koraku, ali, kao što je dogovoreno na početku članka, nećemo ulaziti dublje u izračune, tim više što je u praksi utvrđeno da Kalmanov koeficijent uvijek teži određenoj vrijednosti kako k raste. Dobivamo prvo pojednostavljenje naše formule:

Sada pretpostavimo da nema veze s pilotom i da ne znamo upravljačku radnju. Čini se da u ovom slučaju ne možemo koristiti Kalmanov filtar, ali to nije tako 😉 Jednostavno “izbacimo” iz formule ono što ne znamo, a zatim

Dobivamo najjednostavniju Kalmanovu formulu, koja se ipak, unatoč takvim "teškim" pojednostavljenjima, savršeno nosi sa svojim zadatkom. Ako rezultate predstavite grafički, dobit ćete nešto poput ovoga:

Ako je naš senzor vrlo precizan, tada bi prirodno težinski koeficijent K trebao biti blizu jedinici. Ako je situacija suprotna, odnosno naš senzor nije baš dobar, tada bi K trebao biti bliže nuli.

To je vjerojatno sve, upravo tako, shvatili smo Kalmanov algoritam filtriranja! Nadam se da je članak bio koristan i razumljiv =)

Random Forest je jedan od mojih omiljenih algoritama rudarenje podataka. Prvo, nevjerojatno je svestran; može se koristiti za rješavanje problema regresije i klasifikacije. Potražite anomalije i odaberite prediktore. Drugo, ovo je algoritam koji je stvarno teško primijeniti na pogrešan način. Jednostavno zato što, za razliku od drugih algoritama, ima nekoliko prilagodljivih parametara. I također je iznenađujuće jednostavan u prirodi. A istovremeno je nevjerojatno precizan.

Koja je ideja iza tako divnog algoritma? Ideja je jednostavna: recimo da imamo neki vrlo slab algoritam, recimo . Ako radimo puno različiti modeli korištenjem ovog slabog algoritma i usrednjavanjem rezultata njihovih predviđanja, konačni rezultat bit će značajno bolji. To je ono što se zove ansambl učenje na djelu. Algoritam Random Forest stoga se naziva "Random Forest"; za primljene podatke stvara mnogo stabala odlučivanja i zatim izračunava prosjek rezultata njihovih predviđanja. Važna točka U stvaranju svakog stabla postoji element slučajnosti. Uostalom, jasno je da ako stvorimo mnogo identičnih stabala, tada će rezultat njihovog usrednjavanja imati točnost jednog stabla.

Kako on radi? Pretpostavimo da imamo neke ulazne podatke. Svaki stupac odgovara nekom parametru, svaki redak nekom elementu podataka.

Možemo nasumično odabrati određeni broj stupaca i redaka iz cijelog skupa podataka i na temelju njih izgraditi stablo odlučivanja.


Četvrtak, 10. svibnja 2012

Četvrtak, 12. siječnja 2012


To je sve. Let od 17 sati je gotov, Rusija ostaje u inozemstvu. A kroz prozor udobnog 2-sobnog stana, San Francisco, poznata Silicijska dolina, Kalifornija, SAD, gleda na nas. Da, upravo je to razlog zašto u zadnje vrijeme nisam puno pisao. Preselili smo se.

Sve je počelo još u travnju 2011. kada sam imao telefonski intervju sa Zyngom. Tada je sve to izgledalo kao neka igra bez veze sa stvarnošću i nisam mogao ni zamisliti do čega će to dovesti. U lipnju 2011. Zynga je došla u Moskvu i obavila niz intervjua, razmatrano je oko 60 kandidata koji su prošli telefonski razgovor i od njih je odabrano oko 15 ljudi (ne znam točan broj, neki su se kasnije predomislili, drugi odmah odbio). Intervju se pokazao iznenađujuće jednostavnim. Nema problema s programiranjem, nema škakljivih pitanja o obliku šrafura, uglavnom testiranje vaše sposobnosti čavrljanja. A znanje se, po meni, ocjenjivalo samo površno.

A onda je počeo ringmarol. Prvo smo čekali rezultate, zatim ponudu, pa odobrenje LCA, pa odobrenje peticije za vizu, pa dokumenti iz SAD-a, pa red u veleposlanstvu, pa dodatna provjera, pa viza. Na trenutke mi se činilo da sam spreman odustati od svega i zabiti. Na trenutke sam sumnjao treba li nam ova Amerika, uostalom, ni Rusija nije loša. Cijeli proces je trajao oko šest mjeseci, na kraju smo sredinom prosinca dobili vize i počeli se pripremati za odlazak.

Ponedjeljak je bio moj prvi radni dan na novom mjestu. Ured ima sve uvjete ne samo za rad, već i za život. Doručci, ručkovi i večere od vlastitih kuhara, mnoštvo raznovrsne hrane natrpano u svakom kutku, teretana, masaža pa čak i frizer. Sve je to potpuno besplatno za zaposlenike. Mnogi ljudi putuju na posao biciklom, a nekoliko prostorija je opremljeno za skladištenje vozila. Općenito, nikad nisam vidio ništa slično u Rusiji. No, sve ima svoju cijenu, odmah su nas upozorili da ćemo morati puno raditi. Što je "puno", po njihovim standardima, nije mi baš jasno.

Nadam se, međutim, da ću unatoč obilju posla u dogledno vrijeme uspjeti nastaviti pisati blog i, možda, ispričati nešto o američkom životu i radu kao programer u Americi. Čekaj i vidi. U međuvremenu, svima želim sretnu Novu godinu i Božić i vidimo se opet!


Za primjer korištenja ispisat ćemo dividendni prinos ruskih tvrtki. Kao osnovnu cijenu uzimamo zaključnu cijenu dionice na dan zatvaranja registra. Iz nekog razloga, ove informacije nisu dostupne na web stranici Trojke, ali su puno zanimljivije od apsolutnih vrijednosti dividendi.
Pažnja! Kodu je potrebno dosta vremena da se izvrši jer... Za svaku promociju potrebno je podnijeti zahtjev finam serverima i dobiti njezinu vrijednost.

Proizlaziti<- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0)( pokušaj(( navodnici<- getSymbols(d$Symbol, src="Finam", from="2010-01-01", auto.assign=FALSE) if (!is.nan(quotes)){ price <- Cl(quotes) if (length(price)>0)(dd<- d$Divs result <- rbind(result, data.frame(d$Symbol, d$Name, d$RegistryDate, as.numeric(dd)/as.numeric(price), stringsAsFactors=FALSE)) } } }, silent=TRUE) } } colnames(result) <- c("Symbol", "Name", "RegistryDate", "Divs") result


Slično, možete izgraditi statistiku za prethodne godine.

Ovaj filtar se koristi u raznim područjima - od radiotehnike do ekonomije. Ovdje ćemo raspravljati o glavnoj ideji, značenju, suštini ovog filtera. Bit će predstavljen na najjednostavnijem mogućem jeziku.
Pretpostavimo da trebamo izmjeriti neke količine određenog predmeta. U radiotehnici se najčešće bave mjerenjem napona na izlazu određenog uređaja (senzor, antena i sl.). U primjeru s elektrokardiografom (vidi) radi se o mjerenju biopotencijala na ljudskom tijelu. U ekonomiji, na primjer, izmjerena vrijednost može biti devizni tečaj. Svaki dan tečaj je drugačiji, tj. svaki dan nam "njegova mjerenja" daju drugu vrijednost. I ako generaliziramo, možemo reći da se najveći dio ljudske aktivnosti (ako ne i sve) svodi na stalna mjerenja i usporedbe određenih veličina (vidi knjigu).
Dakle, pretpostavimo da stalno nešto mjerimo. Također pretpostavljamo da naša mjerenja uvijek dolaze s nekom greškom - to je i razumljivo, jer ne postoje idealni mjerni instrumenti, a svaki daje rezultate s greškom. U najjednostavnijem slučaju opisano se može svesti na sljedeći izraz: z=x+y, gdje je x prava vrijednost koju želimo izmjeriti i koja bi bila izmjerena da imamo idealan mjerni uređaj, y je mjera greška koju unosi mjerni uređaj, a z je veličina koju smo izmjerili. Dakle, zadatak Kalmanovog filtra je pogoditi (odrediti) iz z koji smo izmjerili, koja je prava vrijednost x bila kada smo primili naš z (koji sadrži pravu vrijednost i grešku mjerenja). Potrebno je filtrirati (ukloniti) pravu vrijednost x od z—kako bi se uklonio izobličujući šum y od z. To jest, imajući u ruci samo zbroj, trebamo pogoditi koji su pojmovi dali taj zbroj.
U svjetlu gore navedenog, formulirajmo sada sve na sljedeći način. Neka postoje samo dva slučajna broja. Dan nam je samo njihov zbroj i od nas se traži da pomoću tog zbroja odredimo koji su uvjeti. Na primjer, dobili smo broj 12 i kažu: 12 je zbroj brojeva x i y, pitanje je čemu su jednaki x i y. Da bismo odgovorili na ovo pitanje, kreiramo jednadžbu: x+y=12. Dobili smo jednu jednadžbu s dvije nepoznanice, stoga, strogo govoreći, nije moguće pronaći dva broja koja su dala ovaj zbroj. Ali ipak možemo nešto reći o ovim brojkama. Možemo reći da su to bili ili brojevi 1 i 11, ili 2 i 10, ili 3 i 9, ili 4 i 8, itd., također je bilo ili 13 i -1, ili 14 i -2, ili 15 i - 3, itd. Odnosno, možemo upotrijebiti zbroj (u našem primjeru 12) za određivanje mnogih mogućih opcija koje zbrojem daju točno 12. Jedna od tih opcija je par koji tražimo, a koji zapravo sada daje 12. Također vrijedi napominjući da sve varijante parova brojeva koji daju ukupno 12 tvore ravnu liniju, prikazanu na slici 1, koja je dana jednadžbom x+y=12 (y=-x+12).

Sl. 1

Dakle, par koji tražimo leži negdje na ovoj ravnoj liniji. Ponavljam, nemoguće je od svih ovih opcija izabrati onaj par koji je stvarno postojao - koji je dao broj 12, a da se ne znaju nikakve dodatne naznake. Međutim, u situaciji za koju je Kalmanov filtar izmišljen, takvi tragovi postoje. Nešto se o slučajnim brojevima zna unaprijed. Konkretno, ondje je poznat tzv. histogram raspodjele za svaki par brojeva. Obično se dobiva nakon dovoljno dugog promatranja pojave tih istih slučajnih brojeva. Odnosno, na primjer, iz iskustva je poznato da se u 5% slučajeva obično pojavljuje par x=1, y=8 (taj par označavamo na sljedeći način: (1,8)), u 2% slučajeva par x=2, y=3 ( 2.3), u 1% slučajeva par (3.1), u 0.024% slučajeva par (11.1) itd. Ponavljam, ovaj histogram je dan za sve parove brojeva, uključujući one koji zbrojem daju 12. Dakle, za svaki par koji zbrojem daje 12, možemo reći da se, na primjer, par (1, 11) pojavljuje 0,8% vremena, par ( 2, 10) – u 1% slučajeva, par (3, 9) – u 1,5% slučajeva itd. Dakle, pomoću histograma možemo odrediti u kojem je postotku slučajeva zbroj članova para jednak 12. Neka, na primjer, u 30% slučajeva zbroj daje 12. A u preostalih 70%, preostali parovi ispadaju - to su (1,8), (2, 3), (3,1) itd. – oni koji zbrojem daju brojeve različite od 12. Štoviše, neka se npr. par (7,5) pojavljuje u 27% slučajeva, dok se svi ostali parovi koji zbrojem daju 12 pojavljuju u 0,024%+0,8% +1 %+1,5%+…=3% slučajeva. Dakle, iz histograma smo saznali da se brojevi koji zbrajaju 12 pojavljuju u 30% slučajeva. Štoviše, znamo da ako se padne 12, onda je najčešće (27% od 30%) razlog za to par (7,5). Odnosno, ako već Ako se baci 12, možemo reći da je u 90% slučajeva (27% od 30% - ili, što je isto, 27 puta od svakih 30) razlog za bacanje 12 par (7,5 ). Znajući da je najčešće razlog za primanje zbroja jednakog 12 par (7,5), logično je pretpostaviti da je, najvjerojatnije, sada pao. Naravno, još uvijek nije činjenica da zapravo sada broj 12 čini ovaj određeni par, međutim, sljedeći put, ako naiđemo na 12, i opet pretpostavimo par (7,5), tada u oko 90% slučajeva od 100% bit ćemo u pravu. Ali ako pogodimo par (2, 10), bit ćemo u pravu samo u 1% od 30% slučajeva, što je jednako 3,33% točnih pogađanja u odnosu na 90% kod pogađanja para (7,5). To je to – to je poanta algoritma Kalmanovog filtra. Naime, Kalmanov filtar ne jamči da neće pogriješiti u određivanju zbroja zbrojem, ali jamči da će pogriješiti minimalan broj puta (vjerojatnost pogreške bit će minimalna), jer koristi se statistikom – histogramom pojavljivanja parova brojeva. Također je potrebno naglasiti da Kalmanov algoritam filtriranja često koristi tzv. gustoću distribucije vjerojatnosti (PDD). Međutim, potrebno je razumjeti da je tu značenje isto kao i histogram. Štoviše, histogram je funkcija izgrađena na temelju PDF-a i njegova je aproksimacija (vidi, na primjer,).
U principu, ovaj histogram možemo prikazati kao funkciju dviju varijabli – odnosno u obliku određene površine iznad xy ravnine. Gdje je površina veća, veća je vjerojatnost dobivanja odgovarajućeg para. Slika 2 prikazuje takvu površinu.


sl.2

Kao što vidite iznad pravca x+y=12 (koja ima varijanti parova davanja ukupno 12), točke površine se nalaze na različitim visinama, a najveću visinu ima varijanta s koordinatama (7,5). A kada se susrećemo sa zbrojem jednakim 12, u 90% slučajeva razlog za pojavu tog zbroja je upravo par (7,5). Oni. Upravo taj par, čiji zbroj daje 12, ima najveću vjerojatnost pojavljivanja, pod uvjetom da je zbroj 12.
Stoga je ovdje opisana ideja iza Kalmanovog filtra. Na temelju toga se grade sve vrste njegovih modifikacija - jednostupanjske, višestupanjske rekurentne itd. Za dublje proučavanje Kalmanovog filtra preporučujem knjigu: Van Trees G. Theory of detection, estimation and modulation.

p.s. Za one koje zanimaju objašnjenja pojmova matematike, kako se kaže “na prste”, možemo preporučiti ovu knjigu i to posebno poglavlja iz njezine rubrike “Matematika” (možete kupiti samu knjigu ili pojedina poglavlja iz nje ).

Na internetu, uključujući i Habré, možete pronaći mnogo informacija o Kalman filteru. Ali teško je pronaći lako probavljiv zaključak samih formula. Bez zaključka, cijela se ova znanost doživljava kao neka vrsta šamanizma, formule izgledaju kao bezlični skup simbola, a što je najvažnije, mnoge jednostavne izjave koje leže na površini teorije su izvan razumijevanja. Svrha ovog članka bit će govoriti o ovom filteru na što pristupačnijem jeziku.
Kalmanov filtar moćan je alat za filtriranje podataka. Njegovo glavno načelo je da filtriranje koristi informacije o fizici samog fenomena. Recimo, ako filtrirate podatke s brzinomjera automobila, tada vam inercija automobila daje pravo da prebrze skokove brzine doživljavate kao pogrešku mjerenja. Kalmanov filter je zanimljiv jer je u neku ruku najbolji filter. U nastavku ćemo detaljnije razmotriti što točno znače riječi "najbolje". Na kraju članka pokazat ću da se u mnogim slučajevima formule mogu pojednostaviti do te mjere da od njih ne ostane gotovo ništa.

Obrazovni program

Prije nego što se upoznate s Kalmanovim filtrom, predlažem da se prisjetite nekih jednostavnih definicija i činjenica iz teorije vjerojatnosti.

Slučajna vrijednost

Kada kažu da je data slučajna varijabla, misle da ta vrijednost može poprimiti slučajne vrijednosti. Poprima različite vrijednosti s različitim vjerojatnostima. Kada bacite, recimo, kockicu, pojavit će se diskretni skup vrijednosti: . Kada govorimo, na primjer, o brzini lutajuće čestice, onda, očito, imamo posla s kontinuiranim skupom vrijednosti. “Ispale” vrijednosti slučajne varijable označavat ćemo kroz , no ponekad ćemo koristiti isto slovo kojim označavamo slučajnu varijablu: .
U slučaju kontinuiranog skupa vrijednosti, slučajnu varijablu karakterizira gustoća vjerojatnosti, koja nam diktira da je vjerojatnost da će slučajna varijabla “ispasti” u malom susjedstvu točke duljine jednaka . Kao što vidimo na slici, ova je vjerojatnost jednaka površini osjenčanog pravokutnika ispod grafikona:

Često u životu slučajne varijable imaju Gaussovu raspodjelu kada je gustoća vjerojatnosti jednaka .

Vidimo da funkcija ima oblik zvona sa središtem u točki i karakterističnom širinom reda.
Budući da je riječ o Gaussovoj distribuciji, šteta bi bilo ne spomenuti otkud ona. Kao što su brojevi čvrsto utemeljeni u matematici i nalaze se na najneočekivanijim mjestima, Gaussova distribucija pustila je duboke korijene u teoriji vjerojatnosti. Jedna izvanredna izjava koja djelomično objašnjava Gaussovu sveprisutnost je ova:
Neka postoji slučajna varijabla s proizvoljnom distribucijom (zapravo, postoje neka ograničenja za ovu proizvoljnost, ali ona nisu nimalo stroga). Provedimo pokuse i izračunajmo zbroj "ispuštenih" vrijednosti slučajne varijable. Napravimo mnogo takvih eksperimenata. Jasno je da ćemo svaki put dobiti drugu vrijednost iznosa. Drugim riječima, ovaj iznos je sam po sebi slučajna varijabla sa svojim specifičnim zakonom distribucije. Ispada da kada je dovoljno velik, zakon distribucije ovog zbroja teži Gaussovoj distribuciji (usput, karakteristična širina "zvona" raste kao ). Detaljnije čitamo na Wikipediji: centralni granični teorem. U životu vrlo često postoje veličine koje su zbroj velikog broja istovjetno raspoređenih nezavisnih slučajnih varijabli, pa su stoga Gaussovo raspodijeljene.

Prosječna vrijednost

Prosječna vrijednost slučajne varijable je ono što ćemo dobiti u limitu ako provedemo puno eksperimenata i izračunamo aritmetičku sredinu ispuštenih vrijednosti. Prosječna vrijednost se označava na različite načine: matematičari je vole označavati sa (matematičko očekivanje), a strani matematičari sa (očekivanje). Fizičari kroz ili. Označit ćemo ga na strani način: .
Na primjer, za Gaussovu distribuciju, srednja vrijednost je .

Disperzija

U slučaju Gaussove distribucije, jasno vidimo da slučajna varijabla radije pada u određeno susjedstvo svoje srednje vrijednosti. Kao što se može vidjeti iz grafikona, karakteristično širenje vrijednosti je reda veličine . Kako možemo procijeniti ovo širenje vrijednosti za proizvoljnu slučajnu varijablu ako znamo njenu distribuciju? Možete nacrtati grafikon njegove gustoće vjerojatnosti i okom procijeniti karakterističnu širinu. Ali mi radije idemo algebarskim putem. Možete pronaći prosječnu duljinu odstupanja (modul) od prosječne vrijednosti: . Ova će vrijednost biti dobra procjena karakterističnog širenja vrijednosti. Ali vi i ja vrlo dobro znamo da korištenje modula u formulama predstavlja glavobolju, pa se ova formula rijetko koristi za procjenu karakterističnog rasipanja.
Jednostavniji način (jednostavan u smislu izračuna) je pronaći . Ova se veličina naziva disperzija i često se označava kao . Korijen varijance naziva se standardna devijacija. Standardna devijacija je dobra procjena širenja slučajne varijable.
Na primjer, za Gaussovu distribuciju možemo izračunati da je gore definirana varijanca točno jednaka , što znači da je standardna devijacija jednaka , što se vrlo dobro slaže s našom geometrijskom intuicijom.
Zapravo, ovdje se krije mala prijevara. Činjenica je da se u definiciji Gaussove distribucije pod eksponentom nalazi izraz. Ovo dvoje je u nazivniku upravo zato da bi standardna devijacija bila jednaka koeficijentu. Odnosno, sama formula Gaussove distribucije napisana je u obliku posebno skrojenom tako da ćemo izračunati njezinu standardnu ​​devijaciju.

Neovisne slučajne varijable

Slučajne varijable mogu biti ovisne ili ne. Zamislite da bacite iglu na avion i zabilježite koordinate oba kraja. Ove dvije koordinate su ovisne, povezane pod uvjetom da je udaljenost između njih uvijek jednaka duljini igle, iako su slučajne varijable.
Slučajne varijable su neovisne ako je rezultat prve potpuno neovisan o rezultatu druge. Ako su slučajne varijable nezavisne, tada je prosječna vrijednost njihovog umnoška jednaka umnošku njihovih prosječnih vrijednosti:

Dokaz

Na primjer, imati plave oči i završiti školu sa zlatnom medaljom nezavisne su slučajne varijable. Ako su plavooki, recimo, osvajači zlatnih medalja, onda su plavooki medaljaši. Ovaj nam primjer govori da ako su slučajne varijable specificirane svojim gustoćama vjerojatnosti i , tada se neovisnost ovih vrijednosti izražava u činjenici da je gustoća vjerojatnosti ( prva vrijednost je ispala, a druga) nalazi se po formuli:

Iz ovoga odmah proizilazi:

Kao što vidite, dokaz je proveden za slučajne varijable koje imaju kontinuirani spektar vrijednosti i specificirane su svojom gustoćom vjerojatnosti. U drugim slučajevima, ideja dokaza je slična.

Kalmanov filter

Formulacija problema

Označimo vrijednost koju ćemo mjeriti i zatim filtrirati. To može biti položaj, brzina, ubrzanje, vlažnost, stupanj smrada, temperatura, tlak itd.
Počnimo s jednostavnim primjerom koji će nas dovesti do formulacije općeg problema. Zamislite da imamo auto na radio upravljanje koji može ići samo naprijed i nazad. Mi smo, znajući težinu automobila, oblik, površinu ceste itd., izračunali kako kontrolni joystick utječe na brzinu kretanja.

Tada će se koordinate automobila promijeniti prema zakonu:

U stvarnom životu u našim izračunima ne možemo uzeti u obzir male smetnje koje djeluju na automobil (vjetar, neravnine, kamenčići na cesti), pa će se stvarna brzina automobila razlikovati od izračunate. Na desnu stranu napisane jednadžbe bit će dodana slučajna varijabla:

Na autu imamo ugrađen GPS senzor koji pokušava izmjeriti pravu koordinatu auta, a naravno ne može je točno izmjeriti, već je mjeri s greškom, koja je također slučajna varijabla. Kao rezultat toga, primamo pogrešne podatke od senzora:

Zadatak je da, znajući netočna očitanja senzora, pronađete dobru aproksimaciju za pravu koordinatu automobila.
U formulaciji općeg problema za koordinatu može biti odgovorno bilo što (temperatura, vlaga...), a član odgovoran za upravljanje sustavom izvana označit ćemo kao (u primjeru sa strojem). Jednadžbe za koordinate i očitanja senzora izgledat će ovako:

Razmotrimo detaljno ono što znamo:

Vrijedno je napomenuti da zadatak filtriranja nije zadatak izglađivanja. Ne pokušavamo izgladiti podatke senzora, pokušavamo dobiti vrijednost najbližu stvarnoj koordinati.

Kalmanov algoritam

Argumentirat ćemo indukcijom. Zamislite da smo u th koraku već pronašli filtriranu vrijednost sa senzora koja dobro aproksimira pravu koordinatu sustava. Ne zaboravite da znamo jednadžbu koja kontrolira promjenu nepoznate koordinate:

Stoga, bez primanja vrijednosti od senzora, možemo pretpostaviti da će se na koraku sustav razvijati prema ovom zakonu i da će senzor pokazati nešto blizu . Nažalost, još uvijek ne možemo reći ništa preciznije. S druge strane, tijekom koraka imat ćemo netočno očitanje senzora na rukama.
Kalmanova ideja je sljedeća. Da bismo dobili najbolju aproksimaciju prave koordinate, moramo izabrati sredinu između netočnog očitanja senzora i našeg predviđanja onoga što očekujemo da će vidjeti. Dat ćemo težinu očitanju senzora i težina će ostati na predviđenoj vrijednosti:

Koeficijent se naziva Kalmanov koeficijent. Ovisi o koraku iteracije, pa bi bilo ispravnije pisati , no za sada ćemo izostaviti njegov indeks da ne bismo zatrpali formule za izračun.
Kalmanov koeficijent moramo odabrati tako da rezultirajuća optimalna vrijednost koordinate bude najbliža stvarnoj. Na primjer, ako znamo da je naš senzor vrlo precizan, tada ćemo više vjerovati njegovim očitanjima i dati vrijednosti veću težinu (blizu jedan). Ako senzor, naprotiv, nije nimalo točan, tada ćemo se više usredotočiti na teoretski predviđenu vrijednost.
Općenito, da biste pronašli točnu vrijednost Kalmanovog koeficijenta, samo trebate minimizirati pogrešku:

Koristimo jednadžbe (1) (one u plavoj pozadini u okviru) da prepišemo izraz za grešku:

Dokaz

Sada je vrijeme da raspravimo što znači izraz minimizirati pogrešku? Uostalom, pogreška je, kao što vidimo, sama po sebi slučajna varijabla i svaki put poprima različite vrijednosti. Zaista ne postoji univerzalni pristup definiranju što znači minimalna pogreška. Kao iu slučaju disperzije slučajne varijable, kada smo pokušali procijeniti karakterističnu širinu njezine disperzije, ovdje ćemo izabrati najjednostavniji kriterij za izračun. Minimizirat ćemo srednju vrijednost kvadrata pogreške:

Zapišimo zadnji izraz:

Dokaz

Iz činjenice da su sve slučajne varijable uključene u izraz za neovisne, slijedi da su svi "križni" članovi jednaki nuli:

Iskoristili smo činjenicu da , tada formula za varijancu izgleda puno jednostavnije: .

Ovaj izraz poprima minimalnu vrijednost kada (izjednačavamo derivaciju s nulom):

Ovdje već pišemo izraz za Kalmanov koeficijent s indeksom koraka, pri čemu naglašavamo da on ovisi o koraku iteracije.
Dobivenu optimalnu vrijednost zamijenimo u izraz za , koji smo minimizirali. Dobivamo;

Naš problem je riješen. Dobili smo iterativnu formulu za izračunavanje Kalmanovog koeficijenta.
Sažmimo naše stečeno znanje u jedan okvir:

Primjer

Matlab kod

Očistiti sve; N=100% broj uzoraka a=0,1% ubrzanje sigmaPsi=1 sigmaEta=50; k=1:N x=k x(1)=0 z(1)=x(1)+normrnd(0,sigmaEta); za t=1:(N-1) x(t+1)=x(t)+a*t+normrnd(0,sigmaPsi); z(t+1)=x(t+1)+normrnd(0,sigmaEta); kraj; %kalmanov filter xOpt(1)=z(1); eOpt(1)=sigmaEta; za t=1:(N-1) eOpt(t+1)=sqrt((sigmaEta^2)*(eOpt(t)^2+sigmaPsi^2)/(sigmaEta^2+eOpt(t)^2+ sigmaPsi^2)) K(t+1)=(eOpt(t+1))^2/sigmaEta^2 xOpt(t+1)=(xOpt(t)+a*t)*(1-K(t +1))+K(t+1)*z(t+1) kraj; plot(k,xOpt,k,z,k,x)

Analiza

Ako pratite kako se Kalmanov koeficijent mijenja s koracima iteracije, možete pokazati da se uvijek stabilizira na određenu vrijednost. Na primjer, kada srednje kvadratne pogreške senzora i modela imaju omjer deset prema jedan, tada graf Kalmanovog koeficijenta ovisno o koraku iteracije izgleda ovako:

U sljedećem primjeru raspravljat ćemo o tome kako nam to može znatno olakšati život.

Drugi primjer

U praksi se često događa da ne znamo baš ništa o fizičkom modelu onoga što filtriramo. Na primjer, htjeli ste filtrirati očitanja vašeg omiljenog akcelerometra. Ne znate unaprijed po kojem zakonu namjeravate okretati akcelerometar. Najviše informacija koje možete prikupiti je varijanca pogreške senzora. U tako teškoj situaciji, svo neznanje o modelu kretanja može se pretvoriti u slučajnu varijablu:

Ali, iskreno govoreći, takav sustav više ne zadovoljava uvjete koje smo nametnuli slučajnoj varijabli, jer je sada tamo skrivena sva nepoznata fizika gibanja, pa stoga ne možemo reći da su u različitim trenucima greške modela neovisne o međusobno i da su im prosječne vrijednosti nula. U ovom slučaju, uglavnom, teorija Kalmanova filtera nije primjenjiva. No, nećemo se obazirati na tu činjenicu, već ćemo glupo primijeniti sav kolos formula, birajući koeficijente na oko, tako da filtrirani podaci izgledaju lijepo.
Ali možete krenuti drugačijim, mnogo jednostavnijim putem. Kao što smo vidjeli gore, Kalmanov koeficijent uvijek se stabilizira na vrijednost kako se povećava. Stoga, umjesto odabira koeficijenata i pronalaženja Kalmanova koeficijenta pomoću složenih formula, možemo smatrati da je ovaj koeficijent uvijek konstanta i odabrati samo tu konstantu. Ova pretpostavka neće pokvariti gotovo ništa. Prvo, mi već ilegalno koristimo Kalmanovu teoriju, a drugo, Kalmanov koeficijent se brzo stabilizira na konstantu. Na kraju će sve biti puno jednostavnije. Uopće nam ne trebaju nikakve formule iz Kalmanove teorije, samo trebamo odabrati prihvatljivu vrijednost i umetnuti je u iterativnu formulu:

Sljedeći grafikon prikazuje podatke filtrirane na dva različita načina iz fiktivnog senzora. Pod uvjetom da ne znamo ništa o fizici fenomena. Prva metoda je poštena, sa svim formulama iz Kalmanove teorije. A drugi je pojednostavljen, bez formula.

Kao što vidimo, metode se gotovo ne razlikuju. Mala razlika uočava se samo na početku, kada se Kalmanov koeficijent još nije stabilizirao.

Rasprava

Kao što smo vidjeli, glavna ideja Kalmanovog filtra je pronaći takav koeficijent da filtrirana vrijednost

u prosjeku bi se najmanje razlikovala od stvarne vrijednosti koordinate . Vidimo da je filtrirana vrijednost linearna funkcija očitanja senzora i prethodne filtrirane vrijednosti. A prethodna filtrirana vrijednost je opet linearna funkcija očitanja senzora i prethodne filtrirane vrijednosti. I tako sve dok se lanac potpuno ne okrene. Odnosno, filtrirana vrijednost ovisi o svatko prethodna očitanja senzora linearno:

Stoga se Kalmanov filtar naziva linearni filtar.
Može se dokazati da je od svih linearnih filtera Kalmanov filter najbolji. Najbolji u smislu da je prosječna kvadratna pogreška filtra minimalna.

Višedimenzionalni slučaj

Cijela teorija Kalmanovog filtra može se generalizirati na višedimenzionalni slučaj. Formule tamo izgledaju malo strašnije, ali ideja njihovog izvođenja je ista kao u jednodimenzionalnom slučaju. Možete ih vidjeti u ovom prekrasnom članku: http://habrahabr.ru/post/140274/.
I u ovom divnom video Dat je primjer kako ih koristiti.

Kalmanov filter

Kalmanov filtar naširoko se koristi u inženjerskim i ekonometrijskim primjenama, od radarskih i vizualnih sustava do procjene parametara makroekonomskih modela. Kalmanovo filtriranje važan je dio teorije upravljanja i igra veliku ulogu u stvaranju sustava upravljanja. Zajedno s linearno-kvadratnim regulatorom, Kalmanov filtar omogućuje rješavanje problema linearno-kvadratnog Gaussovog upravljanja. Kalmanov filtar i linearni kvadratni regulator moguća su rješenja za većinu temeljnih problema u teoriji upravljanja.

U većini aplikacija, broj parametara koji definiraju stanje objekta veći je od broja vidljivih parametara dostupnih za mjerenje. Koristeći model objekta temeljen na nizu dostupnih mjerenja, Kalmanov filtar omogućuje dobivanje procjene unutarnjeg stanja.

Kalmanov filtar namijenjen je rekurzivnoj estimaciji vektora stanja a priori poznatog dinamičkog sustava, odnosno za izračunavanje trenutnog stanja sustava potrebno je poznavati trenutno mjerenje, kao i prethodno stanje samog filtra. . Stoga je Kalmanov filtar, kao i mnogi drugi rekurzivni filtri, implementiran u vremenskoj, a ne u frekvencijskoj reprezentaciji.

Jasan primjer mogućnosti filtra je dobivanje točnih, kontinuirano ažuriranih procjena položaja i brzine nekog objekta na temelju rezultata vremenskog niza netočnih mjerenja njegove lokacije. Primjerice, kod radara zadatak je pratiti cilj, odrediti njegovu lokaciju, brzinu i ubrzanje, dok rezultati mjerenja stižu postupno i vrlo su šumni. Kalmanov filtar koristi probabilistički model ciljane dinamike koji specificira vrstu vjerojatnog kretanja objekta, što smanjuje utjecaj buke i daje dobre procjene položaja objekta u sadašnjem, budućem ili prošlom vremenu.

Uvod

Kalmanov filtar radi s konceptom vektora stanja sustava (skup parametara koji opisuju stanje sustava u određenoj vremenskoj točki) i njegovim statističkim opisom. U općem slučaju, dinamika određenog vektora stanja opisuje se gustoćom vjerojatnosti raspodjele njegovih komponenti u svakom trenutku vremena. Ako imate određeni matematički model promatranja sustava, kao i model apriorne promjene parametara vektora stanja (naime, kao Markovljev formativni proces), možete napisati jednadžbu za posteriornu gustoću vjerojatnosti vektor stanja u bilo kojem trenutku. Ova diferencijalna jednadžba naziva se Stratonovicheva jednadžba. Stratonovicheva jednadžba ne može se riješiti u općem obliku. Analitičko rješenje može se dobiti samo u slučaju većeg broja ograničenja (pretpostavki):

  • Gaussovnost apriorne i posteriorne gustoće vjerojatnosti vektora stanja u bilo kojem trenutku (uključujući i početni)
  • Gausovstvo oblikovanja šuma
  • Gausovstvo šuma promatranja
  • bjelina buke promatranja
  • linearnost modela promatranja
  • linearnost modela procesa oblikovanja (koji, podsjetimo, mora biti Markovljev proces)

Klasični Kalmanov filtar je jednadžba za izračunavanje prvog i drugog momenta posteriorne gustoće vjerojatnosti (u smislu vektora matematičkih očekivanja i matrice varijanci, uključujući recipročne) pod zadanim ograničenjima. Zbog činjenice da za normalnu gustoću vjerojatnosti matematičko očekivanje i disperzijska matrica u potpunosti definiraju gustoću vjerojatnosti, možemo reći da Kalmanov filtar izračunava posteriornu gustoću vjerojatnosti vektora stanja u svakoj točki vremena. To znači da u potpunosti opisuje vektor stanja kao slučajnu vektorsku veličinu.

Izračunate vrijednosti matematičkih očekivanja u ovom slučaju su optimalne procjene prema kriteriju srednje kvadratne pogreške, što određuje njegovu široku upotrebu.

Postoji nekoliko varijanti Kalmanovog filtra, koji se razlikuju po aproksimacijama i trikovima koje treba koristiti da bi se filtar sveo na opisani oblik i smanjila njegova dimenzija:

  • Prošireni Kalmanov filter (EKF). Redukcija nelinearnih promatračkih modela i procesa oblikovanja korištenjem linearizacije preko proširenja Taylorovog niza.
  • Kalmanov filter bez mirisa (UKF). Koristi se u problemima u kojima jednostavna linearizacija dovodi do uništavanja korisnih veza između komponenti vektora stanja. U ovom slučaju, "linearizacija" se temelji na transformaciji bez mirisa.
  • Ansambl Kalmanov filter (EnKF). Koristi se za smanjenje dimenzije problema.
  • Moguće su opcije s nelinearnim dodatnim filtrom, koji omogućuje redukciju ne-Gaussovih promatranja na normalna.
  • Moguće su opcije s filtrom za "izbjeljivanje", što vam omogućuje rad s "obojenom" bukom
  • itd.

Korišteni model dinamičkog sustava

Kalmanovi filtri temelje se na vremenski uzorkovanim linearnim dinamičkim sustavima. Takvi sustavi modelirani su Markovljevim lancima pomoću linearnih operatora i članova s ​​normalnom distribucijom. Stanje sustava opisuje se vektorom konačne dimenzije – vektorom stanja. U svakom vremenskom koraku linearni operator djeluje na vektor stanja i prenosi ga na drugi vektor stanja (deterministička promjena stanja), dodaje se određeni vektor normalnog šuma (slučajni faktori) i, u općem slučaju, vektor upravljanja koji modelira utjecaj sustava upravljanja. Kalmanov filtar može se promatrati kao analogan skrivenim Markovljevim modelima, s tom razlikom što su varijable koje opisuju stanje sustava elementi beskonačnog skupa realnih brojeva (za razliku od konačnog skupa prostora stanja u skrivenim Markovljevim modelima). Dodatno, skriveni Markovljevi modeli mogu koristiti proizvoljne distribucije za naknadne vrijednosti vektora stanja, za razliku od Kalmanovog filtra, koji koristi model normalno distribuiranog šuma. Postoji strogi odnos između Kalmanovog filtra i skrivenih jednadžbi Markovljevog modela. Pregled ovih i drugih modela dali su Roweis i Chahramani (1999).

Kada se koristi Kalmanov filtar za dobivanje procjene vektora stanja procesa iz niza šumnih mjerenja, potrebno je predstaviti model tog procesa u skladu sa strukturom filtra - u obliku matrične jednadžbe određena vrsta. Za svaki otkucaj k rada filtra, potrebno je odrediti matrice u skladu s opisom u nastavku: razvoj procesa F k; matrica promatranja H k; matrica kovarijacije procesa Q k; matrica kovarijacije šuma mjerenja R k; u prisutnosti upravljačkih djelovanja - matrica njihovih koeficijenata B k .

Ilustracija rada filtra. Matrice su označene kvadratićima. Elipse označavaju matrice multivarijantnih normalnih distribucija (uključujući srednje vrijednosti i kovarijance). Vektori su ostali nezaokruženi. U najjednostavnijem slučaju, neke matrice se ne mijenjaju tijekom vremena (ne ovise o indeksu k), ali ih još uvijek koristi filtar u svakom ciklusu rada.

Model sustava/procesa pretpostavlja pravo stanje u tom trenutku k dobiva se iz pravog trenutnog stanja k−1 prema jednadžbi:

,
  • F k- evolucijska matrica procesa/sustava koja utječe na vektor x k−1 (vektor stanja u ovom trenutku k−1 );
  • B k- matrica upravljanja, koja se primjenjuje na vektor upravljačkih djelovanja u k ;
  • w k- normalni slučajni proces s nultim matematičkim očekivanjem i matricom kovarijance Q k, koji opisuje slučajnu prirodu evolucije sustava/procesa:

U trenutku k vrši se promatranje (mjerenje). z k vektor pravog stanja x k, koji su međusobno povezani jednadžbom:

Gdje H k- matrica mjerenja koja povezuje pravi vektor stanja i vektor obavljenih mjerenja, v k- bijeli Gaussov šum mjerenja s nultim matematičkim očekivanjem i matricom kovarijance R k :

Početno stanje i vektori slučajnih procesa u svakom taktu ( x 0 , w 1 , …, w k , v 1 , …, v k) smatraju se neovisnima.

Mnogi stvarni dinamički sustavi ne mogu se točno opisati ovim modelom. U praksi, dinamika koja nije uzeta u obzir u modelu može ozbiljno pokvariti performanse filtra, posebno kada se radi s nepoznatim stohastičkim ulaznim signalom. Štoviše, dinamika koja nije uzeta u obzir u modelu može učiniti filtar nestabilnim. S druge strane, neovisni bijeli šum kao signal neće uzrokovati odstupanje algoritma. Problem odvajanja buke mjerenja od dinamike koja nije uzeta u obzir u modelu je složen i rješava se pomoću teorije robusnih sustava upravljanja.

Kalmanov filter

Kalmanov filter je vrsta rekurzivnog filtera. Za izračunavanje ocjene stanja sustava za trenutni ciklus rada potrebna je ocjena stanja (u obliku ocjene stanja sustava i procjene pogreške u određivanju tog stanja) na prethodni ciklus rada i mjerenja u tekućem ciklusu. Ovo svojstvo ga razlikuje od filtera paketa, koji zahtijevaju poznavanje povijesti mjerenja i/ili procjena tijekom trenutnog ciklusa rada. Nadalje, pod zapisom ćemo razumjeti procjenu pravog vektora u ovom trenutku n uzimajući u obzir mjere od trenutka početka rada do m uključivo.

Stanje filtra određeno je dvjema varijablama:

Iteracije Kalmanovog filtra podijeljene su u dvije faze: ekstrapolacija i korekcija. Tijekom ekstrapolacije, filtar dobiva preliminarnu procjenu stanja sustava (u literaturi na ruskom jeziku često se označava , gdje znači "ekstrapolacija", i k- broj ticka na kojem je primljen) za trenutni korak prema konačnoj procjeni stanja iz prethodnog koraka (ili preliminarna procjena za sljedeći tick prema konačnoj procjeni trenutnog koraka, ovisno o tumačenje). Ova preliminarna procjena također se naziva apriorna procjena stanja, jer ne koristi opažanja odgovarajućeg koraka da bi se dobila. U fazi korekcije, apriorna ekstrapolacija se nadopunjuje relevantnim trenutnim mjerenjima kako bi se ispravila procjena. Prilagođena procjena također se naziva posteriorna procjena stanja ili jednostavno procjena vektora stanja. Obično se ove dvije faze izmjenjuju: ekstrapolacija se provodi na temelju rezultata korekcije do sljedećeg opažanja, a korekcija se provodi zajedno s opažanjima dostupnim u sljedećem koraku, itd. Međutim, moguć je drugačiji razvoj događaja, ako za iz nekog razloga zbog kojeg se promatranje pokazalo nedostupnim, tada se faza korekcije može preskočiti i ekstrapolirati iz neprilagođene procjene (apriorna ekstrapolacija). Isto tako, ako su neovisna mjerenja dostupna samo u određenim radnim ciklusima, korekcije su još uvijek moguće (obično korištenjem različite matrice promatranja H k ).

Faza ekstrapolacije

Faza korekcije

Primljeno odstupanje na koraku k opažanja iz promatranja koja se očekuju ekstrapolacijom:
Matrica kovarijance za vektor odstupanja (vektor pogreške):
Kalmanova matrica optimalnog pojačanja, formirana na temelju matrica kovarijancije postojeće ekstrapolacije vektora stanja i dobivenih mjerenja (preko matrice kovarijancije vektora odstupanja):
Korekcija prethodno dobivene ekstrapolacije vektora stanja - dobivanje procjene vektora stanja sustava:
Izračun matrice kovarijance za procjenu vektora stanja sustava:

Izraz za matricu kovarijance procjene vektora stanja sustava vrijedi samo kada se koristi zadani optimalni vektor koeficijenata. Općenito, ovaj izraz ima složeniji oblik.

Invarijante

Ako je model apsolutno točan i početni uvjeti i su apsolutno precizno specificirani, tada se sljedeće vrijednosti čuvaju nakon bilo kojeg broja ponavljanja filtra - one su invarijante:

Matematička očekivanja procjena i ekstrapolacije vektora stanja sustava i matrica pogrešaka su nulti vektori:

gdje je matematičko očekivanje.

Izračunate matrice kovarijancije ekstrapolacija, procjena stanja sustava i vektora pogrešaka podudaraju se s pravim matricama kovarijancije:

Primjer konstrukcije filtera

Zamislimo kolica koja stoje na beskonačno dugim tračnicama bez trenja. U početku miruje u položaju 0, ali je pod utjecajem slučajnih faktora podložan nasumičnom ubrzanju. Svaki ∆ mjerimo položaj kolica t sekundi, ali mjerenja su netočna. Želimo dobiti procjene položaja kolica i njihove brzine. Primijenimo Kalmanov filtar na ovaj problem i odredimo sve potrebne matrice.

U ovom problemu matrice F , H , R I Q ne ovise o vremenu, njihove indekse ćemo izostaviti. Osim toga, ne kontroliramo kolica, dakle upravljačku matricu B odsutan.

Koordinate i brzina kolica opisane su vektorom u linearnom prostoru stanja

gdje je brzina (prva derivacija koordinate u odnosu na vrijeme).

Pretpostavit ćemo da između ( k−1)-ti i k u th ciklusu kolica se kreću konstantnom akceleracijom a k, raspodijeljen prema normalnom zakonu s nultim matematičkim očekivanjem i standardnom devijacijom σ a. U skladu s Newtonovom mehanikom, možemo pisati

.

Matrica kovarijance slučajnih učinaka

(σ a- skalar).

U svakom koraku rada mjeri se položaj kolica. Pretpostavimo da je greška mjerenja vk ima normalnu distribuciju s nultim matematičkim očekivanjem i standardnom devijacijom σ z. Zatim

a kovarijancijska matrica šuma opažanja ima oblik

.

Početni položaj kolica je točno poznat

, .

Ako su položaj i brzina kolica poznati samo približno, tada se matrica varijance može inicijalizirati s dovoljno velikim brojem L, tako da broj premašuje varijancu koordinatnih mjerenja

, .

U tom slučaju, u prvim ciklusima rada, filter će koristiti rezultate mjerenja s većom težinom od raspoloživih apriornih informacija.

Izvođenje formula

Matrica kovarijance estimacije vektora stanja

Po definiciji matrice kovarijance P k|k

zamijeniti izraz za procjenu vektora stanja

i napišite izraz za vektor greške

i vektore mjerenja

izvadimo vektor pogreške mjerenja v k

budući da vektor pogreške mjerenja v k nije u korelaciji s drugim argumentima, dobivamo izraz

u skladu sa svojstvima vektorske kovarijance, ovaj izraz se transformira u oblik

zamjena izraza za matricu kovarijance ekstrapolacije vektora stanja s P k|k−1 i određivanje matrice kovarijance buke opažanja na R k, dobivamo

Rezultirajući izraz vrijedi za proizvoljnu matricu koeficijenata, ali ako je to Kalmanova optimalna matrica koeficijenata, tada se ovaj izraz za matricu kovarijance može pojednostaviti.

Matrica optimalnog pojačanja

Kalmanov filtar minimizira zbroj kvadrata matematičkih očekivanja pogrešaka procjene vektora stanja.

Vektor pogreške procjene vektora stanja

Zadatak je minimizirati zbroj matematičkih očekivanja kvadrata komponenti zadanog vektora

,

što je ekvivalentno minimiziranju traga matrice kovarijance procjene vektora stanja P k|k. Zamijenimo postojeće izraze u izraz za matricu kovarijance procjene vektora stanja i dopunimo ga do punog kvadrata:

Imajte na umu da je posljednji član matrica kovarijance neke slučajne varijable, tako da je njezin trag nenegativan. Minimum traga postiže se kada je posljednji izraz postavljen na nulu:

Tvrdi se da je ova matrica željena i, kada se koristi kao matrica koeficijenata u Kalmanovu filtru, minimizira zbroj srednjih kvadrata pogrešaka u procjeni vektora stanja.

Matrica kovarijance estimacije vektora stanja korištenjem matrice optimalnog koeficijenta

Izraz za matricu kovarijance procjene vektora stanja P k|k kada se koristi optimalna matrica koeficijenata će imati oblik:

Ova formula je računski jednostavnija i stoga se gotovo uvijek koristi u praksi, ali je točna samo kada se koristi matrica optimalnih koeficijenata. Ako se zbog niske računalne točnosti pojavi problem s računskom stabilnošću ili se posebno koristi matrica koeficijenata koja nije optimalna, treba koristiti opću formulu za matricu kovarijance procjene vektora stanja.