Pomocí Kalmanova filtru lze filtrovat hodnoty získané ze senzorů. Kalmanovo filtrování Optimální Kalmanův filtr

Na internetu, včetně Habrého, najdete spoustu informací o Kalmanově filtru. Je ale těžké najít snadno stravitelné odvození samotných vzorců. Bez závěru je celá tato věda vnímána jako druh šamanismu, vzorce vypadají jako anonymní sada symbolů, a co je nejdůležitější, mnoho jednoduchých prohlášení, která leží na povrchu teorie, je mimo chápání. Cílem tohoto článku bude mluvit o tomto filtru v co nejpřístupnějším jazyce.
Kalmanův filtr je účinný nástroj pro filtrování dat. Jeho hlavním principem je, že při filtrování se používají informace o fyzice samotného jevu. Pokud například filtrujete data z tachometru automobilu, setrvačnost vozu vám dává právo vnímat příliš rychlé skoky v rychlosti jako chybu měření. Kalmanův filtr je zajímavý, protože v jistém smyslu je to nejlepší filtr. Níže si podrobněji probereme, co přesně slova „nejlepší“ znamenají. Na konci článku ukážu, že v mnoha případech lze vzorce zjednodušit natolik, že z nich nezůstane téměř nic.

Vzdělávací program

Než se seznámím s Kalmanovým filtrem, navrhuji připomenout některé jednoduché definice a fakta z teorie pravděpodobnosti.

Náhodná hodnota

Když říkají, že je dána náhodná proměnná, znamená to, že tato veličina může nabývat náhodných hodnot. Chce to různé hodnoty s různou pravděpodobností. Když hodíte řekněme kostkou, vypadne diskrétní sada hodnot :. Pokud jde například o rychlost putující částice, pak se člověk zjevně musí vypořádat s nepřetržitým souborem hodnot. Hodnoty „vypadlých“ náhodné proměnné budeme označovat, ale někdy použijeme stejné písmeno, které používáme k označení náhodné proměnné :.
V případě spojitého souboru hodnot je náhodná proměnná charakterizována hustotou pravděpodobnosti, která nám diktuje, že pravděpodobnost, že náhodná proměnná „vypadne“ v malém sousedství bodu s délkou, se rovná. Jak vidíme z obrázku, tato pravděpodobnost se rovná ploše stínovaného obdélníku pod grafem:

Poměrně často v životě jsou náhodné proměnné gaussovské, když je hustota pravděpodobnosti stejná.

Vidíme, že funkce má tvar zvonu se středem v bodě as charakteristickou šířkou řádu.
Jelikož mluvíme o Gaussově distribuci, byl by hřích nezmínit, odkud pochází. Stejně jako jsou čísla v matematice pevně stanovena a vyskytují se na nejvíce neočekávaných místech, tak Gaussova distribuce zapustila hluboké kořeny v teorii pravděpodobnosti. Jedno pozoruhodné tvrzení, které částečně vysvětluje Gaussovu všudypřítomnost, je následující:
Nechť existuje náhodná proměnná s libovolným rozdělením (ve skutečnosti existují určitá omezení této svévole, ale nejsou vůbec přísná). Provedeme experimenty a vypočítáme součet „vypadnutých“ hodnot náhodné veličiny. Udělejme mnoho z těchto experimentů. Je jasné, že pokaždé obdržíme jinou hodnotu částky. Jinými slovy, tento součet je sám náhodnou proměnnou s vlastním určitým distribučním zákonem. Ukazuje se, že u dostatečně velkých má distribuční zákon této částky tendenci ke gaussovskému rozdělení (mimochodem, charakteristická šířka „zvonu“ roste podobně). Přečtěte si více na Wikipedii: Central Limit Theorem. V životě velmi často existují veličiny, které jsou tvořeny velkým počtem stejně rozložených nezávislých náhodných proměnných, a proto jsou rozděleny podle Gaussiana.

Znamenat

Průměrná hodnota náhodné proměnné je to, co dostaneme v limitu, pokud provádíme mnoho experimentů, a vypočítáme aritmetický průměr vypuštěných hodnot. Průměr je označován různými způsoby: matematici rádi označují (očekávání) a zahraniční matematici (očekávání). Fyzici procházejí nebo. Označíme zahraničním způsobem :.
Například u Gaussova rozdělení je průměr.

Rozptyl

V případě Gaussova rozdělení jasně vidíme, že náhodná proměnná upřednostňuje vypadnutí v nějakém sousedství své střední hodnoty. Jak je patrné z grafu, charakteristický rozptyl hodnot řádu. Jak můžeme odhadnout toto šíření hodnot pro libovolnou náhodnou proměnnou, pokud známe její rozdělení. Můžete nakreslit graf jeho hustoty pravděpodobnosti a odhadnout charakteristickou šířku okem. Raději ale sledujeme algebraickou cestu. Průměrnou délku odchylky (modul) najdete od průměru :. Tato hodnota bude dobrým odhadem typického rozpětí hodnot. Ale ty a já velmi dobře víme, že používání modulů ve vzorcích je jedna bolest hlavy, takže tento vzorec se používá k odhadu charakteristického rozpětí jen zřídka.
Jednodušší způsob (jednoduchý z hlediska výpočtů) je najít. Tato hodnota se nazývá rozptyl a je často označována jako. Kořen rozptylu se nazývá standardní odchylka. Standardní odchylka je dobrým odhadem rozpětí náhodné veličiny.
Například pro Gaussovu distribuci můžeme vypočítat, že výše definovaný rozptyl je přesně stejný, což znamená, že standardní odchylka je stejná, což velmi dobře odpovídá naší geometrické intuici.
Ve skutečnosti se zde skrývá malý podvod. Faktem je, že v definici Gaussova rozdělení pod exponentem je výraz. Tyto dva ve jmenovateli stojí přesně tak, že standardní odchylka by se rovnala koeficientu. To znamená, že samotný Gaussův distribuční vzorec je napsán ve formě speciálně naostřené, takže budeme uvažovat jeho standardní odchylku.

