Pomocou Kalmanovho filtra odfiltrujte hodnoty získané zo senzorov. Kalmanovo filtrovanie Optimálny Kalmanov filter

Na internete, vrátane informácií o Habrém, nájdete veľa informácií o Kalmanovom filtri. Je však ťažké nájsť ľahko stráviteľné odvodenie samotných vzorcov. Bez záveru je celá táto veda vnímaná ako druh šamanizmu, vzorce vyzerajú ako beztvárny súbor symbolov, a čo je najdôležitejšie, mnohé jednoduché tvrdenia, ktoré ležia na povrchu teórie, sú mimo chápania. Cieľom tohto článku bude hovoriť o tomto filtri v čo najprístupnejšom jazyku.
Kalmanov filter je účinný nástroj na filtrovanie údajov. Jeho hlavným princípom je, že pri filtrovaní sa používajú informácie o fyzike samotného javu. Ak napríklad filtrujete údaje z rýchlomera automobilu, zotrvačnosť vozidla vám dáva právo vnímať príliš rýchle skoky v rýchlosti ako chybu merania. Kalmanov filter je zaujímavý, pretože v istom zmysle je to najlepší filter. Ďalej budeme podrobnejšie diskutovať o tom, čo presne znamenajú slová „najlepší“. Na konci článku ukážem, že v mnohých prípadoch je možné vzorce zjednodušiť do takej miery, že z nich nezostane takmer nič.

Vzdelávací program

Predtým, ako sa zoznámime s Kalmanovým filtrom, navrhujem pripomenúť si niekoľko jednoduchých definícií a faktov z teórie pravdepodobnosti.

Náhodná hodnota

Keď hovoria, že je daná náhodná premenná, znamená to, že táto veličina môže nadobúdať náhodné hodnoty. Chce to rôzne hodnoty s rôznou pravdepodobnosťou. Keď hodíte napríklad kockou, vypadne diskrétny súbor hodnôt :. Pokiaľ ide napríklad o rýchlosť putujúcej častice, potom sa človek očividne musí vysporiadať s nepretržitým súborom hodnôt. Hodnoty „vypadnutých“ náhodných premenných budeme označovať pomocou, ale niekedy použijeme rovnaké písmeno, ktoré použijeme na označenie náhodnej premennej :.
V prípade spojitého súboru hodnôt je náhodná premenná charakterizovaná hustotou pravdepodobnosti, ktorá nám diktuje, že pravdepodobnosť, že náhodná premenná „vypadne“ v malom susedstve bodu s dĺžkou, je rovná. Ako vidíme z obrázku, táto pravdepodobnosť sa rovná oblasti tieňovaného obdĺžnika pod grafom:

V živote sú náhodné premenné často gaussovské, keď je hustota pravdepodobnosti.

Vidíme, že funkcia má tvar zvona so stredom v bode a s charakteristickou šírkou rádu.
Keďže hovoríme o Gaussovom rozdelení, bolo by hriechom nespomenúť, odkiaľ pochádza. Rovnako ako sú čísla v matematike pevne stanovené a vyskytujú sa na najneočakávanejších miestach, tak aj Gaussova distribúcia zapustila korene v teórii pravdepodobnosti. Jeden pozoruhodný výrok, ktorý čiastočne vysvetľuje Gaussovu všadeprítomnosť, je nasledujúci:
Nech existuje náhodná premenná s ľubovoľným rozdelením (v skutočnosti existujú určité obmedzenia tejto svojvoľnosti, ale nie sú vôbec prísne). Vykonajme experimenty a vypočítajme súčet „vypadnutých“ hodnôt náhodnej premennej. Urobme veľa z týchto experimentov. Je jasné, že zakaždým dostaneme inú hodnotu sumy. Inými slovami, tento súčet je sám osebe náhodnou premennou s vlastným určitým distribučným zákonom. Ukazuje sa, že pre dostatočne veľké zákony distribúcie tejto sumy smerujú k gaussovskému rozdeleniu (mimochodom, charakteristická šírka „zvona“ rastie podobne). Prečítajte si viac na Wikipédii: Central Limit Theorem. V živote veľmi často existujú veličiny, ktoré sú tvorené veľkým počtom rovnomerne rozložených nezávislých náhodných premenných, a preto sú rozdelené podľa Gaussiana.

Priemer

Priemerná hodnota náhodnej premennej je to, čo dostaneme v limite, ak vykonávame veľa experimentov a vypočítame aritmetický priemer klesnutých hodnôt. Priemer je označovaný rôznymi spôsobmi: matematici radi označujú (očakávanie) a zahraniční matematici (očakávanie). Fyzici sú cez alebo. Označíme zahraničným spôsobom :.
Napríklad pre gaussovskú distribúciu je priemer.

Rozptyl

V prípade Gaussovho rozdelenia jasne vidíme, že náhodná premenná uprednostňuje vypadnutie v určitom susedstve svojej strednej hodnoty. Ako je zrejmé z grafu, charakteristický rozptyl hodnôt poradia. Ako môžeme odhadnúť toto rozšírenie hodnôt pre ľubovoľnú náhodnú premennú, ak poznáme jej distribúciu. Môžete nakresliť graf jeho hustoty pravdepodobnosti a odhadnúť charakteristickú šírku podľa oka. Radšej však ideme algebraickou cestou. Priemernú dĺžku odchýlky (modul) nájdete od priemeru :. Táto hodnota bude dobrým odhadom charakteristického rozptylu hodnôt. Ale vy a ja veľmi dobre vieme, že používanie modulov vo vzorcoch je jedna bolesť hlavy, takže tento vzorec sa zriedka používa na odhad charakteristického šírenia.
Jednoduchší spôsob (jednoduchý z hľadiska výpočtov) je nájsť. Táto hodnota sa nazýva odchýlka a často sa označuje ako. Koreň rozptylu sa nazýva štandardná odchýlka. Štandardná odchýlka je dobrým odhadom šírenia náhodnej premennej.
Napríklad pre gaussovské rozdelenie môžeme vypočítať, že variácia definovaná vyššie je presne rovnaká, čo znamená, že štandardná odchýlka je rovnaká, čo veľmi dobre zodpovedá našej geometrickej intuícii.
V skutočnosti sa tu skrýva malý podvod. Faktom je, že v definícii Gaussovského rozdelenia je pod exponentom výraz. Tieto dva v menovateli stoja presne tak, že štandardná odchýlka by sa rovnala koeficientu. To znamená, že samotný Gaussov distribučný vzorec je napísaný vo forme špeciálne naostrenej, aby sme zvážili jeho odchýlku od stredného štvorca.

