Korištenje Kalmanovog filtra za filtriranje vrijednosti dobivenih sa senzora. Kalmanovo filtriranje Optimalni Kalmanov filter

Na internetu, uključujući i Habré, možete pronaći mnogo informacija o Kalmanovom filtru. Ali teško je pronaći lako probavljive izvedbe samih formula. Bez zaključka, sva ova nauka se percipira kao neka vrsta šamanizma, formule izgledaju kao bezlični skup simbola, i što je najvažnije, mnoge jednostavne izjave koje leže na površini teorije ne razumiju se. Svrha ovog članka bit će govoriti o ovom filteru na što pristupačnijem jeziku.
Kalmanov filter je moćan alat za filtriranje podataka. Njegov glavni princip je da se pri filtriranju koriste informacije o fizici samog fenomena. Na primjer, ako filtrirate podatke sa brzinomjera u automobilu, tada vam inercija automobila daje pravo da percipirate prebrze skokove u brzini kao grešku u mjerenju. Kalmanov filter je zanimljiv jer je u određenom smislu najbolji filter. U nastavku ćemo detaljnije razgovarati o tome šta tačno znače riječi "najbolji". Na kraju članka pokazat ću da se u mnogim slučajevima formule mogu pojednostaviti do te mjere da od njih neće ostati gotovo ništa.

Obrazovni program

Prije nego što se upoznam s Kalmanovim filterom, predlažem da se prisjetimo nekih jednostavnih definicija i činjenica iz teorije vjerojatnosti.

Slučajna vrijednost

Kad kažu da je data slučajna varijabla, to znači da ta veličina može uzeti slučajne vrijednosti. Uzima različite vrijednosti s različitim vjerovatnoćama. Kada kotrljate, recimo, matricu, diskretni skup vrijednosti će otpasti :. Kad je riječ, na primjer, o brzini lutajuće čestice, onda se, očito, treba pozabaviti kontinuiranim skupom vrijednosti. "Ispale" vrijednosti slučajne varijable označit ćemo sa, ali ponekad ćemo koristiti isto slovo koje koristimo za označavanje slučajne varijable :.
U slučaju kontinuiranog skupa vrijednosti, slučajnu varijablu karakterizira gustoća vjerojatnosti, koja nam diktira da je vjerovatnoća da slučajna varijabla "ispadne" u malom susjedstvu tačke s dužinom jednaka. Kao što vidimo sa slike, ova vjerovatnoća je jednaka površini zasjenjenog pravokutnika ispod grafikona:

Često u životu slučajne varijable su Gausove kada je gustoća vjerovatnoće.

Vidimo da funkcija ima oblik zvona centriranog u tačku i karakteristične širine reda.
Budući da govorimo o Gausovoj distribuciji, bio bi grijeh ne spomenuti odakle je došla. Kao što su brojevi čvrsto utemeljeni u matematici i javljaju se na najneočekivanijim mjestima, tako je Gaussova distribucija duboko ukorijenila teoriju vjerovatnoće. Jedna izuzetna izjava koja djelomično objašnjava Gaussovu sveprisutnost je sljedeća:
Neka postoji slučajna varijabla s proizvoljnom raspodjelom (u stvari, postoje neka ograničenja za tu proizvoljnost, ali nisu uopće stroga). Izvedimo eksperimente i izračunajmo zbir "ispalih" vrijednosti slučajne varijable. Uradimo mnogo ovih eksperimenata. Jasno je da ćemo svaki put dobiti različitu vrijednost iznosa. Drugim riječima, ova suma je sama po sebi slučajna varijabla sa svojim određenim zakonom distribucije. Ispostavilo se da za dovoljno veliki zakon raspodjele ove sume teži Gaussovoj distribuciji (usput, karakteristična širina "zvona" raste slično). Pročitajte više na Wikipediji: Centralna granična teorema. U životu vrlo često postoje količine koje se sastoje od velikog broja jednako raspodijeljenih nezavisnih slučajnih varijabli, pa su stoga raspoređene prema Gaussu.

Mean

Prosječna vrijednost slučajne varijable je ono što dobijemo u granici, ako izvedemo mnogo eksperimenata i izračunamo aritmetičku sredinu ispuštenih vrijednosti. Srednja vrijednost se označava na različite načine: matematičari vole označavati sa (očekivanje), a strani matematičari sa (očekivanje). Fizičari su kroz ili. Na strani način ćemo označiti :.
Na primjer, za Gaussovu distribuciju, srednja vrijednost je.

Disperzija

U slučaju Gaussove distribucije, jasno vidimo da slučajna varijabla preferira ispadanje u nekom susjedstvu svoje srednje vrijednosti. Kao što se može vidjeti iz grafikona, karakteristično rasipanje vrijednosti reda. Kako možemo procijeniti ovaj raspon vrijednosti za proizvoljnu slučajnu varijablu, ako znamo njegovu distribuciju. Možete nacrtati grafikon njegove gustoće vjerojatnosti i ocjeniti karakterističnu širinu okom. Ali radije slijedimo algebarski put. Prosječnu dužinu odstupanja (modul) možete pronaći od srednje vrijednosti :. Ova vrijednost će biti dobra procjena karakterističnog raspršenja vrijednosti. Ali vi i ja vrlo dobro znamo da je korištenje modula u formulama jedna glavobolja, pa se ova formula rijetko koristi za procjenu karakterističnog širenja.
Lakši način (jednostavan u smislu proračuna) je pronaći. Ova vrijednost se naziva varijansa i često se naziva i. 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 varijansa potpuno 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 ispod eksponenta nalazi izraz. Ova dva u nazivniku stoje upravo tako da standardna devijacija bude jednaka koeficijentu. Odnosno, sama Gaussova distribucijska formula napisana je u obliku posebno izoštrenom tako da ćemo uzeti u obzir njezinu standardnu ​​devijaciju.

Nezavisne slučajne varijable

Slučajne varijable su ovisne i nisu. Zamislite da bacate iglu na ravninu i zapisujete koordinate oba kraja. Ove dvije koordinate su ovisne, povezane su uvjetom da je udaljenost između njih uvijek jednaka dužini igle, iako su slučajne vrijednosti.
Slučajne varijable su nezavisne ako je rezultat prve od njih potpuno neovisan o rezultatu druge. Ako su slučajne varijable nezavisne, tada je prosječna vrijednost njihovog proizvoda jednaka umnošku njihovih prosječnih vrijednosti:

Dokaz

Na primjer, plave oči i srednja škola sa zlatnom medaljom nezavisne su slučajne varijable. Ako postoje plavooki, recimo, osvajači zlatnih medalja, onda plavooki. Ovaj primjer nam govori da ako su slučajne varijable date prema njihovoj gustoći vjerojatnosti i, tada se neovisnost ovih vrijednosti izražava u činjenici da gustoća vjerovatnoće (prva vrijednost je ispala, a druga) se nalazi po formuli:

Iz ovoga odmah proizlazi da:

Kao što vidite, dokaz se izvodi za slučajne varijable koje imaju kontinuirani spektar vrijednosti i date su prema njihovoj gustoći vjerojatnosti. U drugim slučajevima, ideja dokazivanja je slična.

Kalmanov filter

Formulacija problema

Označimo s vrijednošću koju ćemo mjeriti, a zatim filtriramo. To može biti koordinata, brzina, ubrzanje, vlažnost, smrad, temperatura, pritisak itd.
Počnimo s jednostavnim primjerom koji će nas dovesti do formuliranja općeg problema. Zamislite da imamo radio-upravljani automobil koji se može kretati samo naprijed-nazad. Znajući težinu automobila, oblik, površinu puta itd., Izračunali smo kako upravljački joystick utječe na brzinu kretanja.

Tada će se koordinate automobila promijeniti prema zakonu:

U stvarnom životu ne možemo uzeti u obzir u svojim proračunima male smetnje koje djeluju na automobil (vjetar, neravnine, šljunak na cesti), pa će se stvarna brzina automobila razlikovati od izračunate. Desna strana zapisane jednadžbe dodaje se slučajna varijabla:

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

Zadatak je da, znajući pogrešna očitanja senzora, pronađe dobru aproksimaciju za pravu koordinatu automobila.
U formulaciji općeg zadatka bilo što može biti odgovorno za koordinatu (temperatura, vlažnost ...), a izraz odgovoran za upravljanje sustavom izvana bit će označen sa (u primjeru sa strojem). Jednadžbe za očitavanje koordinata i senzora izgledat će ovako:

Razgovarajmo detaljno o onome što znamo:

Vrijedi napomenuti da zadatak filtriranja nije zadatak uklanjanja alijansa. Ne pokušavamo izgladiti podatke sa senzora, pokušavamo dobiti najbližu vrijednost stvarnoj koordinati.

Kalmanov algoritam

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

stoga, još ne primajući vrijednost od senzora, možemo pretpostaviti da se sistem u jednom koraku razvija prema ovom zakonu i da će senzor pokazati nešto blizu. Nažalost, još ne možemo reći ništa preciznije. S druge strane, u jednom koraku ćemo imati neprecizno očitavanje senzora na rukama.
Kalmanova ideja je sljedeća. Da bismo dobili najbolju aproksimaciju prave koordinate, moramo izabrati sredinu između očitanja nepreciznog senzora i našeg predviđanja onoga što smo od njega očekivali. Očitanju senzora dat ćemo težinu i težina će ostati na predviđenoj vrijednosti:

Koeficijent se naziva Kalmanov koeficijent. Ovisi o koraku iteracije, pa bi bilo ispravnije napisati ga, ali zasad ćemo, kako ne bismo zatrpali računske formule, izostaviti njegov indeks.
Moramo odabrati Kalmanov koeficijent tako da rezultirajuća optimalna vrijednost koordinate bude najbliža istinskoj. Na primjer, ako znamo da je naš senzor vrlo precizan, više ćemo vjerovati njegovom očitanju i dati vrijednosti veću težinu (blizu jedan). Naprotiv, ako je senzor potpuno netoč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 smanjiti grešku:

Koristimo jednadžbe (1) (one sa plavom pozadinom u okviru) za prepisivanje izraza za grešku:

Dokaz

Sada je vrijeme za raspravu šta znači izraz minimiziranje greške? Uostalom, greška je, kao što vidimo, sama slučajna varijabla i svaki put poprima različite vrijednosti. U stvari, ne postoji jedan-na-jedan pristup definiranju šta znači da je greška minimalna. Baš kao u slučaju varijance slučajne varijable, kada smo pokušali procijeniti karakterističnu širinu njenog rasprostiranja, ovdje ćemo odabrati najjednostavniji kriterij za izračune. Smanjit ćemo srednju vrijednost greške na kvadrat:

Zapišite zadnji izraz:

Dokaz

Iz činjenice da su sve slučajne varijable uključene u izraz za neovisne, proizlazi da su svi "unakrsni" izrazi jednaki nuli:

Koristili smo činjenicu da tada formula varijance izgleda mnogo jednostavnije :.

Ovaj izraz poprima minimalnu vrijednost kada (izjednačujemo derivat nuli):

Ovdje već pišemo izraz za Kalmanov koeficijent s indeksom koraka, pa naglašavamo da to ovisi o koraku iteracije.
Dobivenu optimalnu vrijednost zamjenjujemo izrazom koji smo minimizirali. Primamo;

Naš zadatak je ispunjen. Imamo iterativnu formulu za izračunavanje Kalmanovog koeficijenta.
Ukratko rezimirajmo naše znanje stečeno u jednom okviru:

Primjer

Matlab kod

Obriši 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); end; % 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; nacrt (k, xOpt, k, z, k, x)

Analiza

Ako pratimo kako se Kalmanov koeficijent mijenja s korakom ponavljanja, možemo pokazati da se uvijek stabilizira na određenu vrijednost. Na primjer, kada se rms greške senzora i modela međusobno odnose kao deset prema jedan, tada grafikon Kalmanovog koeficijenta ovisno o koraku iteracije izgleda ovako:

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

Drugi primjer

U praksi se često događa da uopće ne znamo ništa o fizičkom modelu onoga što filtriramo. Na primjer, recimo da želite filtrirati očitanja sa svog omiljenog akcelerometra. Ne znate unaprijed po kojem zakonu namjeravate okrenuti mjerač ubrzanja. Najviše informacija koje možete prikupiti je varijansa greške senzora. U tako teškoj situaciji, sve nepoznavanje modela kretanja može se pretočiti u slučajnu varijablu:

No, iskreno, takav sustav više ne zadovoljava uvjete koje smo nametnuli slučajnoj varijabli, jer je sada sva fizika nepoznatog kretanja skrivena tamo, pa stoga ne možemo reći da su u različitim trenucima greške modela neovisne jedna od druge i da su njihove prosječne vrijednosti nule. U ovom slučaju, generalno, Kalmanova teorija filtera nije primjenjiva. No, nećemo obraćati pažnju na ovu činjenicu, već, glupo primijeniti sve kolosalne formule, odabirom koeficijenata po oku, tako da filtrirani podaci izgledaju slatko.
Ali možete ići na drugačiji, mnogo jednostavniji način. Kao što smo vidjeli gore, Kalmanov koeficijent uvijek se stabilizira prema vrijednosti s povećanjem. Stoga, umjesto odabira koeficijenata i pronalaženja Kalmanovog koeficijenta koristeći složene formule, možemo smatrati da je ovaj koeficijent uvijek konstantan, te odabrati samo tu konstantu. Ova pretpostavka ne kvari gotovo ništa. Prvo, već se ilegalno koristimo Kalmanovom teorijom, a drugo, Kalmanov koeficijent brzo se stabilizuje na konstantu. Kao rezultat toga, sve će biti vrlo jednostavno. Ne trebaju nam nikakve formule iz Kalmanove teorije, samo moramo pronaći prihvatljivu vrijednost i umetnuti je u iterativnu formulu:

Sljedeći grafikon prikazuje podatke izmišljenog senzora filtriranih na dva različita načina. Pod uvjetom da ne znamo ništa o fizici fenomena. Prvi način je pošten, sa svim formulama iz Kalmanove teorije. A druga je pojednostavljena, bez formula.

Kao što vidimo, metode su gotovo iste. Mala razlika uočava se tek na početku, kada se Kalmanov koeficijent još nije stabilizirao.

Diskusija

Kao što smo vidjeli, glavna ideja Kalmanovog filtera je pronaći koeficijent takav da je 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. Prethodna filtrirana vrijednost je linearna funkcija očitavanja senzora i prethodne filtrirane vrijednosti. I tako dalje, dok se lanac potpuno ne rasklopi. Odnosno, filtrirana vrijednost ovisi o od svega prethodna očitanja senzora linearno:

Stoga se Kalmanov filter naziva linearni filter.
Može se dokazati da je Kalmanov filter najbolji od svih linearnih filtera. Najbolje u smislu da je srednji kvadrat greške filtera minimalan.

Višedimenzionalno kućište

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

Wiener filteri su najprikladniji za procese obrade ili dijelove procesa općenito (blok obrada). Za sekvencijalnu obradu potrebna je trenutna procjena signala u svakom ciklusu takta, uzimajući u obzir informacije koje ulaze na ulaz filtera tokom procesa posmatranja.

S Wienerovim filtriranjem, za svaki novi uzorak signala potrebno je ponovno izračunavanje svih težina filtera. Trenutno su adaptivni filtri postali široko rasprostranjeni, u kojima se nove informacije koriste za kontinuirano ispravljanje prethodno izvršene procjene signala (praćenje cilja u radaru, sistemi automatskog upravljanja u upravljanju itd.). Posebno su zanimljivi adaptivni filtri rekurzivnog tipa poznati kao Kalmanov filter.

Ovi filteri se široko koriste u upravljačkim petljama u sistemima automatske regulacije i upravljanja. Odatle su se pojavili, što dokazuje tako specifična terminologija koja se koristi za opisivanje njihovog rada kao prostora stanja.

Jedan od glavnih zadataka koje treba riješiti u praksi neuronskog računarstva je dobijanje brzih i pouzdanih algoritama za učenje neuronskih mreža. S tim u vezi, moglo bi biti korisno koristiti linearne filtere u petlji povratne sprege. Budući da su algoritmi obuke iterativne prirode, takav filter mora biti sekvencijalna rekurzivna procjena.

Problem procjene parametara

Jedan od problema teorije statističkih odluka, koji su od velike praktične važnosti, je problem procjene vektora stanja i parametara sistema, koji je formuliran na sljedeći način. Pretpostavimo da je potrebno procijeniti vrijednost parametra vektora $ X $, koji je nedostupan za direktno mjerenje. Umjesto toga, mjeri se drugi parametar $ Z $, ovisno o $ X $. Problem procjene je odgovoriti na pitanje: šta se može reći o $ X $, poznavajući $ Z $. U opštem slučaju, postupak za optimalno vrednovanje vektora $ X $ zavisi od prihvaćenog kriterijuma kvaliteta evaluacije.

Na primjer, Bayesov pristup problemu procjene parametara zahtijeva potpune apriorne informacije o vjerojatnim svojstvima parametra koji se procjenjuje, što je često nemoguće. U tim slučajevima pribjegavaju metodi najmanjih kvadrata (OLS), koja zahtijeva mnogo manje apriornih informacija.

Razmotrimo primjenu OLS -a u slučaju kada je vektor promatranja $ Z $ linearnim modelom povezan s vektorom procjene parametara $ X $, a promatranje sadrži šum $ V $ nekoreliran s procijenjenim parametrom:

$ Z = HX + V $, (1)

gdje je $ H $ transformacijska matrica koja opisuje odnos između promatranih veličina i procijenjenih parametara.

Procjena $ X $ koja minimizira kvadratnu grešku je zapisana na sljedeći način:

$ X_ (oc) = (H ^ TR_V ^ (- 1) H) ^ (- 1) H ^ TR_V ^ (- 1) Z $, (2)

Neka smetnja $ V $ bude nekorelirana, u ovom slučaju matrica $ R_V $ je samo matrica identiteta, a jednadžba za procjenu postaje jednostavnija:

$ X_ (ots) = (H ^ TH) ^ (- 1) H ^ TZ $, (3)

Pisanje u matričnom obliku značajno štedi papir, ali za neke to može biti neobično. Sljedeći primjer, preuzet iz monografije Yu. M. Korshunova "Matematički temelji kibernetike", ilustrira sve to.
Dostupno je sljedeće električno kolo:

Uočene vrijednosti u ovom slučaju su očitanja uređaja $ A_1 = 1 A, A_2 = 2 A, V = 20 B $.