Nezávislé náhodné proměnné

Náhodné proměnné jsou závislé a ne. Představte si, že házíte jehlou do letadla a zapisujete souřadnice obou konců. Tyto dvě souřadnice jsou závislé, souvisí s podmínkou, že vzdálenost mezi nimi je vždy stejná jako délka jehly, přestože jde o náhodné hodnoty.
Náhodné proměnné jsou nezávislé, pokud je výsledek první z nich zcela nezávislý na výsledku druhé z nich. Pokud jsou náhodné proměnné nezávislé, pak se průměrná hodnota jejich součinu rovná součinu jejich průměrných hodnot:

Důkaz

Například mít modré oči a absolvovat střední školu se zlatou medailí jsou nezávislé náhodné veličiny. Pokud existují modrookí, řekněme, zlatí medailisté, pak modrookí medailisté. Tento příklad nám říká, že pokud jsou náhodné proměnné a jsou dány jejich hustotou pravděpodobnosti a pak nezávislost těchto hodnot je vyjádřena ve skutečnosti, že hustota pravděpodobnosti (první hodnota vypadla a druhá) se zjistí podle vzorce:

Hned z toho vyplývá, že:

Jak vidíte, důkaz se provádí pro náhodné veličiny, které mají spojité spektrum hodnot a jsou dány jejich hustotou pravděpodobnosti. V ostatních případech je myšlenka důkazu podobná.

Kalmanův filtr

Formulace problému

Označme hodnotou, kterou budeme měřit, a poté filtrujme. Může to být souřadnice, rychlost, zrychlení, vlhkost, zápach, teplota, tlak atd.
Začněme jednoduchým příkladem, který nás dovede k formulaci obecného problému. Představte si, že máme rádiom řízené auto, které může jezdit jen tam a zpět. Když jsme znali hmotnost vozu, tvar, povrch vozovky atd., Vypočítali jsme, jak ovládací joystick ovlivňuje rychlost pohybu.

Souřadnice vozu se poté změní podle zákona:

V reálném životě nemůžeme při našich výpočtech brát v úvahu malé poruchy působící na auto (vítr, nerovnosti, oblázky na silnici), proto se skutečná rychlost auta bude lišit od vypočítané. Na pravou stranu psané rovnice se přidá náhodná proměnná:

Na psacím stroji máme nainstalovaný senzor GPS, který se pokouší změřit skutečnou souřadnici auta a samozřejmě ji nedokáže změřit přesně, ale měří ji s chybou, což je také náhodná proměnná. V důsledku toho od senzoru přijímáme chybná data:

Úkolem je, aby při znalosti špatných hodnot senzorů našel dobrou aproximaci skutečné souřadnice vozu.
Při formulaci obecného úkolu může být za souřadnici zodpovědná cokoli (teplota, vlhkost ...) a termín zodpovědný za ovládání systému zvenčí bude označen (v příkladu se strojem). Rovnice pro čtení souřadnic a senzorů budou vypadat takto:

Pojďme podrobně diskutovat o tom, co víme:

Stojí za zmínku, že úloha filtrování není úkolem vyhlazování. Nesnažíme se vyhladit data ze senzoru, snažíme se získat nejbližší hodnotu ke skutečné souřadnici.

Kalmanův algoritmus

Budeme se hádat indukcí. Představte si, že v th kroku jsme již našli filtrovanou hodnotu ze snímače, která dobře aproximuje skutečnou souřadnici systému. Nezapomeňte, že známe rovnici, která řídí změnu neznámé souřadnice:

proto zatím nepřijímáme hodnotu ze senzoru, můžeme předpokládat, že v kroku se systém vyvíjí podle tohoto zákona a senzor ukáže něco blízkého. Nic konkrétnějšího zatím bohužel říci nemůžeme. Na druhou stranu v kroku budeme mít na rukou nepřesné čtení senzoru.
Kalmanova myšlenka je následující. Abychom získali co nejlepší přiblížení ke skutečné souřadnici, musíme zvolit střední cestu mezi čtením nepřesného snímače a naší predikcí toho, co jsme od něj očekávali. Hodnotu senzoru přičteme a váha zůstane na předpokládané hodnotě:

Koeficient se nazývá Kalmanův koeficient. Záleží na kroku iterace, takže by bylo správnější jej napsat, ale prozatím, abychom nepřeplnili výpočtové vzorce, jeho index vynecháme.
Kalmanův koeficient musíme zvolit tak, aby výsledná optimální hodnota souřadnic byla nejblíže skutečnému. Pokud například víme, že náš senzor je velmi přesný, pak budeme jeho čtení více důvěřovat a dáme hodnotě větší váhu (blízkou jedné). Pokud je senzor naopak zcela nepřesný, pak se více zaměříme na teoreticky predikovanou hodnotu.
Obecně platí, že k nalezení přesné hodnoty Kalmanova koeficientu stačí minimalizovat chybu:

K přepsání výrazu pro chybu používáme rovnice (1) (ty s modrým pozadím v rámečku):

Důkaz

Nyní je čas diskutovat o tom, co znamená výraz minimalizovat chyby? Koneckonců, chyba, jak vidíme, je sama o sobě náhodná proměnná a pokaždé nabývá jiných hodnot. Ve skutečnosti neexistuje individuální přístup k definování toho, co znamená, že chyba je minimální. Stejně jako v případě rozptylu náhodné proměnné, kdy jsme se pokusili odhadnout charakteristickou šířku jejího šíření, tak i zde zvolíme nejjednodušší kritérium pro výpočty. Minimalizujeme průměr čtvercové chyby:

Zapišme si poslední výraz:

Důkaz

Ze skutečnosti, že všechny náhodné proměnné zahrnuté ve výrazu pro jsou nezávislé, vyplývá, že všechny „křížové“ výrazy se rovnají nule:

Využili jsme toho, že pak vzorec rozptylu vypadá mnohem jednodušeji :.

Tento výraz nabývá minimální hodnoty, když (derivát rovnáme nule):

Zde již píšeme výraz pro Kalmanův koeficient s krokovým indexem, zdůrazňujeme tedy, že záleží na kroku iterace.
Získanou optimální hodnotu dosadíme do výrazu, který jsme minimalizovali. Obdržíme;

Náš úkol byl splněn. Dostali jsme iterační vzorec pro výpočet Kalmanova koeficientu.
Shrňme naše znalosti získané v jednom rámci:

Příklad

Matlab kód

Vymazat vše; N = 100% počet vzorků a = 0,1% zrychlení sigmaPsi = 1 sigmaEta = 50; k = 1: N x = k x (1) = 0 z (1) = x (1) + normrnd (0, sigmaEta); pro t = 1: (N-1) x (t + 1) = x (t) + a * t + normrnd (0, sigmaPsi); z (t + 1) = x (t + 1) + normrnd (0, sigmaEta); konec; % kalmanský filtr xOpt (1) = z (1); eOpt (1) = sigmaEta; pro 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) konec; plot (k, xOpt, k, z, k, x)

Analýza

Pokud sledujeme, jak se Kalmanův koeficient mění s iteračním krokem, můžeme ukázat, že se vždy stabilizuje na určitou hodnotu. Když se například efektivní hodnoty chyb senzoru a modelu vztahují k sobě jako deset ku jedné, pak graf Kalmanova koeficientu v závislosti na kroku iterace vypadá takto:

V následujícím příkladu budeme diskutovat o tom, jak nám to může výrazně usnadnit život.

Druhý příklad

V praxi se často stává, že o fyzickém modelu toho, co filtrujeme, nevíme vůbec nic. Řekněme například, že chcete filtrovat údaje z vašeho oblíbeného akcelerometru. Předem nevíte, jakým zákonem hodláte otáčet akcelerometrem. Nejvíce informací, které můžete získat, je odchylka chyby snímače. V tak obtížné situaci může být veškerá neznalost pohybového modelu přenesena do náhodné proměnné:

Ale, upřímně řečeno, takový systém již nesplňuje podmínky, které jsme kladli na náhodné proměnné, protože tam je nyní skrytá veškerá nám neznámá fyzika pohybu, a proto nemůžeme říci, že v různých dobách jsou chyby modelu nezávislé na navzájem a že jejich průměrné hodnoty jsou nulové. V tomto případě celkově není Kalmanova filtrační teorie použitelná. Ale nebudeme věnovat pozornost této skutečnosti, ale hloupě použijeme všechny kolosální vzorce a vybereme koeficienty podle očí, aby filtrovaná data vypadala roztomilá.
Ale můžete jít jiným, mnohem jednodušším způsobem. Jak jsme viděli výše, Kalmanův koeficient se vždy stabilizuje směrem k hodnotě s nárůstem. Proto místo výběru koeficientů a nalezení Kalmanova koeficientu pomocí složitých vzorců můžeme tento koeficient považovat za vždy konstantní a vybrat pouze tuto konstantu. Tento předpoklad téměř nic nezkazí. Za prvé, již nelegálně používáme Kalmanovu teorii, a za druhé, Kalmanův koeficient se rychle stabilizuje na konstantu. Díky tomu bude vše velmi jednoduché. Nepotřebujeme vůbec žádné vzorce z Kalmanovy teorie, stačí najít přijatelnou hodnotu a vložit ji do iteračního vzorce:

Následující graf ukazuje data z fiktivního senzoru filtrovaného dvěma různými způsoby. Za předpokladu, že nevíme nic o fyzice jevu. První způsob je poctivý, se všemi vzorci z Kalmanovy teorie. A druhý je zjednodušený, bez vzorců.

Jak vidíme, metody jsou téměř stejné. Malý rozdíl je pozorován pouze na začátku, kdy se Kalmanův koeficient ještě nestabilizoval.

Diskuse

Jak jsme viděli, hlavní myšlenkou Kalmanova filtru je najít takový koeficient, jako je filtrovaná hodnota

v průměru by se nejméně lišil od skutečné hodnoty souřadnice. Vidíme, že filtrovaná hodnota je lineární funkcí čtení snímače a předchozí filtrované hodnoty. A předchozí filtrovaná hodnota je zase lineární funkcí čtení snímače a předchozí filtrované hodnoty. A tak dále, dokud se řetěz plně nerozvinul. To znamená, že filtrovaná hodnota závisí na ze všech lineární odečty předchozích senzorů:

Kalmanův filtr se proto nazývá lineární filtr.
Je dokázáno, že Kalmanův filtr je nejlepší ze všech lineárních filtrů. Nejlepší v tom smyslu, že průměrný čtverec chyby filtru je minimální.

Vícerozměrný případ

Celou teorii Kalmanova filtru lze zobecnit na vícerozměrný případ. Vzorce tam vypadají trochu děsivěji, ale samotná myšlenka jejich odvození je stejná jako v jednorozměrném případě. Můžete je vidět v tomto vynikajícím článku: http://habrahabr.ru/post/140274/.
A v tomto nádherném video je analyzován příklad jejich použití.

Wiener filtry jsou nejvhodnější pro procesy zpracování nebo obecně pro části procesů (blokové zpracování). Pro sekvenční zpracování je vyžadován aktuální odhad signálu v každém hodinovém cyklu s přihlédnutím k informacím vstupujícím do vstupu filtru během procesu pozorování.

S Wienerovým filtrováním by každý nový vzorek signálu vyžadoval přepočet všech hmotností filtrů. V současné době se rozšířily adaptivní filtry, ve kterých jsou přicházející nové informace používány k průběžné korekci dříve provedeného hodnocení signálu (sledování cíle v radaru, automatické řídicí systémy v řízení atd.). Obzvláště zajímavé jsou adaptivní filtry rekurzivního typu známé jako Kalmanův filtr.