Nezávislé náhodné premenné

Náhodné premenné sú závislé a nie. Predstavte si, že hodíte ihlu do lietadla a zapíšete si súradnice oboch koncov. Tieto dve súradnice sú závislé a súvisia s podmienkou, že vzdialenosť medzi nimi je vždy rovnaká ako dĺžka ihly, hoci ide o náhodné hodnoty.
Náhodné premenné sú nezávislé, ak je výsledok prvej z nich úplne nezávislý na výsledku druhej z nich. Ak sú náhodné premenné nezávislé, priemerná hodnota ich produktu sa rovná súčinu ich priemerných hodnôt:

Dôkaz

Napríklad modré oči a ukončenie strednej školy so zlatou medailou sú nezávislé náhodné premenné. Ak existujú modrookí, povedzme, zlatí medailisti, potom modrookí medailisti. Tento príklad nám hovorí, že ak sú náhodné premenné a sú dané ich hustotou pravdepodobnosti a, potom je nezávislosť týchto hodnôt vyjadrená v skutočnosti, že hustota pravdepodobnosti (prvá hodnota vypadla a druhá) sa zistí podľa vzorca:

Z toho bezprostredne vyplýva, že:

Ako vidíte, dôkaz sa vykonáva pre náhodné veličiny, ktoré majú spojité spektrum hodnôt a sú dané ich hustotou pravdepodobnosti. V ostatných prípadoch je myšlienka dokazovania podobná.

Kalmanov filter

Formulácia problému

Označme hodnotou, ktorú budeme merať, a potom filtrujme. Môžu to byť súradnice, rýchlosť, zrýchlenie, vlhkosť, zápach, teplota, tlak atď.
Začnime jednoduchým príkladom, ktorý nás zavedie k formulácii všeobecného problému. Predstavte si, že máme rádiom riadené auto, ktoré môže jazdiť len tam a späť. Keď sme poznali hmotnosť auta, tvar, povrch vozovky atď., Vypočítali sme, ako ovládací joystick ovplyvňuje rýchlosť pohybu.

Potom sa súradnice auta zmenia podľa zákona:

V reálnom živote nemôžeme pri našich výpočtoch brať do úvahy malé poruchy pôsobiace na auto (vietor, hrbole, kamienky na ceste), preto sa skutočná rýchlosť auta bude líšiť od vypočítanej. Na pravú stranu zapísanej rovnice sa pridá náhodná premenná:

Na písacom stroji máme nainštalovaný senzor GPS, ktorý sa pokúša zmerať skutočnú súradnicu auta a, samozrejme, nemôže ju presne zmerať, ale zmeria ju s chybou, čo je tiež náhodná premenná. V dôsledku toho dostávame zo senzora chybné údaje:

Úlohou je, aby ste poznali nesprávne hodnoty senzorov a našli dobrú aproximáciu pre skutočnú súradnicu auta.
Pri formulácii všeobecného problému môže byť za súradnicu zodpovedná čokoľvek (teplota, vlhkosť ...) a termín zodpovedný za ovládanie systému zvonku bude označený (v príklade so strojom). Rovnice pre čítanie súradníc a senzorov budú vyzerať takto:

Podrobne prediskutujme, čo vieme:

Stojí za zmienku, že úloha filtrovania nie je úlohou vyhladzovania. Nesnažíme sa vyhladiť údaje zo senzora, pokúšame sa získať najbližšiu hodnotu k skutočnej súradnici.

Kalmanov algoritmus

Budeme sa hádať indukciou. Predstavte si, že v treťom kroku sme už našli filtrovanú hodnotu zo senzora, ktorá dobre aproximuje skutočnú súradnicu systému. Nezabudnite, že poznáme rovnicu, ktorá riadi zmenu neznámej súradnice:

preto zatiaľ nedostávame hodnotu zo senzora, môžeme predpokladať, že v určitom kroku sa systém vyvíja podľa tohto zákona a senzor ukáže niečo blízke. Žiaľ, zatiaľ nemôžeme povedať nič presnejšie. Na druhej strane v kroku budeme mať na rukách nepresné čítanie senzora.
Kalmanov nápad je nasledujúci. Aby sme získali čo najlepšiu aproximáciu skutočnej súradnice, musíme si vybrať stred medzi čítaním nepresného senzora a predikciou toho, čo sme od neho očakávali. Odčítame zo senzora hmotnosť a hmotnosť zostane na predpokladanej hodnote:

Koeficient sa nazýva Kalmanov koeficient. Závisí to od kroku iterácie, takže by bolo správnejšie ho napísať, ale aby sme nepreplnili výpočtové vzorce, zatiaľ jeho index vynecháme.
Kalmanov koeficient musíme zvoliť tak, aby bola výsledná optimálna hodnota súradníc najbližšia k tej skutočnej. Ak napríklad vieme, že náš senzor je veľmi presný, potom budeme jeho čítaniu viac dôverovať a priradíme hodnote väčšiu váhu (blízku jednej). Ak je snímač naopak úplne nepresný, zameriame sa viac na teoreticky predpovedanú hodnotu.
Všeobecne platí, že na nájdenie presnej hodnoty Kalmanovho koeficientu stačí minimalizovať chybu:

Na prepísanie výrazu pre chybu použijeme rovnice (1) (tie s modrým pozadím v rámci):

Dôkaz

Teraz je načase diskutovať o tom, čo znamená výraz minimalizovať chyby? Koniec koncov, chyba, ako vidíme, je sama osebe náhodnou premennou a zakaždým nadobúda iné hodnoty. V skutočnosti neexistuje individuálny prístup k definovaniu toho, čo znamená, že chyba je minimálna. Rovnako ako v prípade rozptylu náhodnej premennej, keď sme sa pokúsili odhadnúť charakteristickú šírku jej šírenia, aj tu zvolíme najjednoduchšie kritérium pre výpočty. Minimalizujeme priemer štvorcovej chyby:

Vypíšeme posledný výraz:

Dôkaz

Zo skutočnosti, že všetky náhodné premenné zahrnuté vo výraze pre sú nezávislé, vyplýva, že všetky „krížové“ výrazy sa rovnajú nule:

Využili sme skutočnosť, že vzorec odchýlky potom vyzerá oveľa jednoduchšie :.