Osim toga, otpor $ R = 5 $ Ohm je poznat. Potrebno je na najbolji način procijeniti, sa stanovišta kriterija minimalnog srednjeg kvadrata greške, vrijednosti struja $ I_1 $ i $ I_2 $. Ovdje je najvažnije da postoji određena veza između promatranih vrijednosti (očitanja instrumenta) i procijenjenih parametara. A ti se podaci donose izvana.

U ovom slučaju to su Kirchhoffovi zakoni, u slučaju filtriranja (o čemu će biti više riječi) - autoregresivni model vremenskog niza, koji pretpostavlja ovisnost trenutne vrijednosti o prethodnim.

Dakle, poznavanje Kirchhoffovih zakona, koje nema veze s teorijom statističkih odluka, omogućuje uspostavljanje veze između promatranih vrijednosti i procijenjenih parametara (koji su studirali elektrotehniku ​​- mogu provjeriti, ostalo će imati verovati im na reč):

$$ z_1 = A_1 = I_1 + \ xi_1 = 1 $$

$$ z_2 = A_2 = I_1 + I_2 + \ xi_2 = 2 $$

$$ z_2 = V / R = I_1 + 2 * I_2 + \ xi_3 = 4 $$

Isto je u vektorskom obliku:

$$ \ begin (vmatrix) z_1 \\ z_2 \\ z_3 \ end (vmatrix) = \ begin (vmatrix) 1 & 0 \\ 1 & 1 \\ 1 & 2 \ end (vmatrix) \ begin (vmatrix) I_1 \ \ I_2 \ end (vmatrix) + \ begin (vmatrix) \ xi_1 \\ \ xi_2 \\ \ xi_3 \ end (vmatrix) $$

Ili $ Z = HX + V $, gde

$$ Z = \ begin (vmatrix) z_1 \\ z_2 \\ z_3 \ end (vmatrix) = \ begin (vmatrix) 1 \\ 2 \\ 4 \ end (vmatrix); H = \ begin (vmatrix) 1 & 0 \\ 1 & 1 \\ 1 & 2 \ end (vmatrix); X = \ begin (vmatrix) I_1 \\ I_2 \ end (vmatrix); V = \ begin (vmatrix) \ xi_1 \\ \ xi_2 \\ \ xi_3 \ end (vmatrix) $$

Uzimajući u obzir vrijednosti smetnji koje nisu međusobno povezane, procjenu I 1 i I 2 nalazimo metodom najmanjih kvadrata prema formuli 3:

$ H ^ TH = \ begin (vmatrix) 1 & 1 & 1 \\ 0 & 1 & 2 \ end (vmatrix) \ begin (vmatrix) 1 & 0 \\ 1 & 1 \\ 1 & 2 \ end (vmatrix) = \ begin (vmatrix) 3 & 3 \\ 3 & 5 \ end (vmatrix); (H ^ TH) ^ ( -1) = \ frac (1) (6) \ begin (vmatrix) 5 & -3 \\ -3 & 3 \ end (vmatrix) $;

$ H ^ TZ = \ begin (vmatrix) 1 & 1 & 1 \\ 0 & 1 & 2 \ end (vmatrix) \ begin (vmatrix) 1 \\ 2 \\ 4 \ end (vmatrix) = \ begin (vmatrix) 7 \ \ 10 \ end (vmatrix); X (ots) = \ frac (1) (6) \ begin (vmatrix) 5 & -3 \\ -3 & 3 \ end (vmatrix) \ begin (vmatrix) 7 \\ 10 \ end (vmatrix) = \ frac (1) (6) \ begin (vmatrix) 5 \\ 9 \ end (vmatrix) $;

Dakle, $ I_1 = 5/6 = 0,833 A $; $ I_2 = 9/6 = 1,5 A $.

Zadatak filtriranja

Za razliku od problema procjene parametara koji imaju fiksne vrijednosti, u problemu filtriranja potrebno je procijeniti procese, odnosno pronaći trenutne procjene vremenski promjenjivog signala, iskrivljenog smetnjama, i, prema tome, nedostupan direktnom merenju. Općenito, vrsta algoritama filtriranja ovisi o statističkim svojstvima signala i šuma.

Pretpostavit ćemo da je korisni signal sporo promjenjiva funkcija vremena, a smetnje su nekorelirani šum. Koristit ćemo metodu najmanjih kvadrata, opet zbog nedostatka apriornih informacija o vjerojatnim karakteristikama signala i smetnjama.

Prvo dobivamo procjenu trenutne vrijednosti $ x_n $ na osnovu raspoloživih $ k $ najnovijih vrijednosti vremenskog niza $ z_n, z_ (n-1), z_ (n-2) \ tačke z_ (n- (k-1)) $. Model posmatranja je isti kao u problemu procjene parametara:

Jasno je da je $ Z $ vektor kolone koji se sastoji od posmatranih vrijednosti vremenskih serija $ z_n, z_ (n-1), z_ (n-2) \ tačaka z_ (n- (k-1)) $, $ V $-vektorska kolona šuma $ \ xi _n, \ xi _ (n-1), \ xi_ (n-2) \ tačke \ xi_ (n- (k-1)) $, iskrivljujući istinu signal. Šta znače simboli $ H $ i $ X $? O čemu, na primjer, vektor stupca $ X $ možemo govoriti ako je sve što je potrebno da se procijeni trenutna vrijednost vremenske serije? A što se misli pod transformacijskom matricom $ H $ uopće nije jasno.

Na sva ova pitanja može se odgovoriti samo ako se u obzir uzme koncept modela generiranja signala. Odnosno, potreban je neki model izvornog signala. To je razumljivo, u nedostatku apriornih informacija o vjerojatnim karakteristikama signala i smetnjama, ostaje samo pretpostaviti. Možete to nazvati gatanjem na talogu kave, ali stručnjaci preferiraju drugačiju terminologiju. Na njihovom "sušilu za kosu" to se naziva parametarski model.

U ovom slučaju se procjenjuju parametri ovog konkretnog modela. Prilikom odabira prikladnog modela za generiranje signala, imajte na umu da se bilo koja analitička funkcija može proširiti u Taylorov niz. Nevjerojatno svojstvo Taylorovog niza je da je oblik funkcije na bilo kojoj konačnoj udaljenosti $ t $ od tačke $ x = a $ jedinstveno određen ponašanjem funkcije u beskonačno malom susjedstvu tačke $ x = a $ (govorimo o derivatima prvog i višeg reda).