Tyto filtry jsou široce používány v regulačních smyčkách v systémech automatické regulace a řízení. Právě odtamtud se objevili, o čemž svědčí tak specifická terminologie používaná k popisu jejich práce jako stavového prostoru.

Jedním z hlavních úkolů, které je třeba vyřešit v praxi neurálních počítačů, je získání rychlých a spolehlivých algoritmů pro učení neuronových sítí. V tomto ohledu může být užitečné použít lineární filtry ve smyčce zpětné vazby. Protože tréninkové algoritmy jsou svou povahou iterativní, musí být takový filtr sekvenčním rekurzivním odhadem.

Problém s odhadem parametrů

Jedním z problémů teorie statistických rozhodnutí, které mají velký praktický význam, je problém odhadu stavových vektorů a parametrů systémů, který je formulován následovně. Předpokládejme, že je nutné odhadnout hodnotu vektorového parametru $ X $, která je pro přímé měření nepřístupná. Místo toho se měří další parametr $ Z $, v závislosti na $ X $. Problémem odhadu je odpovědět na otázku: co lze říci o $ X $, vědět $ Z $. V obecném případě postup pro optimální vyhodnocení vektoru $ X $ závisí na přijatém kritériu kvality hodnocení.

Bayesovský přístup k problému odhadování parametrů například vyžaduje úplné a priori informace o pravděpodobnostních vlastnostech odhadovaného parametru, což je často nemožné. V těchto případech se uchýlí k metodě nejmenších čtverců (OLS), která vyžaduje mnohem méně apriori informací.

Uvažujme aplikaci OLS pro případ, kdy vektor pozorování $ Z $ souvisí s vektorem odhadu parametrů $ X $ lineárním modelem a pozorování obsahuje hluk $ V $ nekorelující s odhadovaným parametrem:

$ Z = HX + V $, (1)

kde $ H $ je transformační matice popisující vztah mezi pozorovanými veličinami a odhadovanými parametry.

Odhad $ X $, který minimalizuje druhou mocninu chyby, je zapsán následovně:

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

Nechť hluk $ V $ nesouvisí, v tomto případě je matice $ R_V $ pouze maticí identity a rovnice pro odhad se stává jednodušší:

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

Zápis v maticové formě výrazně šetří papír, ale pro někoho to může být neobvyklé. To vše ilustruje následující příklad, převzatý z monografie Yu. M. Korshunova „Matematické základy kybernetiky“.
K dispozici je následující elektrický obvod:

Pozorované hodnoty jsou v tomto případě odečty zařízení $ A_1 = 1 A, A_2 = 2 A, V = 20 B $.

Kromě toho je znám odpor $ R = 5 $ Ohm. Je nutné odhadnout nejlepším způsobem, z hlediska kritéria minimálního průměrného čtverce chyby, hodnoty proudů $ I_1 $ a $ I_2 $. Nejdůležitější věcí je, že existuje nějaký vztah mezi pozorovanými hodnotami (odečty přístrojů) a odhadovanými parametry. A tyto informace jsou přiváděny zvenčí.

V tomto případě se jedná o Kirchhoffovy zákony, v případě filtrování (o kterém bude řeč dále) - autoregresivní model časové řady, který předpokládá závislost aktuální hodnoty na těch předchozích.