Tento výraz nadobúda minimálnu hodnotu, keď (derivát prirovnáme k nule):

Tu už píšeme výraz pre Kalmanov koeficient s krokovým indexom, čím zdôrazňujeme, že závisí od kroku iterácie.
Získanú optimálnu hodnotu dosadíme do výrazu, pre ktorý sme minimalizovali. Dostávame;

Naša úloha bola splnená. Na výpočet Kalmanovho koeficientu sme dostali iteračný vzorec.
Zhrňme svoje znalosti získané v jednom rámci:

Príklad

Kód Matlab

Zmazať všetko; N = 100% počet vzoriek a = 0,1% zrýchlenie sigmaPsi = 1 sigmaEta = 50; k = 1: N x = k x (1) = 0 z (1) = x (1) + normrnd (0, sigmaEta); pre t = 1: (N-1) x (t + 1) = x (t) + a * t + normrnd (0, sigmaPsi); z (t + 1) = x (t + 1) + normrnd (0, sigmaEta); koniec; % kalmanov filter xOpt (1) = z (1); eOpt (1) = sigmaEta; pre 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) koniec; plot (k, xOpt, k, z, k, x)

Analýza

Ak sledujeme, ako sa Kalmanov koeficient mení s krokom iterácie, môžeme ukázať, že sa vždy stabilizuje na určitú hodnotu. Napríklad, keď sa efek tívne chyby senzora a modelu navzájom týkajú ako desať k jednej, potom priebeh Kalmanovho koeficientu v závislosti od kroku iterácie vyzerá takto:

V nasledujúcom príklade budeme diskutovať o tom, ako nám to môže výrazne uľahčiť život.

Druhý príklad

V praxi sa často stáva, že o fyzickom modeli toho, čo filtrujeme, nevieme vôbec nič. Povedzme napríklad, že chcete filtrovať údaje z vášho obľúbeného akcelerometra. Vopred neviete, akým zákonom mienite otáčať akcelerometrom. Najviac informácií, ktoré môžete získať, je odchýlka chyby senzora. V takej ťažkej situácii môže byť všetka nevedomosť pohybového modelu presunutá do náhodnej premennej:

Úprimne povedané, takýto systém už nespĺňa podmienky, ktoré sme uložili náhodnej veličine, pretože teraz je tam skrytá všetka nám neznáma fyzika pohybu, a preto nemôžeme povedať, že v rôznych časoch sú chyby modelu nezávislé od navzájom a že ich priemerné hodnoty sú nulové. V tomto prípade vo všeobecnosti Kalmanova filtračná teória nie je použiteľná. Tejto skutočnosti však nebudeme venovať pozornosť, ale hlúpo použijeme všetky kolosálne vzorce a zvolíme koeficienty podľa oka, aby filtrované údaje vyzerali roztomilo.
Môžete však ísť iným, oveľa jednoduchším spôsobom. Ako sme videli vyššie, Kalmanov koeficient sa vždy stabilizuje smerom k hodnote s nárastom. Preto namiesto výberu koeficientov a nájdenia Kalmanovho koeficientu pomocou komplexných vzorcov môžeme tento koeficient považovať za vždy konštantný a vybrať iba túto konštantu. Tento predpoklad takmer nič nepokazí. Po prvé, už nezákonne používame Kalmanovu teóriu, a po druhé, Kalmanov koeficient sa rýchlo stabilizuje na konštantu. Vďaka tomu bude všetko veľmi jednoduché. Nepotrebujeme vôbec žiadne vzorce z Kalmanovej teórie, stačí nájsť prijateľnú hodnotu a vložiť ju do iteračného vzorca:

Nasledujúci graf zobrazuje údaje z fiktívneho senzora filtrovaného dvoma rôznymi spôsobmi. Za predpokladu, že nevieme nič o fyzike tohto javu. Prvý spôsob je úprimný, so všetkými vzorcami z Kalmanovej teórie. A druhý je zjednodušený, bez vzorcov.

Ako vidíme, metódy sú takmer rovnaké. Malý rozdiel je pozorovaný iba na začiatku, keď sa Kalmanov koeficient ešte nestabilizoval.

Diskusia

Ako sme videli, hlavnou myšlienkou Kalmanovho filtra je nájsť taký koeficient, ako je filtrovaná hodnota

v priemere by sa najmenej líšil od skutočnej hodnoty súradnice. Vidíme, že filtrovaná hodnota je lineárnou funkciou čítania senzora a predchádzajúcej filtrovanej hodnoty. A predchádzajúca filtrovaná hodnota je zase lineárnou funkciou čítania senzora a predchádzajúcej filtrovanej hodnoty. A tak ďalej, kým sa reťaz úplne nerozvinie. To znamená, že filtrovaná hodnota závisí od zo všetkých lineárne predchádzajúce hodnoty senzora:

Preto sa Kalmanov filter nazýva lineárny filter.
Je dokázané, že Kalmanov filter je najlepší zo všetkých lineárnych filtrov. Najlepšie v tom zmysle, že priemerný štvorec chyby filtra je minimálny.

Viacrozmerný prípad

Celú teóriu Kalmanovho filtra je možné zovšeobecniť na viacrozmerný prípad. Vzorce tam pôsobia o niečo desivejšie, ale samotná myšlienka ich odvodenia je rovnaká ako v jednorozmernom prípade. Môžete ich vidieť v tomto vynikajúcom článku: http://habrahabr.ru/post/140274/.
A v tomto nádhernom video analyzuje sa príklad ich použitia.

Wienerove filtre sú najvhodnejšie na spracovanie alebo na sekcie procesov vo všeobecnosti (blokové spracovanie). Na sekvenčné spracovanie je potrebný aktuálny odhad signálu v každom hodinovom cykle, pričom sa zohľadnia informácie vstupujúce do filtračného vstupu počas procesu pozorovania.

Pri Wienerovom filtrovaní by každá nová vzorka signálu vyžadovala prepočet všetkých hmotností filtra. V súčasnej dobe sú rozšírené adaptívne filtre, v ktorých sa prichádzajúce nové informácie používajú na priebežnú opravu predtým vykonaného hodnotenia signálu (sledovanie cieľa v radare, automatické riadiace systémy v riadení atď.). Zvlášť zaujímavé sú adaptívne filtre rekurzívneho typu známe ako Kalmanov filter.

Tieto filtre sú široko používané v riadiacich slučkách v automatických regulačných a riadiacich systémoch. Odtiaľ sa objavili, čo dokazuje taká špecifická terminológia, ktorá ich prácu charakterizovala ako stavový priestor.