Dakle, postojanje Taylor -ovog niza znači da analitička funkcija ima unutrašnju strukturu s vrlo jakim spregom. Ako se, na primjer, ograničimo na tri člana Taylor serije, tada će model generiranja signala izgledati ovako:

$ x_ (n-i) = F _ (- i) x_n $, (4)

$$ X_n = \ begin (vmatrix) x_n \\ x "_n \\ x" "_ n \ end (vmatrix); F _ ( - i) = \ begin (vmatrix) 1 & -i & i ^ 2/2 \\ 0 & 1 & -i \\ 0 & 0 & 1 \ end (vmatrix) $$

Odnosno, formula 4, za dati poredak polinoma (u primjeru je jednako 2) uspostavlja vezu između $ n $ -te vrijednosti signala u vremenskom slijedu i $ (ni) $ - th. Dakle, procijenjeni vektor stanja u ovom slučaju uključuje, osim stvarne procijenjene vrijednosti, prvi i drugi derivat signala.

U teoriji automatskog upravljanja, takav filter bi se nazvao filterom astatizma drugog reda. Matrica transformacije $ H $ za ovaj slučaj (procjena se vrši na osnovu trenutnih i $ k-1 $ prethodnih uzoraka) izgleda ovako:

$$ H = \ begin (vmatrix) 1 & -k & k ^ 2/2 \\ - & - & - \\ 1 & -2 & 2 \\ 1 & -1 & 0,5 \\ 1 & 0 & 0 \ kraj (vmatrix) $$

Svi ovi brojevi dobiveni su iz Taylorove serije pod pretpostavkom da je vremenski interval između susjednih promatranih vrijednosti konstantan i jednak 1.

Dakle, zadatak filtriranja prema našim pretpostavkama sveden je na zadatak procjene parametara; u ovom slučaju se procjenjuju parametri usvojenog modela generiranja signala. Procjena vrijednosti vektora stanja $ X $ provodi se prema istoj formuli 3:

$$ X_ (ots) = (H ^ TH) ^ (- 1) H ^ TZ $$

U suštini smo implementirali proces parametarske procjene zasnovan na autoregresivnom modelu procesa generisanja signala.

Formula 3 se lako programski implementira, za to morate popuniti matricu $ H $ i vektorski stupac opažanja $ Z $. Ovi filtri se nazivaju konačni memorijski filteri, budući da koriste posljednja opažanja od $ k $ kako bi dobili trenutnu procjenu od $ X_ (nema) $. Na svakom novom satu za promatranje, novi se dodaje trenutnom skupu opažanja, a stari se odbacuje. Taj proces stjecanja ocjena naziva se klizni prozor.

Rastu memorijski filteri

Filtri s ograničenom memorijom imaju glavni nedostatak što je nakon svakog novog promatranja potrebno izvršiti potpuno ponovno izračunavanje svih podataka pohranjenih u memoriji. Osim toga, izračunavanje procjena može se započeti tek nakon što se prikupe rezultati prvih $ k $ opažanja. Odnosno, ovi filtri imaju dugo prolazno vrijeme.

Za suzbijanje ovog nedostatka potrebno je preći s trajnog memorijskog filtera na filter sa rastuće pamćenje... U takvom filtru broj promatranih vrijednosti za koje se vrši procjena mora se podudarati s brojem n trenutnog opažanja. To omogućuje dobivanje procjena počevši od broja opažanja jednakih broju komponenti procijenjenog vektora $ X $. A to je određeno redoslijedom usvojenog modela, odnosno, koliko se članova iz Taylor serije koristi u modelu.

U isto vrijeme, s povećanjem n, svojstva zaglađivanja filtera se poboljšavaju, odnosno povećava se točnost procjena. Međutim, izravna implementacija ovog pristupa povezana je s povećanjem računalnih troškova. Stoga se rastući memorijski filtri implementiraju kao ponavljajući.

Činjenica je da do trenutka n već imamo procjenu $ X _ ((n-1) oc) $, koja sadrži podatke o svim prethodnim zapažanjima $ z_n, z_ (n-1), z_ (n-2) \ tačke z_ (n- (k-1)) $. Procjena $ X_ (noc) $ se dobiva iz sljedećeg opažanja $ z_n $ koristeći podatke pohranjene u procjeni $ X _ ((n-1)) (\ mbox (oc)) $. Ovaj postupak naziva se ponavljajuće filtriranje i sastoji se od sljedećeg:

  • prema procjeni $ X _ ((n-1)) (\ mbox (oc)) $ predvidi procjenu $ X_n $ formulom 4 sa $ i = 1 $: $ X _ (\ mbox (notsapriori)) = F_1X _ ((n-1) sc) $. Ovo je apriorna procjena;
  • prema rezultatima trenutnog promatranja $ z_n $, ova se apriorna procjena pretvara u istinitu, to jest, posteriori;
  • ovaj postupak se ponavlja u svakom koraku, počevši od $ r + 1 $, gdje je $ r $ redoslijed filtriranja.

Konačna formula za periodično filtriranje izgleda ovako:

$ X _ ((n-1) oc) = X _ (\ mbox (notsapriori)) + (H ^ T_nH_n) ^ (- 1) h ^ T_0 (z_n- h_0 X _ (\ mbox (notsapriori))) $ , (6)

gdje za naš filter drugog reda:

Rastući memorijski filter koji radi prema formuli 6 poseban je slučaj algoritma filtriranja poznatog kao Kalmanov filter.

U praktičnoj implementaciji ove formule potrebno je zapamtiti da je apriorna procjena uključena u nju određena formulom 4, a vrijednost $ h_0 X _ (\ mbox (notspriori)) $ je prva komponenta vektora $ X _ (\ mbox (notspriori)) $.

Rastući memorijski filter ima jednu važnu značajku. Ako pogledate formulu 6, tada je konačni rezultat zbroj predviđenog vektora ocjena i ispravnog izraza. Ova korekcija je velika za male $ n $ i smanjuje se sa povećanjem $ n $, težeći ka nuli kao $ n \ rightarrow \ infty $. Odnosno, s povećanjem n, svojstva zaglađivanja filtera rastu i model koji je njemu svojstven počinje dominirati. Ali pravi signal može odgovarati modelu samo u određenim područjima, pa se tačnost prognoze pogoršava.