Znalost Kirchhoffových zákonů, která nemá nic společného s teorií statistických rozhodnutí, umožňuje vytvořit souvislost mezi pozorovanými hodnotami a odhadovanými parametry (kdo studoval elektrotechniku ​​- mohou kontrolovat, zbytek bude mít aby si vzali 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 stejné ve vektorové podobě:

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

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

Když vezmeme v úvahu hodnoty interference, které spolu navzájem nesouvisejí, najdeme odhad I 1 a I 2 metodou nejmenších čtverců podle vzorce 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 $.

Úkol filtrace

Na rozdíl od problému odhadování parametrů, které mají pevné hodnoty, je v problému filtrování nutné vyhodnotit procesy, tj. Najít aktuální odhady časově proměnného signálu, zkresleného interferencí, a proto pro přímé měření nepřístupné. Obecně platí, že typ filtračních algoritmů závisí na statistických vlastnostech signálu a šumu.

Budeme předpokládat, že užitečný signál je pomalu se měnící funkcí času a interferencí je nekorelovaný šum. Použijeme metodu nejmenších čtverců, opět kvůli nedostatku apriorních informací o pravděpodobnostních charakteristikách signálu a rušení.

Nejprve získáme odhad aktuální hodnoty $ x_n $ na základě dostupných $ k $ nejnovějších hodnot časové řady $ z_n, z_ (n-1), z_ (n-2) \ dots z_ (n- (k-1)) $. Model pozorování je stejný jako v problému odhadu parametrů:

Je zřejmé, že $ Z $ je sloupcový vektor skládající se z pozorovaných hodnot časové řady $ z_n, z_ (n-1), z_ (n-2) \ dots z_ (n- (k-1)) $, $ V $-vektorový sloupec hluku $ \ xi _n, \ xi _ (n-1), \ xi_ (n-2) \ dots \ xi_ (n- (k-1)) $, zkreslující pravdivé signál. Co znamenají symboly $ H $ a $ X $? O čem například můžeme hovořit o sloupcovém vektoru $ X $, pokud vše, co je potřeba, je poskytnout odhad aktuální hodnoty časové řady? A co je míněno transformační maticí $ H $, není vůbec jasné.

Na všechny tyto otázky lze odpovědět pouze tehdy, když se vezme v úvahu koncept modelu generování signálu. To znamená, že je potřeba nějaký model původního signálu. To je pochopitelné, při absenci apriorních informací o pravděpodobnostních charakteristikách signálu a rušení zbývá pouze učinit předpoklady. Můžete tomu říkat věštění na kávové sedlině, ale odborníci dávají přednost jiné terminologii. Na jejich „fénu“ se tomu říká parametrický model.

V tomto případě jsou odhadovány parametry tohoto konkrétního modelu. Při výběru vhodného modelu generování signálu mějte na paměti, že jakoukoli analytickou funkci lze rozšířit v sérii Taylor. Úžasnou vlastností řady Taylor je, že tvar funkce v jakékoli konečné vzdálenosti $ t $ od bodu $ x = a $ je jednoznačně určen chováním funkce v nekonečně malém sousedství bodu $ x = a $ (mluvíme o jeho derivátech prvního a vyššího řádu).

Existence Taylorových řad tedy znamená, že analytická funkce má vnitřní strukturu s velmi silnou vazbou. Pokud se například omezíme na tři členy řady Taylor, bude model generování signálu vypadat 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 pro dané pořadí polynomu (v příkladu je 2) vytváří spojení mezi hodnotou $ n $ -th signálu v časové posloupnosti a $ (n -i) $ -th. Vektor odhadovaného stavu tedy v tomto případě zahrnuje kromě skutečné odhadované hodnoty první a druhou derivaci signálu.

V teorii automatického řízení by se takový filtr nazýval filtrem astatismu 2. řádu. Transformační matice $ H $ pro tento případ (odhad se provádí na základě současných a $ k-1 $ předchozích vzorků) vypadá takto:

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

Všechna tato čísla jsou získána z Taylorovy řady za předpokladu, že časový interval mezi sousedními pozorovanými hodnotami je konstantní a rovná 1.

Úkol filtrování podle našich předpokladů byl tedy omezen na úkol odhadování parametrů; v tomto případě se odhadují parametry přijatého modelu generování signálu. A odhad hodnot stavového vektoru $ X $ se provádí podle stejného vzorce 3:

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

V podstatě jsme implementovali proces parametrického odhadu na základě autoregresivního modelu procesu generování signálu.

Vzorec 3 je snadno implementovatelný programově, k tomu je třeba vyplnit matici $ H $ a vektorový sloupec pozorování $ Z $. Tyto filtry se nazývají konečné paměťové filtry, protože používají poslední pozorování $ k $ k získání aktuálního odhadu $ X_ (nоts) $. V každém novém cyklu pozorování je k aktuální sadě pozorování přidán nový a starý je vyřazen. Tento proces získávání známek se nazývá Posuvné okno.

Rozrůstání paměťových filtrů

Filtry s konečnou pamětí mají hlavní nevýhodu, že po každém novém pozorování je nutné provést kompletní přepočet všech dat uložených v paměti. Výpočet odhadů lze navíc zahájit až poté, co byly shromážděny výsledky prvních pozorování $ k $. To znamená, že tyto filtry mají dlouhou přechodnou dobu.

Abychom s touto nevýhodou bojovali, je nutné přepnout z filtru trvalé paměti na filtr s rostoucí paměť... V takovém filtru se počet pozorovaných hodnot, pro které je odhad proveden, musí shodovat s číslem n aktuálního pozorování. To umožňuje získat odhady počínaje počtem pozorování rovným počtu složek odhadovaného vektoru $ X $. A to je určeno pořadím přijatého modelu, tj. Kolik výrazů z Taylorovy řady je v modelu použito.

Současně s rostoucím n se zlepšují vyhlazovací vlastnosti filtru, to znamená, že se zvyšuje přesnost odhadů. Přímá implementace tohoto přístupu je však spojena se zvýšením nákladů na výpočet. Rostoucí paměťové filtry jsou proto implementovány jako opakující se.

Faktem je, že v době n již máme odhad $ X _ ((n-1) оц) $, který obsahuje informace o všech předchozích pozorováních $ z_n, z_ (n-1), z_ (n-2) \ tečky z_ (n- (k-1)) $. Odhad $ X_ (nоц) $ je získán z dalšího pozorování $ z_n $ pomocí informací uložených v odhadu $ X _ ((n-1)) (\ mbox (оц)) $. Tento postup se nazývá opakované filtrování a skládá se z následujících položek:

  • podle odhadu $ X _ ((n-1)) (\ mbox (оц)) $ předpovědět odhad $ X_n $ podle vzorce 4 s $ i = 1 $: $ X _ (\ mbox (notsapriori)) = F_1X _ ((n-1) sc) $. Toto je apriorní odhad;
  • podle výsledků současného pozorování $ z_n $ je tento apriorní odhad převeden na skutečný, tj. a posteriori;
  • tento postup se opakuje v každém kroku, počínaje $ r + 1 $, kde $ r $ je pořadí filtru.

Konečný vzorec pro opakované filtrování vypadá takto:

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

kde pro náš filtr druhého řádu:

Rostoucí paměťový filtr, který funguje podle vzorce 6, je zvláštním případem filtračního algoritmu známého jako Kalmanův filtr.

Při praktické implementaci tohoto vzorce je nutné mít na paměti, že apriorní odhad v něm obsažený je určen vzorcem 4 a hodnota $ h_0 X _ (\ mbox (notspriori)) $ je první složkou vektoru $ X _ (\ mbox (notspriori)) $.

Rostoucí paměťový filtr má jednu důležitou vlastnost. Když se podíváte na vzorec 6, pak konečné skóre je součtem predikovaného vektoru skóre a opravného výrazu. Tato oprava je velká pro malé $ n $ a klesá s rostoucím $ n $, má tendenci k nule jako $ n \ rightarrow \ infty $. To znamená, že s rostoucím n narůstají vyhlazovací vlastnosti filtru a model v něm obsažený začíná dominovat. Skutečný signál však může odpovídat modelu pouze v určitých oblastech, proto se přesnost předpovědi zhoršuje.

Aby se s tím bojovalo, počínaje od nějakých $ n $, je uložen zákaz dalšího zkrácení opravného termínu. To je ekvivalentní změně šířky pásma filtru, to znamená, že pro malé n je filtr širší (méně setrvačný), pro velké n se stává více setrvačným.

Srovnej obrázek 1 a obrázek 2. Na prvním obrázku má filtr velkou paměť, zatímco se dobře vyhlazuje, ale díky svému úzkému pásmu odhadovaná trajektorie zaostává za skutečnou. Na druhém obrázku je paměť filtru menší, hůře se vyhlazuje, ale lépe sleduje skutečnou trajektorii.

Literatura

  1. YM Korshunov „Matematické základy kybernetiky“
  2. A.V. Balakrishnan „Kalmanova filtrační teorie“
  3. VNFomin „Opakovaný odhad a adaptivní filtrování“
  4. C.F.N. Cowan, P.M. Udělit „Adaptivní filtry“

Random Forest je jedním z mých oblíbených algoritmů dolování dat. Za prvé je neuvěřitelně všestranný a lze jej použít k řešení regresních i klasifikačních problémů. Vyhledejte anomálie a vyberte prediktory. Za druhé, toto je algoritmus, který je opravdu obtížné nesprávně použít. Jednoduše proto, že na rozdíl od jiných algoritmů má málo konfigurovatelných parametrů. V jádru je také překvapivě jednoduchý. A zároveň je pozoruhodný svou přesností.

Jaká je myšlenka tak úžasného algoritmu? Myšlenka je jednoduchá: řekněme, že máme nějaký velmi slabý algoritmus, řekněme. Pokud pomocí tohoto slabého algoritmu vytvoříme mnoho různých modelů a zprůměrujeme výsledek jejich předpovědí, bude konečný výsledek mnohem lepší. Jedná se o takzvaný souborový trénink v akci. Algoritmus Random Forest se proto nazývá „Random Forest“, pro získaná data vytvoří sadu rozhodovacích stromů a poté zprůměruje výsledek jejich předpovědí. Důležitým bodem je zde prvek náhodnosti při vytváření každého stromu. Koneckonců je jasné, že pokud vytvoříme mnoho identických stromů, pak výsledek jejich zprůměrování bude mít přesnost jednoho stromu.

Jak pracuje? Předpokládejme, že máme nějaká vstupní data. Každý sloupec odpovídá nějakému parametru, každý řádek odpovídá nějakému datovému prvku.

Můžeme náhodně vybrat určitý počet sloupců a řádků z celé datové sady a na jejich základě sestavit rozhodovací strom.


Čtvrtek 10. května 2012

Čtvrtek 12. ledna 2012


To je vše. 17hodinový let skončil, Rusko je v zámoří. A skrz okno útulného bytu se 2 ložnicemi San Francisco se na nás dívá slavné Silicon Valley, Kalifornie, USA. Ano, to je právě ten důvod, proč jsem v poslední době prakticky nepsal. Přestěhovali jsme se.

Všechno to začalo v dubnu 2011, když jsem dělal telefonický rozhovor v Zynga. Pak to všechno vypadalo jako nějaká hra, která nemá nic společného s realitou, a já jsem si ani nedokázal představit, co to bude mít za následek. V červnu 2011 Zynga přijel do Moskvy a provedl sérii pohovorů, bylo zváženo asi 60 uchazečů, kteří prošli telefonickými pohovory, a asi 15 z nich bylo vybráno (nevím přesné číslo, někdo si to později rozmyslel, někdo okamžitě odmítl). Rozhovor se ukázal být překvapivě jednoduchý. Nebyly testovány žádné programovací úkoly, žádné záludné otázky o tvaru poklopů, většinou schopnost chatovat. A znalosti byly podle mě hodnoceny jen povrchně.

A pak začal trik. Nejprve jsme čekali na výsledky, poté na nabídku, poté na schválení LCA, poté na schválení petice za vízum, poté na dokumenty z USA, pak frontu na ambasádě, další kontrolu a poté vízum. Chvílemi se mi zdálo, že jsem připraven odhodit všechno a dát gól. Chvílemi jsem pochyboval, zda tuto Ameriku potřebujeme, koneckonců, není to špatné ani v Rusku. Celý proces trval zhruba půl roku, v důsledku toho jsme v polovině prosince dostali víza a začali se připravovat na odlet.

Pondělí byl můj první den v práci na novém místě. V kanceláři jsou vytvořeny všechny podmínky, aby nejen pracovali, ale také žili. Snídaně, obědy a večeře od našich vlastních kuchařů, spousta různých jídel plněných všude, posilovna, masáže a dokonce i kadeřnictví. To vše je pro zaměstnance zcela zdarma. Mnoho lidí chodí do práce na kole a existuje několik místností pro uložení vozidel. Obecně jsem se s něčím podobným v Rusku nikdy nesetkal. Všechno má ale svoji cenu, hned jsme byli varováni, že budeme muset hodně pracovat. Co je podle jejich standardů „hodně“, mi není příliš jasné.

Doufám však, že navzdory množství práce budu moci v dohledné budoucnosti pokračovat v blogování a možná vám povím něco o americkém životě a práci programátora v Americe. Počkej a uvidíš. Do té doby přeji všem šťastný nový rok a Vánoce a brzy se uvidíme!


Pro příklad použití vytiskneme dividendový výnos ruských společností. Jako základní cenu bereme závěrečnou cenu akcie v den uzavření registru. Z nějakého důvodu tyto informace nejsou na místě trojky, ale jsou mnohem zajímavější než absolutní hodnoty dividend.
Pozornost! Spuštění kódu trvá dlouho, protože pro každou propagaci musíte podat žádost na servery finam a získat její hodnotu.

Výsledek<- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0) (zkuste ((uvozovky<- 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


Podobně můžete vytvářet statistiky za minulé roky.

Kalmanův filtr je pravděpodobně nejpopulárnějším filtračním algoritmem používaným v mnoha oblastech vědy a techniky. Díky své jednoduchosti a účinnosti se nachází v přijímačích GPS, procesorech odečtů senzorů, při implementaci řídicích systémů atd.

Na internetu je spousta článků a knih o Kalmanově filtru (hlavně v angličtině), ale tyto články mají docela velký vstupní práh, existuje mnoho nejasných míst, i když ve skutečnosti je to velmi jasný a transparentní algoritmus. Pokusím se vám o tom říci jednoduchým jazykem s postupným zvyšováním složitosti.

K čemu to je?

Jakékoli měřicí zařízení má nějakou chybu, může být ovlivněno velkým počtem vnějších i vnitřních vlivů, což vede k tomu, že informace z něj jsou hlučné. Čím jsou data hlučnější, tím obtížnější je takové informace zpracovat.

Filtr je algoritmus zpracování dat, který odstraňuje hluk a nepotřebné informace. V Kalmanově filtru je možné a priori nastavit informace o povaze systému, vztahu proměnných a na základě toho sestavit přesnější odhad, ale i v tom nejjednodušším případě (bez zadání apriorních informací) ) poskytuje vynikající výsledky.

Uvažujme nejjednodušší příklad - předpokládejme, že potřebujeme kontrolovat hladinu paliva v nádrži. K tomu je v nádrži nainstalován kapacitní senzor, který se velmi snadno udržuje, ale má určité nevýhody - například závislost na plnění paliva (dielektrická konstanta paliva závisí na mnoha faktorech, např. na teplotu), velký vliv „hrbolatosti“ v nádrži. Ve výsledku informace z ní představují typickou „pilu“ se slušnou amplitudou. Takové senzory jsou často instalovány na těžkém těžebním zařízení (nenechte se zmást objemem nádrže):

Kalmanův filtr

Pojďme trochu odbočit a seznámit se s algoritmem samotným. Kalmanův filtr používá k vytvoření optimálního odhadu stavu dynamický model systému (například fyzikální zákon pohybu), známé ovládací akce a mnoho po sobě jdoucích měření. Algoritmus se skládá ze dvou opakujících se fází: predikce a korekce. V první fázi se vypočítá predikce stavu v dalším časovém okamžiku (s přihlédnutím k nepřesnosti jejich měření). Na druhé straně nové informace ze senzoru opravují předpokládanou hodnotu (také s přihlédnutím k nepřesnosti a hlučnosti těchto informací):

Rovnice jsou uvedeny v maticové formě, pokud neznáte lineární algebru - to je v pořádku, pak pro případ s jednou proměnnou bude existovat zjednodušená verze bez matic. V případě jedné proměnné matice degenerují do skalárních hodnot.

Pojďme nejprve porozumět notaci: dolní index označuje okamžik v čase: k - aktuální, (k -1) - předchozí, znaménko minus v horním indexu znamená, že je předpovídal střední hodnota.

Popisy proměnných jsou uvedeny na následujících obrázcích:

Je možné dlouho a únavně popisovat, co všechny tyto tajemné přechodové matice znamenají, ale podle mého názoru je lepší pokusit se použít algoritmus pomocí skutečného příkladu - aby abstraktní hodnoty získaly skutečný význam.

Zkusme to v akci

Vraťme se k příkladu se snímačem hladiny paliva, protože stav systému je reprezentován jednou proměnnou (objem paliva v nádrži), matice degenerují do obvyklých rovnic:
Definování procesního modelu
Aby bylo možné použít filtr, je nutné určit matice / hodnoty proměnných, které určují dynamiku systému a rozměry F, B a H:

F- proměnná popisující dynamiku systému v případě paliva - může to být koeficient, který určuje spotřebu paliva při volnoběhu během doby vzorkování (doba mezi kroky algoritmu). Kromě spotřeby paliva však existují i ​​tankování ... proto pro jednoduchost vezmeme tuto proměnnou rovnou 1 (to znamená, naznačujeme, že predikovaná hodnota se bude rovnat předchozímu stavu).

B- proměnná určující použití kontrolní akce. Pokud bychom měli další informace o otáčkách motoru nebo stupni sešlápnutí plynového pedálu, pak by tento parametr určoval, jak se během doby vzorkování změní spotřeba paliva. Protože v našem modelu nejsou žádné kontrolní akce (nejsou o nich žádné informace), vezmeme B = 0.

H- matice, která určuje vztah mezi měřeními a stavem systému, prozatím bez vysvětlení vezmeme tuto proměnnou rovnající se také 1.

Definování vlastností vyhlazování
R.- chybu měření lze určit testováním měřicích přístrojů a určením chyby jejich měření.

Otázka- Stanovení procesního hluku je obtížnější úkol, protože je nutné určit rozptyl procesu, což není vždy možné. V každém případě můžete tento parametr zvolit tak, aby poskytoval požadovanou úroveň filtrace.

Implementace v kódu
Abychom rozptýlili zbývající nesrozumitelnost, implementujeme v C # zjednodušený algoritmus (bez matic a ovládací akce):

třída KalmanFilterSimple1D
{
public double X0 (get; private set;) // predikovaný stav
public double P0 (get; private set;) // predikovaná kovariance

Public double F (get; private set;) // faktor skutečné hodnoty na předchozí skutečnou hodnotu
public double Q (get; private set;) // měření hluku
public double H (get; private set;) // faktor měřené hodnoty na skutečnou hodnotu
public double R (get; private set;) // hluk prostředí

Veřejný dvojitý stav (get; private set;)
public double Covariance (get; private set;)

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

Public Void SetState (dvojitý stav, dvojitá kovariance)
{
Stát = stát;
Covariance = kovariance;
}

Veřejná neplatnost Správná (dvojitá data)
{
// aktualizace času - predikce
X0 = F * Stav;
P0 = F * Kovariance * F + Q;

// aktualizace měření - oprava
var K = H * P0 / (H * P0 * H + R);
Stav = X0 + K * (data - H * X0);
Kovariance = (1 - K * H) * F;
}
}

// Aplikace ...

Var fuelData = GetData ();
var filtrováno = nový List ();

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

Filtered.Add (kalman.State); // Uložení aktuálního stavu
}

Výsledek filtrování pomocí těchto parametrů je znázorněn na obrázku (pro úpravu stupně vyhlazení - můžete změnit parametry Q a R):

To nejzajímavější je ponecháno mimo rozsah článku - použití Kalmanova filtru pro několik proměnných, nastavení vztahu mezi nimi a automatické zobrazení hodnot pro nepozorovatelné proměnné. Pokusím se v tématu pokračovat, jakmile bude čas.

Doufám, že popis nebyl příliš zdlouhavý a složitý, pokud máte nějaké dotazy nebo upřesnění - vítejte v komentářích)