Jednou z hlavných úloh, ktoré je potrebné vyriešiť v praxi neurónových výpočtov, je získať rýchle a spoľahlivé algoritmy na učenie neurónových sietí. V tomto ohľade môže byť užitočné použiť v spätnoväzbovej slučke lineárne filtre. Pretože tréningové algoritmy majú iteračný charakter, takýto filter musí byť sekvenčným rekurzívnym odhadom.

Problém s odhadom parametra

Jeden z problémov teórie štatistických rozhodnutí, ktoré majú veľký praktický význam, je problém odhadu stavových vektorov a parametrov systémov, ktorý je formulovaný nasledovne. Predpokladajme, že je potrebné odhadnúť hodnotu vektorového parametra $ X $, ktorá je pre priame meranie neprístupná. Namiesto toho sa meria ďalší parameter $ Z $ v závislosti od $ X $. Problémom odhadu je odpovedať na otázku: čo sa dá povedať o $ X $, vedieť o $ Z $. Vo všeobecnom prípade postup pre optimálne vyhodnotenie vektora $ X $ závisí od prijatého kritéria kvality hodnotenia.

Bayesovský prístup k problému odhadu parametrov napríklad vyžaduje úplné a priori informácie o pravdepodobnostných vlastnostiach odhadovaného parametra, čo je často nemožné. V týchto prípadoch sa uchýlia k metóde najmenších štvorcov (OLS), ktorá a priori vyžaduje oveľa menej informácií.

Uvažujme o použití OLS v prípade, keď vektor pozorovania $ Z $ súvisí s vektorom odhadu parametrov $ X $ lineárnym modelom a v pozorovaní je interferencia $ V $, ktorá nie je v korelácii s odhadovaným parametrom :

$ Z = HX + V $, (1)

kde $ H $ je transformačná matica opisujúca vzťah medzi pozorovanými veličinami a odhadovanými parametrami.

Odhad $ X $, ktorý minimalizuje druhú mocninu chyby, je napísaný nasledovne:

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

Nech je porucha $ V $ nekorelovaná, v tomto prípade je matica $ R_V $ iba maticou identity a rovnica pre odhad je jednoduchšia:

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

Písanie v maticovej forme ušetrí veľa papiera, ale pre niekoho to môže byť neobvyklé. Nasledujúci príklad, prevzatý z monografie Y. M. Korshunova „Matematické základy kybernetiky“, to všetko ilustruje.
K dispozícii je nasledujúci elektrický obvod:

Pozorované hodnoty v tomto prípade sú hodnoty zariadení $ A_1 = 1 A, A_2 = 2 A, V = 20 B $.

Okrem toho je známy odpor $ R = 5 $ Ohm. Hodnoty prúdov $ I_1 $ a $ I_2 $ je potrebné odhadnúť najlepším spôsobom z hľadiska kritéria minimálneho priemerného štvorca chyby. Najdôležitejšou vecou je, že existuje určitý vzťah medzi pozorovanými hodnotami (hodnoty prístrojov) a odhadovanými parametrami. A tieto informácie sa prinášajú zvonku.

V tomto prípade ide o Kirchhoffove zákony, v prípade filtrovania (o ktorom bude reč ďalej) - autoregresívny model časového radu, ktorý predpokladá závislosť aktuálnej hodnoty od predošlých.

Znalosť Kirchhoffových zákonov, ktorá nemá nič spoločné s teóriou štatistických rozhodnutí, umožňuje vytvoriť súvislosť medzi pozorovanými hodnotami a odhadovanými parametrami (kto študoval elektrotechniku ​​- môžu skontrolovať, zvyšok bude mať vziať ich za slovo):

$$ 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 $$

Je to rovnaké vo vektorovej forme:

$$ \ 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) $$

Alebo $ Z = HX + V $, kde

$$ 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) $$

Ak vezmeme do úvahy vzájomne nekorelované hodnoty interferencie, zistíme odhad I 1 a I 2 metódou najmenších štvorcov podľa vzorca 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 (оц) = \ 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) $;

Takže $ I_1 = 5/6 = 0,833 A $; $ I_2 = 9/6 = 1,5 A $.

Úloha filtrácie

Na rozdiel od problému odhadovania parametrov, ktoré majú pevné hodnoty, pri probléme filtrovania je potrebné odhadnúť procesy, to znamená nájsť aktuálne odhady časovo premenného signálu skresleného šumom, a preto neprístupného pre meranie. Vo všeobecnosti typ filtračných algoritmov závisí od štatistických vlastností signálu a šumu.

Budeme predpokladať, že užitočný signál je pomaly sa meniacou funkciou času a interferencia je nekorelovaný šum. Použijeme metódu najmenších štvorcov, opäť z dôvodu nedostatku a priori informácií o pravdepodobnostných charakteristikách signálu a rušenia.

Najprv získame odhad aktuálnej hodnoty $ x_n $ na základe dostupných $ k $ posledných hodnôt časového radu $ z_n, z_ (n-1), z_ (n-2) \ dots z_ (n - (k-1)) $. Model pozorovania je rovnaký ako v prípade problému s odhadom parametra:

Je zrejmé, že $ Z $ je stĺpcový vektor pozostávajúci z pozorovaných hodnôt časového radu $ z_n, z_ (n-1), z_ (n-2) \ dots z_ (n- (k-1)) $, $ V $-vektorový stĺpcový hluk $ \ xi _n, \ xi _ (n-1), \ xi_ (n-2) \ dots \ xi_ (n- (k-1)) $, skresľujúci pravda signál. Čo znamenajú symboly $ H $ a $ X $? O čom napríklad môže byť stĺpcový vektor $ X $, ak stačí poskytnúť odhad aktuálnej hodnoty časového radu? A čo sa myslí transformačnou maticou $ H $, nie je vôbec jasné.

Na všetky tieto otázky je možné odpovedať iba vtedy, ak sa vezme do úvahy koncept modelu generovania signálu. To znamená, že je potrebný nejaký model pôvodného signálu. Je to pochopiteľné, pri absencii a priori informácií o pravdepodobnostných charakteristikách signálu a rušenia zostáva len urobiť predpoklady. Môžete to nazvať veštením kávy, ale odborníci uprednostňujú inú terminológiu. Na ich „féne“ sa to nazýva parametrický model.