Za borbu protiv ovoga, počevši od nekih $ n $, nameće se zabrana daljeg smanjenja roka korekcije. To je ekvivalentno promjeni propusnosti filtera, odnosno za mali n filter je širi (manje inercijalan), za veliki n postaje inercijalniji.

Uporedite slike 1 i 2. Na prvoj slici, filter ima veliku memoriju, dok se dobro zaglađuje, ali zbog uskog opsega procijenjena putanja zaostaje za realnom. Na drugoj slici, memorija filtera je manja, lošije se zaglađuje, ali bolje prati stvarnu putanju.

Književnost

  1. YM Korshunov "Matematički temelji kibernetike"
  2. A.V. Balakrishnan "Kalmanova teorija filtracije"
  3. VNFomin "Rekurentna procjena i adaptivno filtriranje"
  4. C.F.N. Cowan, P.M. Odobrite "Adaptive Filters"

Random Forest je jedan od mojih omiljenih algoritama za rudarenje podataka. Prvo, nevjerojatno je svestran, može se koristiti za rješavanje regresijskih i klasifikacijskih problema. Potražite anomalije i odaberite prediktore. Drugo, ovo je algoritam koji je zaista teško nepravilno primijeniti. Jednostavno zato što, za razliku od drugih algoritama, ima nekoliko konfigurabilnih parametara. U osnovi je i iznenađujuće jednostavan. U isto vrijeme, izvanredan je po svojoj preciznosti.

Koja je ideja iza tako divnog algoritma? Ideja je jednostavna: recimo da imamo neki vrlo slab algoritam, recimo. Ako napravimo mnogo različitih modela koristeći ovaj slabi algoritam i prosječimo rezultat njihovih predviđanja, tada će konačni rezultat biti mnogo bolji. Ovo je takozvani ansamblni trening na djelu. Algoritam slučajnih šuma stoga se naziva "slučajna šuma", jer dobiveni podaci stvaraju mnoga stabla odlučivanja, a zatim prosjekuju rezultat njihovih predviđanja. Važna stvar ovdje je element slučajnosti u kreiranju svakog stabla. Uostalom, jasno je da ako stvorimo mnogo identičnih stabala, tada će rezultat njihovog prosjeka imati točnost jednog stabla.

Kako on funkcionira? Pretpostavimo da imamo neke ulazne podatke. Svaka kolona odgovara nekom parametru, svaki red odgovara nekom elementu podataka.

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


Četvrtak, 10. maj 2012

Četvrtak, 12. januar 2012


To je sve. 17-satni let je završen, Rusija je u inostranstvu. A kroz prozor ugodnog dvosobnog stana gleda nas San Francisco, poznata Silicijska dolina, Kalifornija, SAD. Da, to je upravo razlog zašto u posljednje vrijeme praktično nisam pisao. Preselili smo se.

Sve je počelo u aprilu 2011. godine kada sam radila telefonski intervju u Zyngi. Tada je sve izgledalo kao neka igra koja nema veze sa stvarnošću, a ja nisam mogao ni zamisliti što će to rezultirati. U junu 2011. Zynga je došao u Moskvu i obavio niz intervjua, razmotreno je oko 60 kandidata koji su prošli telefonske razgovore, a odabrano je njih 15 -ak (ne znam tačan broj, neko se kasnije predomislio, neko odmah odbio). Pokazalo se da je intervju iznenađujuće jednostavan. Bez problema u programiranju, bez škakljivih pitanja o obliku otvora, testirana je uglavnom sposobnost govora. A znanje je, po mom mišljenju, procijenjeno samo površno.

A onda je počeo trik. Prvo smo čekali rezultate, zatim ponudu, zatim odobrenje LCA, zatim odobrenje peticije za vizu, zatim dokumente iz SAD -a, pa red u ambasadi, pa dodatnu provjeru, pa visa. Ponekad mi se činilo da sam spreman odustati od svega i postići gol. Ponekad sam sumnjao treba li nam ova Amerika, na kraju krajeva, nije loše ni u Rusiji. Cijeli proces trajao je oko pola godine, pa smo sredinom decembra dobili vize i počeli se pripremati za polazak.

Ponedeljak je bio moj prvi dan na poslu na novom mestu. U uredu se stvaraju svi uslovi ne samo za rad, već i za život. Doručci, ručkovi i večere naših kuhara, gomila raznolike hrane natrpana posvuda, teretana, masaža, pa čak i frizer. Za zaposlene je sve to potpuno besplatno. Mnogi ljudi dolaze na posao biciklom, a postoji nekoliko prostorija za skladištenje vozila. Općenito, nikada u Rusiji nisam naišao na nešto slično. Sve, međutim, ima svoju cijenu, odmah smo upozoreni da ćemo morati puno raditi. Šta je "puno", prema njihovim standardima, nije mi jasno.

Nadam se, međutim, da ću unatoč količini posla, u doglednoj budućnosti moći nastaviti s blogovanjem i možda reći nešto o američkom životu i radu kao programera u Americi. Sačekajte i vidite. U međuvremenu svima čestitam nadolazeću Novu godinu i Božić i vidimo se uskoro!


Za primjer upotrebe, odštampaćemo dividendne prinose ruskih kompanija. Kao osnovnu cijenu uzimamo zaključnu cijenu dionice na dan zatvaranja registra. Iz nekog razloga, ove informacije se ne nalaze na mjestu trojke, i mnogo su zanimljivije od apsolutnih vrijednosti dividendi.
Pažnja! Izvođenje koda traje dugo, jer za svaku promociju morate poslati zahtjev finalm serverima i dobiti njegovu vrijednost.