V procesu automatizace technologických procesů na řídicí mechanismy a jednotky se musí člověk zabývat měřením různých fyzikálních veličin. Může to být tlak a průtok kapaliny nebo plynu, rychlost, teplota a mnoho dalšího. Měření fyzikálních veličin se provádí pomocí analogových senzorů. Analogový signál je datový signál, ve kterém je každý z reprezentujících parametrů popsán funkcí času a souvislou sadou možných hodnot. Z kontinuity hodnotového prostoru vyplývá, že jakékoli rušení zavedené do signálu je k nerozeznání od požadovaného signálu. Proto bude na analogový vstup řídicího zařízení odeslána nesprávná hodnota požadované fyzické veličiny. Proto je nutné filtrovat signál přicházející ze snímače.

Jedním z účinných algoritmů filtrování je Kalmanův filtr. Kalmanův filtr je rekurzivní filtr, který odhaduje stavový vektor dynamického systému pomocí řady neúplných a hlučných měření. Kalmanův filtr používá k vytvoření optimálního odhadu stavu dynamický model systému (například fyzikální zákon pohybu), řídicí akce a mnoho sekvenčních měření. Algoritmus se skládá ze dvou opakujících se fází: predikce a korekce. V první fázi se vypočítá predikce stavu v dalším časovém okamžiku (s přihlédnutím k nepřesnosti jejich měření). Ve druhém případě nové informace ze senzoru korigují předpokládanou hodnotu (také s přihlédnutím k nepřesnosti a hlučnosti těchto informací).