V tomto prípade sa odhadujú parametre tohto konkrétneho modelu. Pri výbere vhodného modelu generovania signálu pamätajte na to, že akúkoľvek analytickú funkciu je možné rozšíriť o sériu Taylor. Úžasnou vlastnosťou Taylorovho radu je, že tvar funkcie v akejkoľvek konečnej vzdialenosti $ t $ od bodu $ x = a $ je jednoznačne určený správaním funkcie v nekonečne malom susedstve bodu $ x = a $ (hovoríme o jeho derivátoch prvého a vyššieho rádu).

Existencia Taylorovho radu teda znamená, že analytická funkcia má vnútornú štruktúru s veľmi silnou väzbou. Ak sa napríklad obmedzíme na troch členov série Taylor, model generovania signálu bude vyzerať takto:

$ 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) $$

To znamená, že vzorec 4 pre dané poradie polynómu (v príklade sa rovná 2) vytvára spojenie medzi $ n $ -tou hodnotou signálu v časovom slede a $ (ni) $ - th. Vektor odhadovaného stavu v tomto prípade obsahuje okrem skutočnej odhadovanej hodnoty aj prvú a druhú deriváciu signálu.

V teórii automatického riadenia by sa takýto filter nazýval astatistický filter 2. rádu. Transformačná matica $ H $ pre tento prípad (odhad sa vykonáva na základe súčasných a $ k-1 $ predchádzajúcich vzoriek) vyzerá takto:

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

Všetky tieto čísla sú získané z Taylorovho radu za predpokladu, že časový interval medzi susednými pozorovanými hodnotami je konštantný a rovná sa 1.

Úloha filtrovania sa teda podľa našich predpokladov obmedzila na úlohu odhadovania parametrov; v tomto prípade sa odhadujú parametre prijatého modelu generovania signálu. A odhad hodnôt stavového vektora $ X $ sa vykonáva podľa rovnakého vzorca 3:

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

V podstate sme implementovali proces parametrického odhadu na základe autoregresného modelu procesu generovania signálu.

Vzorec 3 je ľahko implementovateľný programovo, na to potrebujete vyplniť maticu $ H $ a vektorový stĺpec pozorovaní $ Z $. Tieto filtre sa nazývajú filtre konečnej pamäte, pretože používajú posledné pozorovania $ k $ na získanie aktuálneho odhadu $ X_ (nоts) $. Pri každých nových pozorovacích hodinách sa k aktuálnemu súboru pozorovaní pridajú nové a staré sa zahodia. Tento proces získavania známok sa nazýva posuvné okno.

Rastúce pamäťové filtre

Filtre s konečnou pamäťou majú hlavnú nevýhodu, že po každom novom pozorovaní je potrebné vykonať úplný prepočet nad všetkými údajmi uloženými v pamäti. Výpočet odhadov je navyše možné začať až po zozbieraní výsledkov prvých pozorovaní $ k $. To znamená, že tieto filtre majú dlhý prechodný čas.

Na boj proti tejto nevýhode je potrebné prepnúť z filtra s trvalou pamäťou na filter s rastúca pamäť... V takom filtri sa počet pozorovaných hodnôt, pre ktoré sa odhad robí, musí zhodovať s počtom n súčasného pozorovania. To umožňuje získať odhady vychádzajúce z počtu pozorovaní rovnajúceho sa počtu zložiek odhadovaného vektora $ X $. A to je určené poradím prijatého modelu, to znamená, koľko členov z Taylorovho radu je v modeli použitých.

Súčasne s rastúcim n sa zlepšujú vyhladzovacie vlastnosti filtra, to znamená, že sa zvyšuje presnosť odhadov. Priama implementácia tohto prístupu je však spojená s nárastom výpočtových nákladov. Rastúce pamäťové filtre sú preto implementované ako opakujúci.

Faktom je, že v čase n už máme odhad $ X _ ((n-1) оц) $, ktorý obsahuje informácie o všetkých predchádzajúcich pozorovaniach $ z_n, z_ (n-1), z_ (n-2) \ bodky z_ (n- (k-1)) $. Odhad $ X_ (nоц) $ sa získa z nasledujúceho pozorovania $ z_n $ pomocou informácií uložených v odhade $ X _ ((n-1)) (\ mbox (оц)) $. Tento postup sa nazýva opakované filtrovanie a pozostáva z nasledujúcich:

  • podľa odhadu $ X _ ((n-1)) (\ mbox (оц)) $ predpovedá odhad $ X_n $ podľa vzorca 4 s $ i = 1 $: $ X _ (\ mbox (notsapriori)) = F_1X _ ((n-1) sc) $. Toto je a priori odhad;
  • podľa výsledkov súčasného pozorovania $ z_n $ je tento a priori odhad prevedený na pravdivý, to znamená a posteriori;
  • tento postup sa opakuje v každom kroku, začínajúc od $ r + 1 $, kde $ r $ je poradie filtra.

Konečný vzorec pre opakované filtrovanie vyzerá takto:

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

kde pre náš filter druhého rádu:

Rastúci pamäťový filter, ktorý funguje podľa vzorca 6, je špeciálnym prípadom filtračného algoritmu známeho ako Kalmanov filter.

Pri praktickej implementácii tohto vzorca je potrebné mať na pamäti, že a priori odhad, ktorý je v ňom zahrnutý, je určený vzorcom 4 a hodnota $ h_0 X _ (\ mbox (notspriori)) $ je prvou zložkou vektora $ X _ (\ mbox (notspriori)) $.

Rastúci pamäťový filter má jednu dôležitú vlastnosť. Ak sa pozriete na vzorec 6, konečné skóre je súčet predpovedaného vektora skóre a opravného výrazu. Táto oprava je veľká pre malé $ n $ a klesá s rastúcim $ n $, pričom má tendenciu k nule ako $ n \ rightarrow \ infty $. To znamená, že s nárastom n rastú vyhladzovacie vlastnosti filtra a model, ktorý je v ňom obsiahnutý, začína dominovať. Skutočný signál však môže zodpovedať modelu iba v určitých oblastiach, preto sa presnosť predpovedí zhoršuje.

Aby sa tomu zabránilo, od približne $ n $ je uložený zákaz ďalšieho skrátenia opravného termínu. To je ekvivalentné zmene šírky pásma filtra, to znamená, že pre malé n je filter širší (menej zotrvačný), pre veľké n sa stáva viac zotrvačný.