Rezultat<- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0) (try ((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 graditi statistiku za protekle godine.

Kalmanov filter vjerovatno je najpopularniji algoritam filtriranja koji se koristi u mnogim poljima znanosti i tehnologije. Zbog svoje jednostavnosti i efikasnosti, može se naći u GPS prijemnicima, procesorima očitanja senzora, u implementaciji upravljačkih sistema itd.

Na internetu postoji mnogo članaka i knjiga o Kalmanovom filtru (uglavnom na engleskom), ali ti članci imaju prilično veliki prag ulaska, ima mnogo nejasnih mjesta, iako je to u stvari vrlo jasan i transparentan algoritam. Pokušat ću vam to reći jednostavnim jezikom, sa postepenim povećanjem složenosti.

Čemu služi?

Bilo koji mjerni uređaj ima neku grešku, na njega može utjecati veliki broj vanjskih i unutarnjih utjecaja, što dovodi do činjenice da su informacije iz njega bučne. Što su podaci bučniji, to je teže obraditi takve informacije.

Filter je algoritam za obradu podataka koji uklanja šum i nepotrebne informacije. U Kalmanovom filtru moguće je apriorno navesti podatke o prirodi sistema, odnosu varijabli i na osnovu toga izgraditi precizniju procjenu, ali čak i u najjednostavnijem slučaju (bez unošenja apriornih podataka ) daje odlične rezultate.

Razmotrimo najjednostavniji primjer - pretpostavimo da moramo kontrolirati razinu goriva u spremniku. Da biste to učinili, u spremnik je ugrađen kapacitivni senzor, vrlo se lako održava, ali ima neke nedostatke - na primjer, ovisnost o gorivu koje se puni (dielektrična konstanta goriva ovisi o mnogim faktorima, na primjer, na temperaturu), veliki utjecaj "neravnina" u spremniku. Kao rezultat toga, informacije iz njega predstavljaju tipičnu "pilu" pristojne amplitude. Ove vrste senzora često se ugrađuju na tešku rudarsku opremu (nemojte biti zbunjeni volumenom spremnika):

Kalmanov filter

Hajdemo malo digresirati i upoznati se sa samim algoritmom. Kalmanov filter koristi dinamički model sistema (na primjer, fizički zakon kretanja), poznate kontrolne radnje i mnoga uzastopna mjerenja za formiranje optimalne procjene stanja. Algoritam se sastoji od dvije faze koje se ponavljaju: predviđanja i korekcije. U prvoj fazi izračunava se predviđanje stanja u sljedećem trenutku (uzimajući u obzir netočnost njihovog mjerenja). Na drugom mjestu, nove informacije senzora ispravljaju predviđenu vrijednost (također uzimajući u obzir netočnost i buku ovih informacija):

Jednadžbe su predstavljene u matričnom obliku, ako ne znate linearnu algebru - to je u redu, tada će postojati pojednostavljena verzija bez matrica za slučaj s jednom varijablom. U slučaju jedne varijable, matrice se degeneriraju u skalarne vrijednosti.

Shvatimo prvo notaciju: indeks označava trenutak u vremenu: k - trenutna, (k -1) - prethodna, znak minus u nadnapisu znači da je predviđeno srednja vrijednost.

Opisi varijabli prikazani su na sljedećim slikama:

Moguće je dugo i mukotrpno opisivati ​​šta sve ove misteriozne tranzicijske matrice znače, ali po mom mišljenju bolje je pokušati primijeniti algoritam na stvarnom primjeru - kako bi apstraktne vrijednosti dobile stvarno značenje.

Pokušajmo na djelu

Vratimo se na primjer sa senzorom razine goriva, budući da je stanje sistema predstavljeno jednom varijablom (zapremina goriva u spremniku), matrice se degeneriraju u uobičajene jednadžbe:
Definiranje modela procesa
Za primjenu filtera potrebno je odrediti matrice / vrijednosti varijabli koje određuju dinamiku sistema i dimenzije F, B i H:

F- varijabla koja opisuje dinamiku sistema, u slučaju goriva - to može biti koeficijent koji određuje potrošnju goriva u praznom hodu tokom vremena uzorkovanja (vrijeme između koraka algoritma). Međutim, osim potrošnje goriva, postoje i dopune goriva ... stoga ćemo radi jednostavnosti uzeti ovu varijablu jednaku 1 (to jest, označavamo da će predviđena vrijednost biti jednaka prethodnom stanju).

B- varijabla koja određuje primjenu kontrolne radnje. Da imamo dodatne informacije o broju okretaja motora ili stupnju pritiskanja papučice gasa, ovaj parametar bi odredio kako će se potrošnja goriva promijeniti tokom vremena uzorkovanja. Budući da u našem modelu nema kontrolnih radnji (nema podataka o njima), uzimamo B = 0.

H- matrica koja određuje odnos između mjerenja i stanja sistema, za sada ćemo, bez objašnjenja, uzeti ovu varijablu jednaku 1.

Definiranje svojstava zaglađivanja
R- greška mjerenja može se utvrditi ispitivanjem mjernih instrumenata i utvrđivanjem greške njihovog mjerenja.

P- Određivanje procesne buke je teži zadatak, jer je potrebno utvrditi varijansu procesa, što nije uvijek moguće. U svakom slučaju, možete odabrati ovaj parametar kako biste osigurali potrebnu razinu filtracije.

Implementacija u kodu
Da bismo uklonili preostalo nerazumijevanje, implementirali smo pojednostavljeni algoritam u C # (bez matrica i kontrolnih radnji):

klasa KalmanFilterSimple1D
{
public double X0 (get; private set;) // predviđeno stanje
public double P0 (get; private set;) // predviđena kovarijansa

Javni dvostruki F (get; private set;) // faktor stvarne vrijednosti na prethodnu stvarnu vrijednost
public double Q (get; private set;) // mjerna buka
public double H (get; private set;) // faktor izmjerene vrijednosti do stvarne vrijednosti
public double R (get; private set;) // okolišna buka

Javno dvostruko stanje (get; private set;)
javna dvostruka kovarijansa (get; private set;)

Javni KalmanFilterSimple1D (dvostruki q, dvostruki r, dvostruki f = 1, dvostruki h = 1)
{
Q = q;
R = r;
F = f;
H = h;
}

Javna praznina SetState (dvostruko stanje, dvostruka kovarijansa)
{
Država = stanje;
Kovarijansa = kovarijansa;
}

Javna praznina Tačna (dvostruki podaci)
{
// ažuriranje vremena - predviđanje
X0 = F * Stanje;
P0 = F * Kovarijansa * F + Q;

// ažuriranje mjerenja - ispravka
var K = H * P0 / (H * P0 * H + R);
Stanje = X0 + K * (podaci - H * X0);
Kovarijansa = (1 - K * H) * F;
}
}

// Aplikacija ...

Var fuelData = GetData ();
var filtrirano = novi List ();

Var kalman = novi KalmanFilterSimple1D (f: 1, h: 1, q: 2, r: 15); // skup F, H, Q i R
kalman.SetState (fuelData, 0,1); // Postavljanje početnih vrijednosti za stanje i kovarijansu
foreach (var d u gorivuPodaci)
{
kalman.Correct (d); // Primijenite algoritam

Filtered.Add (kalman.State); // Spremanje trenutnog stanja
}

Rezultat filtriranja s ovim parametrima prikazan je na slici (da biste prilagodili stupanj zaglađivanja - možete promijeniti parametre Q i R):

Najzanimljiviji dio članka ostaje - primjena Kalmanovog filtera za nekoliko varijabli, postavljanje odnosa između njih i automatsko ispisivanje vrijednosti za neopazive varijable. Pokušat ću nastaviti temu čim bude vremena.

Nadam se da se opis nije pokazao baš dosadnim i kompliciranim, ako imate pitanja ili pojašnjenja - dobrodošli u komentare)

U procesu automatizacije tehnoloških procesa za upravljanje mehanizmima i jedinicama, potrebno je baviti se mjerenjima različitih fizičkih veličina. To može biti pritisak i brzina protoka tekućine ili plina, brzina, temperatura i još mnogo toga. Mjerenje fizičkih veličina vrši se pomoću analognih senzora. Analogni signal je signal podataka u kojem je svaki od reprezentativnih parametara opisan funkcijom vremena i kontinuiranim skupom mogućih vrijednosti. Iz kontinuiteta prostora vrijednosti slijedi da se sve smetnje unesene u signal ne razlikuju od željenog signala. Stoga će pogrešna vrijednost potrebne fizičke količine biti poslana na analogni ulaz upravljačkog uređaja. Zbog toga je potrebno filtrirati signal koji dolazi sa senzora.

Jedan od efikasnih algoritama filtriranja je Kalmanov filter. Kalmanov filter je rekurzivni filter koji procjenjuje vektor stanja dinamičkog sistema pomoću niza nepotpunih i bučnih mjerenja. Kalmanov filter koristi dinamički model sistema (na primjer, fizički zakon kretanja), kontrolne radnje i mnoga uzastopna mjerenja za formiranje optimalne procjene stanja. Algoritam se sastoji od dvije faze koje se ponavljaju: predviđanja i korekcije. U prvoj fazi izračunava se predviđanje stanja u sljedećem trenutku (uzimajući u obzir netočnost njihovog mjerenja). Na drugom mjestu, nove informacije sa senzora ispravljaju predviđenu vrijednost (također uzimajući u obzir netočnost i buku ovih informacija).

U fazi predviđanja događa se sljedeće:

  1. Predviđanje stanja sistema:

gdje je predviđanje stanja sistema u trenutnom vremenu; - matrica prelaska između stanja (dinamički model sistema); - predviđanje stanja sistema u prethodnom trenutku; - matrica primjene kontrolne radnje; - upravljanje radnjom u prethodnom trenutku.

  1. Predviđanje kovarijance greške:

gdje je predviđanje greške; - greška u prethodnom trenutku; - kovarijansa procesne buke.

U fazi prilagođavanja događa se sljedeće:

  1. Proračun Kalmanovog dobitka:

gdje je Kalmanov dobitak; - matricu mjerenja koja prikazuje odnos mjerenja i stanja; - kovarijansa mjerne buke.

gdje je mjerenje u trenutno vrijeme.

  1. Ažuriranje greške kovarijance:

gdje je matrica identiteta.

Ako je stanje sistema opisano jednom varijablom, tada je = 1, a matrice se degeneriraju u obične jednadžbe.

Kako bi se jasno pokazala efikasnost Kalmanovog filtera, izveden je eksperiment sa AVR PIC KY-037 senzorom jačine zvuka, koji je spojen na mikrokontroler Arduino Uno. Slika 1 prikazuje grafikon očitanja senzora bez filtera (linija 1). Kaotične fluktuacije na izlazu senzora ukazuju na prisutnost buke.

Slika 1. Grafikon očitanja senzora bez filtera

Za primjenu filtera potrebno je definirati vrijednosti varijabli i, koje određuju dinamiku sistema i dimenzije. Uzmimo i jednako 1, i jednako 0, budući da u sistemu nema kontrolnih radnji. Za određivanje svojstava zaglađivanja filtera potrebno je izračunati vrijednost varijable, kao i odabrati vrijednost parametra.

Proračun ćemo izračunati u programu Microsoft Excel 2010. Da biste to učinili, potrebno je izračunati standardnu ​​devijaciju za uzorak očitanja senzora. = 0,62. odabiremo ovisno o traženom stupnju filtracije, uzimamo = 0,001. Na slici 2, drugi red prikazuje grafikon očitanja senzora sa primijenjenim filterom.

Slika 2. Grafikon očitanja senzora pomoću Kalmanovog filtera

Iz grafikona možemo zaključiti da se filter nosio sa zadatkom filtriranja buke, budući da su u stabilnom stanju fluktuacije očitanja senzora koje su prošle filtriranje beznačajne.

Međutim, Kalmanov filter ima značajan nedostatak. Ako se izmjerena vrijednost senzora može brzo promijeniti, filtrirano očitanje senzora neće se promijeniti tako brzo kao izmjerena vrijednost. Slika 3 prikazuje reakciju Kalmanovog filtera na skok izmjerene vrijednosti.

Slika 3. Reakcija Kalmanovog filtera na skok izmjerene vrijednosti

Utvrđeno je da je reakcija filtera na skok izmjerene vrijednosti zanemariva. Ako se izmjerena vrijednost značajno promijeni, a zatim se ne vrati na prethodnu vrijednost, tada će filtrirana očitanja senzora odgovarati stvarnoj vrijednosti izmjerene vrijednosti tek nakon značajnog vremenskog perioda, što je neprihvatljivo za sisteme automatskog upravljanja koji zahtijevaju visoke performanse .

Iz provedenog eksperimenta može se zaključiti da je Kalmanov filter poželjno koristiti za filtriranje očitanja senzora u sustavima male brzine.

Bibliografija:

  1. GOST 17657-79. Prijenos podataka. Termini i definicije. - Moskva: Izdavačka kuća standarda, 2005. - 2 str.
  2. Kalmanov filter // Wikipedia. ... Ažuriran datum: 26.04.2017. URL: http://ru.wikipedia.org/?oldid=85061599 (datum pristupa: 21.05.2017.).