Ve fázi predikce se stane následující:

  1. Predikce stavu systému:

kde je predikce stavu systému v aktuálním čase; - matice přechodu mezi stavy (dynamický model systému); - predikce stavu systému v předchozím časovém okamžiku; - matice aplikace kontrolní akce; - kontrolní akce v předchozím časovém okamžiku.

  1. Predikce kovarianční chyby:

kde je predikce chyby; - chyba v předchozím časovém okamžiku; - kovariance šumu procesu.

Ve fázi nastavení dochází k následujícímu:

  1. Výpočet Kalmanova zisku:

kde je zisk Kalmanu; - matice měření ukazující vztah měření a stavů; - kovariance měření hluku.

kde je měření v aktuálním čase.

  1. Aktualizace chyby Covariance:

kde je matice identity.

Pokud je stav systému popsán jednou proměnnou, pak = 1 a matice degenerují do obyčejných rovnic.

Aby byla jasně prokázána účinnost Kalmanova filtru, byl proveden experiment se snímačem hlasitosti AVR PIC KY-037, který je připojen k mikrokontroléru Arduino Uno. Obrázek 1 ukazuje graf naměřených hodnot ze snímače bez filtru (řádek 1). Chaotické výkyvy ve výstupu snímače indikují přítomnost šumu.