Porovnajte obrázok 1 a obrázok 2. Na prvom obrázku má filter veľkú pamäť, pričom sa dobre vyhladzuje, ale vzhľadom na svoje úzke pásmo odhadovaná trajektória zaostáva za skutočnou. Na druhom obrázku je pamäť filtra menšia, horšie sa vyhladzuje, ale lepšie sleduje skutočnú trajektóriu.

Literatúra

  1. YM Korshunov „Matematické základy kybernetiky“
  2. A. V. Balakrishnan „Kalmanova teória filtrácie“
  3. VNFomin „Opakovaný odhad a adaptívne filtrovanie“
  4. C.F.N. Cowan, P.M. Grant „Adaptívne filtre“

Random Forest je jedným z mojich obľúbených algoritmov na dolovanie údajov. Po prvé, je neuveriteľne univerzálny a môže byť použitý na riešenie regresných aj klasifikačných problémov. Vyhľadajte anomálie a vyberte prediktory. Za druhé, toto je algoritmus, ktorý je skutočne ťažké nesprávne použiť. Jednoducho preto, že na rozdiel od iných algoritmov má málo konfigurovateľných parametrov. V jadre je tiež prekvapivo jednoduchý. A zároveň je pozoruhodný svojou presnosťou.

Aká je myšlienka takého úžasného algoritmu? Myšlienka je jednoduchá: povedzme, že máme nejaký veľmi slabý algoritmus, povedzme. Ak urobíme veľa rôznych modelov pomocou tohto slabého algoritmu a spriemerujeme výsledok ich predpovedí, konečný výsledok bude oveľa lepší. Ide o takzvaný súborný tréning v akcii. Algoritmus Random Forest sa preto nazýva „Random Forest“, pre získané údaje vytvára mnoho rozhodovacích stromov a potom priemeruje výsledok ich predpovedí. Dôležitým bodom je prvok náhodnosti pri vytváraní každého stromu. Koniec koncov je zrejmé, že ak vytvoríme veľa rovnakých stromov, potom výsledok ich priemerovania bude mať presnosť jedného stromu.

Ako pracuje? Predpokladajme, že máme nejaké vstupné údaje. Každý stĺpec zodpovedá nejakému parametru, každý riadok zodpovedá nejakému dátovému prvku.

Z celého súboru údajov môžeme náhodne vybrať určitý počet stĺpcov a riadkov a na základe nich zostaviť rozhodovací strom.


Štvrtok 10. mája 2012

Štvrtok 12. januára 2012


To je všetko. 17-hodinový let sa skončil, Rusko je v zámorí. A cez okno útulného 2-izbového bytu San Francisco sa na nás pozerá slávne Silicon Valley, Kalifornia, USA. Áno, to je ten pravý dôvod, prečo som v poslednej dobe prakticky nepísal. Presťahovali sme sa.

Všetko sa to začalo v apríli 2011, keď som robil telefonický rozhovor v Zynga. Potom to všetko vyzeralo ako nejaká hra, ktorá nemá nič spoločné s realitou, a ja som si ani nevedel predstaviť, čo to bude mať za následok. V júni 2011 prišiel Zynga do Moskvy a uskutočnil sériu pohovorov, zvážil asi 60 uchádzačov, ktorí prešli telefonickými pohovormi, a asi 15 z nich bolo vybraných (neviem presné číslo, niekto si to neskôr rozmyslel, niekto okamžite odmietol ). Rozhovor sa ukázal byť prekvapivo jednoduchý. Neboli testované žiadne programátorské úlohy, žiadne záludné otázky o tvare poklopov, väčšinou schopnosť chatovať. A znalosti boli podľa mňa hodnotené len povrchne.

A potom začal trik. Najprv sme čakali na výsledky, potom na ponuku, potom na schválenie LCA, potom na schválenie petície za vízum, potom na dokumenty z USA, potom na rad na ambasáde, potom na dodatočnú kontrolu a potom na víza. Miestami sa mi zdalo, že som pripravený odhodiť všetko a dať gól. Chvíľami som pochyboval, či túto Ameriku potrebujeme, koniec koncov, nie je to zlé ani v Rusku. Celý proces trval asi šesť mesiacov, v dôsledku toho sme v polovici decembra dostali víza a začali sa pripravovať na odchod.

Pondelok bol môj prvý deň v práci na novom mieste. Kancelária má všetky podmienky nielen na prácu, ale aj na bývanie. Raňajky, obedy a večere od vlastných šéfkuchárov, množstvo rozmanitých jedál preplnených všade, posilňovňa, masáž a dokonca aj kaderníctvo. To všetko je pre zamestnancov úplne zadarmo. Mnoho ľudí sa do práce dostane na bicykli a je tu niekoľko miestností na odkladanie vozidiel. Vo všeobecnosti som sa s ničím takým v Rusku nestretol. Všetko má však svoju cenu, hneď nás upozornili, že budeme musieť veľa pracovať. Čo je „veľa“, podľa ich štandardov, mi nie je celkom jasné.

Dúfam však, že napriek množstvu práce sa mi v dohľadnej budúcnosti podarí obnoviť blogovanie a možno vám poviem niečo o americkom živote a práci programátora v Amerike. Počkaj a uvidíš. Zatiaľ prajem všetkým šťastný nový rok a Vianoce a čoskoro sa uvidíme!


Pre príklad použitia vytlačíme dividendový výnos ruských spoločností. Ako základnú cenu používame záverečnú cenu akcie v deň zatvorenia registra. Z nejakého dôvodu tieto informácie nie sú na mieste trojky, a sú oveľa zaujímavejšie ako absolútne hodnoty dividend.
Pozor! Spustenie kódu trvá dlho, pretože Pri každej propagácii musíte podať požiadavku na servery finam a získať ich hodnotu.