Obrázek 1. Graf naměřených hodnot ze snímače bez použití filtru

Chcete -li použít filtr, je nutné definovat hodnoty proměnných a, které určují dynamiku systému a dimenze. Vezměme a rovná se 1 a rovná se 0, protože v systému nejsou žádné ovládací akce. K určení vlastností vyhlazování filtru je nutné vypočítat hodnotu proměnné a také vybrat hodnotu parametru.

Proměnnou vypočítáme v aplikaci Microsoft Excel 2010. K tomu je nutné vypočítat směrodatnou odchylku pro vzorek odečtů senzorů. = 0,62. je vybrána v závislosti na požadované úrovni filtrace, bereme = 0,001. Na obrázku 2 druhý řádek ukazuje graf naměřených hodnot ze snímače s použitým filtrem.

Obrázek 2. Graf odečtů senzorů pomocí Kalmanova filtru

Z grafu můžeme usoudit, že se filtr vypořádal s úkolem filtrovat hluk, protože v ustáleném stavu jsou výkyvy hodnot ze senzorů, které prošly filtrováním, nevýznamné.

Kalmanův filtr má však značnou nevýhodu. Pokud se naměřená hodnota ze senzoru může rychle měnit, hodnoty filtrovaného senzoru se nezmění tak rychle jako naměřená hodnota. Obrázek 3 ukazuje reakci Kalmanova filtru na skok v měřené hodnotě.

Obrázek 3. Reakce Kalmanova filtru na skok v naměřené hodnotě

Odezva filtru na skok v naměřené hodnotě byla shledána jako zanedbatelná. Pokud se naměřená hodnota výrazně změní a poté se nevrátí na předchozí hodnotu, budou odečty filtrovaných senzorů odpovídat skutečné hodnotě měřené hodnoty až po významném časovém období, což je pro systémy automatického řízení, které vyžadují vysoký výkon, nepřijatelné .

Z provedeného experimentu lze usoudit, že Kalmanův filtr je vhodné použít k filtrování údajů ze senzorů v nízkorychlostních systémech.

Bibliografie:

  1. GOST 17657-79. Přenos dat. Termíny a definice. - Moskva: Vydavatelství norem, 2005. - 2 s.
  2. Kalmanův filtr // Wikipedie. ... Aktualizováno datum: 26.04.2017. URL: http://ru.wikipedia.org/?oldid=85061599 (datum přístupu: 21. 5. 2017).