Výsledok<- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0) (skúste ((úvodzovky<- 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


Podobne môžete vytvárať štatistiky za posledné roky.

Kalmanov filter je pravdepodobne najobľúbenejším filtračným algoritmom používaným v mnohých oblastiach vedy a techniky. Vďaka svojej jednoduchosti a účinnosti sa nachádza v prijímačoch GPS, procesoroch snímačov, pri implementácii riadiacich systémov atď.

Na internete je veľa článkov a kníh o Kalmanovom filtri (väčšinou v angličtine), ale tieto články majú dosť veľký vstupný prah, existuje veľa vágnych miest, aj keď v skutočnosti je to veľmi jasný a transparentný algoritmus. Pokúsim sa vám o tom povedať jednoduchým jazykom s postupným zvyšovaním zložitosti.

Načo to je?

Akékoľvek meracie zariadenie má nejakú chybu, môže byť ovplyvnené veľkým počtom vonkajších a vnútorných vplyvov, čo vedie k tomu, že informácie z neho sú hlučné. Čím sú údaje hlučnejšie, tým je spracovanie takýchto informácií náročnejšie.

Filter je algoritmus spracovania údajov, ktorý odstraňuje hluk a nepotrebné informácie. V Kalmanovom filtri je možné nastaviť a priori informácie o povahe systému, vzťahu premenných a na základe toho zostaviť presnejší odhad, ale aj v tom najjednoduchšom prípade (bez zadávania apriori informácií) ) poskytuje vynikajúce výsledky.

Uvažujme o najjednoduchšom príklade - predpokladajme, že musíme kontrolovať hladinu paliva v nádrži. Za týmto účelom je do nádrže nainštalovaný kapacitný snímač, ktorý sa veľmi ľahko udržiava, ale má určité nevýhody - napríklad závislosť od plneného paliva (dielektrická konštanta paliva závisí od mnohých faktorov, napr. na teplotu), veľký vplyv „hrboľatosti“ v nádrži. Výsledkom je, že informácie z neho predstavujú typickú „pílu“ so slušnou amplitúdou. Tieto typy senzorov sú často inštalované na ťažkých ťažobných zariadeniach (nenechajte sa zmiasť objemom nádrže):

Kalmanov filter

Trochu odbočíme a zoznámime sa so samotným algoritmom. Kalmanov filter používa na vytvorenie odhadu optimálneho stavu dynamický model systému (napríklad fyzikálny zákon pohybu), známe riadiace akcie a mnoho po sebe nasledujúcich meraní. Algoritmus pozostáva z dvoch opakujúcich sa fáz: predikcie a korekcie. Na začiatku sa vypočíta predikcia stavu v nasledujúcom časovom okamihu (berúc do úvahy nepresnosť ich merania). V druhom prípade nové informácie zo senzora opravia predpokladanú hodnotu (berúc do úvahy nepresnosť a hlučnosť týchto informácií):

Rovnice sú uvedené v maticovej forme, ak nepoznáte lineárnu algebru - to je v poriadku, potom pre prípad s jednou premennou bude existovať zjednodušená verzia bez matíc. V prípade jednej premennej matice degenerujú do skalárnych hodnôt.

Najprv pochopme notáciu: dolný index označuje moment v čase: k - aktuálny, (k -1) - predchádzajúci, znamienko mínus v hornom indexe znamená, že je predpovedal stredná hodnota.

Popisy premenných sú uvedené na nasledujúcich obrázkoch:

Je možné dlho a únavne popisovať, čo všetky tieto záhadné prechodové matice znamenajú, ale podľa mňa je lepšie pokúsiť sa použiť algoritmus pomocou skutočného príkladu - aby abstraktné hodnoty získali skutočný význam.

Skúsme to v akcii

Vráťme sa k príkladu so snímačom hladiny paliva, pretože stav systému je reprezentovaný jednou premennou (objem paliva v nádrži), matrice degenerujú do bežných rovníc:
Definovanie procesného modelu
Aby bolo možné použiť filter, je potrebné určiť matice / hodnoty premenných, ktoré určujú dynamiku systému a rozmery F, B a H:

F- premenná opisujúca dynamiku systému v prípade paliva - môže to byť koeficient, ktorý určuje spotrebu paliva na voľnobeh počas doby vzorkovania (čas medzi krokmi algoritmu). Okrem spotreby paliva však existujú aj tankovanie ... preto pre jednoduchosť vezmeme túto premennú rovnú 1 (to znamená, naznačujeme, že predpokladaná hodnota sa bude rovnať predchádzajúcemu stavu).

B- premenná určujúca aplikáciu kontrolnej akcie. Ak by sme mali ďalšie informácie o otáčkach motora alebo o stupni zošliapnutia plynového pedála, potom by tento parameter určoval, ako sa spotreba paliva zmení počas doby vzorkovania. Pretože v našom modeli nie sú žiadne kontrolné akcie (nie sú o nich žiadne informácie), potom vezmeme B = 0.

H- matica, ktorá určuje vzťah medzi meraniami a stavom systému, zatiaľ bez vysvetlenia vezmeme túto premennú rovnajúcu sa 1.

Definovanie vlastností vyhladzovania
R.- chybu merania je možné určiť testovaním meracích prístrojov a určením chyby ich merania.

Q- Stanovenie procesného hluku je náročnejšia úloha, pretože je potrebné určiť odchýlku procesu, čo nie je vždy možné. V každom prípade môžete tento parameter zvoliť tak, aby poskytoval požadovanú úroveň filtrácie.

Implementácia v kóde
Aby sa rozptýlila zostávajúca nezrozumiteľnosť, implementujeme v C # zjednodušený algoritmus (bez matíc a riadiacej akcie):

trieda KalmanFilterSimple1D
{
public double X0 (get; private set;) // predpovedaný stav
public double P0 (get; private set;) // predpovedana kovariancia

Verejné dvojité F (get; súkromná množina;) // faktor skutočnej hodnoty k predchádzajúcej skutočnej hodnote
public double Q (get; private set;) // meranie hluku
public double H (get; private set;) // faktor meranej hodnoty na skutocnu hodnotu
public double R (get; private set;) // hluk prostredia

Verejný dvojitý stav (get; private set;)
public double Covariance (get; private set;)

Verejný KalmanFilterSimple1D (double q, double r, double f = 1, double h = 1)
{
Q = q;
R = r;
F = f;
H = h;
}

Verejný neplatný SetState (dvojitý stav, dvojitá kovariancia)
{
Štát = štát;
Kovariancia = kovariancia;
}

Verejná prázdnota je správna (dvojité údaje)
{
// aktualizácia času - predpoveď
X0 = F * Stav;
P0 = F * kovariancia * F + Q;

// aktualizácia merania - oprava
var K = H * P0 / (H * P0 * H + R);
Stav = X0 + K * (údaje - H * X0);
Kovariancia = (1 - K * H) * F;
}
}

// Aplikácia ...

Var fuelData = GetData ();
var filtrované = nový Zoznam ();

Var kalman = nový KalmanFilterSimple1D (f: 1, h: 1, q: 2, r: 15); // nastavte F, H, Q a R.
kalman.SetState (fuelData, 0,1); // Nastavte počiatočné hodnoty pre State a Covariance
foreach (var d in fuelData)
{
kalman.Correct (d); // Aplikujte algoritmus

Filtered.Add (kalman.State); // Uloženie aktuálneho stavu
}

Výsledok filtrovania pomocou týchto parametrov je znázornený na obrázku (na úpravu stupňa vyhladenia - môžete zmeniť parametre Q a R):

Najzaujímavejšou časťou článku zostáva - aplikácia Kalmanovho filtra pre niekoľko premenných, nastavenie vzťahu medzi nimi a automatický výstup hodnôt pre nepozorovateľné premenné. Pokúsim sa v téme pokračovať, hneď ako bude čas.

Dúfam, že popis nebol príliš únavný a zložitý, ak máte akékoľvek otázky alebo objasnenia - vitajte v komentároch)

V procese automatizácie technologických procesov na riadenie mechanizmov a jednotiek sa musí človek zaoberať meraním rôznych fyzikálnych veličín. Môže to byť tlak a prietok kvapaliny alebo plynu, rýchlosť, teplota a oveľa viac. Meranie fyzikálnych veličín sa vykonáva pomocou analógových senzorov. Analógový signál je dátový signál, v ktorom je každý z reprezentujúcich parametrov popísaný funkciou času a súvislej sady možných hodnôt. Z kontinuity hodnotového priestoru vyplýva, že akékoľvek rušenie zavedené do signálu je na nerozoznanie od požadovaného signálu. Preto bude na analógový vstup riadiaceho zariadenia odoslaná nesprávna hodnota požadovanej fyzickej veličiny. Preto je potrebné filtrovať signál prichádzajúci zo snímača.

Jedným z efektívnych filtračných algoritmov je Kalmanov filter. Kalmanov filter je rekurzívny filter, ktorý odhaduje vektor stavu dynamického systému pomocou série neúplných a hlučných meraní. Kalmanov filter používa na vytvorenie odhadu optimálneho stavu dynamický model systému (napríklad fyzikálny zákon pohybu), riadiace akcie a mnoho sekvenčných meraní. Algoritmus pozostáva z dvoch opakujúcich sa fáz: predikcie a korekcie. V prvej fáze sa vypočíta predikcia stavu v nasledujúcom časovom okamihu (s prihliadnutím na nepresnosť ich merania). V druhom prípade nové informácie zo senzora opravia predpokladanú hodnotu (berúc do úvahy aj nepresnosť a hlučnosť týchto informácií).

Vo fáze predikcie sa stane nasledovné:

  1. Predikcia stavu systému:

kde je predpoveď stavu systému v aktuálnom čase; - matica prechodu medzi stavmi (dynamický model systému); - predikcia stavu systému v predchádzajúcom časovom okamihu; - matica aplikácie kontrolnej akcie; - riadiaca činnosť v predchádzajúcom časovom okamihu.

  1. Predikcia kovariancie chyby:

kde je predikcia chyby; - chyba v predchádzajúcom časovom okamihu; - kovariancia šumu procesu.

Vo fáze nastavenia dochádza k nasledujúcemu:

  1. Výpočet Kalmanovho zisku:

kde je zisk Kalmana; - matica meraní ukazujúca vzťah medzi meraniami a stavmi; - kovariancia šumu merania.

kde je meranie v aktuálnom čase.

  1. Aktualizácia chyby kovariancie:

kde je matica identity.

Ak je stav systému popísaný jednou premennou, potom = 1 a matice degenerujú do bežných rovníc.

Aby sa jasne preukázala účinnosť Kalmanovho filtra, bol vykonaný experiment s objemovým snímačom AVR PIC KY-037, ktorý je pripojený k mikrokontroléru Arduino Uno. Obrázok 1 zobrazuje graf hodnôt snímačov bez filtra (riadok 1). Chaotické výkyvy na výstupe senzora naznačujú prítomnosť šumu.

Obrázok 1. Graf hodnôt senzorov bez filtra

Na použitie filtra je potrebné definovať hodnoty premenných a tie, ktoré určujú dynamiku systému a rozmery. Vezmime a rovná sa 1 a rovná sa 0, pretože v systéme nie sú žiadne riadiace akcie. Na určenie vyhladzovacích vlastností filtra je potrebné vypočítať hodnotu premennej a tiež vybrať hodnotu parametra.

Premennú vypočítame v programe Microsoft Excel 2010. Na to je potrebné vypočítať štandardnú odchýlku pre vzorku nameraných hodnôt zo senzora. = 0,62. je zvolený v závislosti od požadovanej úrovne filtrácie, berieme = 0,001. Na obrázku 2 druhý riadok zobrazuje graf hodnôt senzora s nasadeným filtrom.

Obrázok 2. Graf hodnôt senzorov pomocou Kalmanovho filtra

Z grafu môžeme usúdiť, že filter sa vyrovnal s úlohou filtrácie šumu, pretože v ustálenom stave sú kolísania hodnôt snímačov, ktoré prešli filtráciou, nevýznamné.

Kalmanov filter má však značnú nevýhodu. Ak sa nameraná hodnota zo snímača môže rýchlo meniť, hodnoty filtrovaného snímača sa nezmenia tak rýchlo ako nameraná hodnota. Obrázok 3 ukazuje reakciu Kalmanovho filtra na skok v nameranej hodnote.

Obrázok 3. Reakcia Kalmanovho filtra na skok v nameranej hodnote

Odozva filtra na skok v nameranej hodnote bola zistená ako zanedbateľná. Ak sa nameraná hodnota výrazne zmení a potom sa nevráti na predchádzajúcu hodnotu, potom budú hodnoty filtrovaných snímačov zodpovedať skutočnej hodnote nameranej hodnoty až po významnom časovom období, čo je pre systémy automatického riadenia, ktoré vyžadujú vysoký výkon, neprijateľné .

Z uskutočneného experimentu možno vyvodiť záver, že Kalmanov filter je vhodné použiť na filtráciu údajov zo senzorov v nízkootáčkových systémoch.

Bibliografia:

  1. GOST 17657-79. Prenos dát. Pojmy a definície. - Moskva: Vydavateľstvo štandardov, 2005. - 2 s.
  2. Kalmanov filter // Wikipedia. ... Aktualizovaný dátum: 26.04.2017. URL: http://ru.wikipedia.org/?oldid=85061599 (dátum prístupu: 21. 5. 2017).