A Kalman szűrő használata az érzékelőkből kapott értékek szűrésére. Kalman szűrés Optimális Kalman szűrő

Az interneten, beleértve a Habrét is, sok információt talál a Kalman szűrőről. De nehéz megtalálni a képletek könnyen emészthető származékát. Következtetés nélkül mindezt a tudományt egyfajta sámánizmusnak fogják fel, a képletek arctalan szimbólumhalmaznak tűnnek, és ami a legfontosabb, sok egyszerű kijelentés, amely egy elmélet felszínén fekszik, felfoghatatlan. Ennek a cikknek a célja az lesz, hogy a lehető legkönnyebben elérhető nyelven beszéljen erről a szűrőről.
A Kalman szűrő hatékony adatszűrő eszköz. Fő elve, hogy a szűrés során magának a jelenségnek a fizikájára vonatkozó információkat használják fel. Például, ha egy autó sebességmérőjéből szűr adatokat, akkor az autó tehetetlensége jogot ad arra, hogy a sebesség túl gyors ugrásait mérési hibaként érzékelje. A Kalman szűrő azért érdekes, mert bizonyos értelemben ez a legjobb szűrő. Az alábbiakban részletesebben megvitatjuk, mit jelentenek a "legjobb" szavak. A cikk végén megmutatom, hogy sok esetben a képletek olyan mértékben leegyszerűsíthetők, hogy szinte semmi nem marad belőlük.

Oktatási program

Mielőtt megismerkednék a Kálmán -szűrővel, azt javaslom, hogy idézzünk fel néhány egyszerű definíciót és tényt a valószínűség elméletéből.

Véletlen érték

Amikor azt mondják, hogy egy véletlen változó adott, ez azt jelenti, hogy ez a mennyiség véletlen értékeket vehet fel. Különböző értékeket vesz fel, különböző valószínűségekkel. Ha dob, mondjuk egy kockával, egy diszkrét értékhalmaz kiesik :. Ha például egy vándor részecske sebességéről van szó, akkor nyilvánvalóan folyamatos értékrenddel kell foglalkozni. Egy véletlen változó "kiesett" értékeit ezzel jelöljük, de néha ugyanazt a betűt használjuk, amelyet egy véletlen változó jelölésére használunk :.
Folyamatos értékhalmaz esetén a véletlen változót a valószínűségi sűrűség jellemzi, ami azt diktálja számunkra, hogy annak valószínűsége, hogy a véletlen változó "kiesik" egy hosszú pont egy kis szomszédságában, egyenlő. Amint a képen látjuk, ez a valószínűség megegyezik a grafikon alatti árnyékolt téglalap területével:

Az életben gyakran a véletlen változók Gauss -féle, ha a valószínűségi sűrűség egyenlő.

Látjuk, hogy a függvény harang alakú, egy pont középpontjában és a sor jellemző szélességével.
Mivel a Gauss -eloszlásról beszélünk, bűn lenne nem említeni, hogy honnan származik. Ahogy a számok szilárdan rögzültek a matematikában és a legváratlanabb helyeken is előfordulnak, úgy a Gauss -eloszlás is mélyen gyökeret vert a valószínűség elméletében. Az egyik figyelemre méltó kijelentés, amely részben megmagyarázza a Gauss mindenütt jelenlétét, a következő:
Legyen egy tetszőleges eloszlású véletlen változó (valójában ennek az önkénynek vannak bizonyos korlátozásai, de egyáltalán nem szigorúak). Végezzünk kísérleteket, és számítsuk ki a véletlen változó "kiesett" értékeinek összegét. Végezzünk sok ilyen kísérletet. Világos, hogy minden alkalommal más és más értéket kapunk az összegből. Más szóval, ez az összeg önmagában egy véletlen változó, saját eloszlási törvényével. Kiderül, hogy elég nagyoknál ennek az összegnek az eloszlási törvénye a Gauss -eloszláshoz irányul (mellesleg a "harang" jellemző szélessége nő). Bővebben a Wikipédiában: Central Limit Theorem. Az életben nagyon gyakran vannak olyan mennyiségek, amelyek nagyszámú, egyenlő eloszlású független véletlenszerű változóból állnak, és ezért Gauss szerint vannak elosztva.

Átlagos

Egy véletlen változó átlagos értéke az, amit a határértékben kapunk, ha sok kísérletet végzünk, és kiszámítjuk a kiesett értékek számtani átlagát. Az átlagot különböző módon jelölik: a matematikusok szeretnek jelölni (elvárás), a külföldi matematikusok pedig (elvárás). A fizikusok keresztül vagy. Külföldi módon kijelöljük :.
Például egy Gauss -eloszlás esetén az átlag az.

Diszperzió

A Gauss -eloszlás esetében világosan látjuk, hogy a véletlen változó inkább kiesik az átlagos értékének egy bizonyos környékén. Amint a grafikonon látható, a rendelési értékek jellemző szórása. Hogyan tudjuk megbecsülni ezt az érték -eloszlást egy tetszőleges véletlen változó esetében, ha ismerjük annak eloszlását. Grafikonot rajzolhat a valószínűségi sűrűségéről, és szemmel becsülheti meg a jellemző szélességet. De inkább az algebrai utat követjük. Megtalálható az eltérés (modulus) átlagos hossza az átlagtól :. Ez az érték jó becslés lesz az értékek jellemző szórására. De te és én nagyon jól tudjuk, hogy a modulok használata a képletekben nagy fejtörést okoz, ezért ezt a képletet ritkán használják a jellemző szórás becslésére.
Egy egyszerűbb módszer (számítások szempontjából egyszerű) a megtalálás. Ezt az értéket szórásnak nevezik, és gyakran nevezik. A szórás gyökét szórásnak nevezzük. A szórás jól becsüli egy véletlen változó terjedését.
Például egy Gauss -eloszlás esetén kiszámíthatjuk, hogy a fent definiált variancia pontosan egyenlő, ami azt jelenti, hogy a szórás egyenlő, ami nagyon jól egyezik a geometriai intuíciónkkal.
Valójában egy kis csalás rejtőzik itt. A tény az, hogy a Gauss -eloszlás meghatározásában a kitevő alatt van a kifejezés. Ez a kettő a nevezőben pontosan úgy áll, hogy a szórás egyenlő legyen az együtthatóval. Vagyis maga a Gauss-féle eloszlási képlet speciálisan kihegyezett formában van írva, így figyelembe vesszük annak gyök-közép-négyzet eltérését.

Független véletlen változók

A véletlen változók függők és nem. Képzeld el, hogy egy tűt egy síkra dobsz, és leírod mindkét végének koordinátáit. Ez a két koordináta függő, összefügg azzal a feltétellel, hogy a köztük lévő távolság mindig egyenlő a tű hosszával, bár véletlenszerű értékek.
A véletlen változók függetlenek, ha az első eredménye teljesen független a második eredményétől. Ha a véletlen változók függetlenek, akkor a termékük átlagos értéke megegyezik az átlagértékek szorzatával:

Bizonyíték

Például a kék szem és a középiskola aranyéremmel való elvégzése független véletlen változók. Ha mondjuk kék szeműek, aranyérmesek, akkor kék szeműek. Ez a példa azt mutatja, hogy ha a véletlen változókat valószínűségi sűrűségük adja meg, és ezeknek az értékeknek a függetlensége abban nyilvánul meg, hogy a valószínűségi sűrűség ( az első érték kiesett, a második) pedig a következő képlet szerint található:

Ebből azonnal következik, hogy:

Amint láthatja, a bizonyítást véletlenszerű változókra végzik, amelyek folyamatos érték -spektrummal rendelkeznek, és valószínűségi sűrűségükből adódnak. Más esetekben a bizonyítás gondolata hasonló.

Kalman szűrő

A probléma megfogalmazása

Jelöljük a mérni kívánt értékkel, majd szűrjük. Ez lehet koordináta, sebesség, gyorsulás, páratartalom, bűz, hőmérséklet, nyomás stb.
Kezdjük egy egyszerű példával, amely elvezet bennünket egy általános probléma megfogalmazásához. Képzeljük el, hogy van egy rádióvezérelt autónk, amely csak oda-vissza tud menni. Ismerve az autó súlyát, alakját, útfelületét stb., Kiszámítottuk, hogy a vezérlő joystick hogyan befolyásolja a mozgás sebességét.

Ezután az autó koordinátája megváltozik a törvény szerint:

A való életben nem vehetjük figyelembe számításaink során az autóra ható apró zavarokat (szél, dudorok, kavicsok az úton), ezért az autó valós sebessége eltér a számított sebességtől. Az írott egyenlet jobb oldalára egy véletlen változó kerül:

Az írógépre telepítettünk egy GPS -érzékelőt, amely megpróbálja megmérni az autó valódi koordinátáját, és természetesen nem tudja pontosan mérni, de hibával méri, ami szintén véletlen változó. Ennek eredményeként hibás adatokat kapunk az érzékelőtől:

A feladat az, hogy a rossz érzékelői értékek ismeretében találjunk jó közelítést az autó valódi koordinátájához.
Az általános probléma megfogalmazásában bármi felelős lehet a koordinátáért (hőmérséklet, páratartalom ...), és a rendszer kívülről történő vezérléséért felelős kifejezést a (a példával egy géppel) jelzi. A koordináta és az érzékelő leolvasásának egyenlete így néz ki:

Beszéljük meg részletesen, mit tudunk:

Érdemes megjegyezni, hogy a szűrési feladat nem anti-aliasing feladat. Nem az adatokat próbáljuk kisimítani az érzékelőből, hanem a valós koordinátához legközelebb eső értéket.

Kalman algoritmusa

Indukcióval fogunk vitatkozni. Képzeljük el, hogy a harmadik lépésben már megtaláltuk a szűrt értéket az érzékelőből, amely jól közelíti a rendszer valódi koordinátáját. Ne felejtse el, hogy ismerjük az egyenletet, amely az ismeretlen koordináta változását szabályozza:

ezért, még nem kapva az értéket az érzékelőtől, feltételezhetjük, hogy egy lépésben a rendszer ennek a törvénynek megfelelően fejlődik, és az érzékelő valami közelit mutat. Sajnos ennél pontosabbat nem tudunk mondani. Viszont egy lépésnél pontatlan érzékelő lesz a kezünkben.
Kálmán elképzelése a következő. Ahhoz, hogy a legjobb közelítést kapjuk a valódi koordinátához, a középutat kell választanunk a pontatlan érzékelő leolvasása és az előrejelzésünk között, hogy mit vártunk tőle. Súlyt adunk az érzékelő leolvasásának, és a súly az előrejelzett értéken marad:

Az együtthatót Kalman -együtthatónak nevezik. Ez az iterációs lépéstől függ, ezért helyesebb lenne megírni, de egyelőre, hogy ne zsúfoljuk össze a számítási képleteket, kihagyjuk az indexét.
A Kálmán -együtthatót úgy kell megválasztanunk, hogy a kapott optimális koordináta -érték a legközelebb legyen a valódihoz. Például, ha tudjuk, hogy érzékelőnk nagyon pontos, akkor jobban bízunk az olvasásában, és nagyobb súlyt adunk az értéknek (közel egyhez). Ha az érzékelő éppen ellenkezőleg, teljesen pontatlan, akkor inkább az elméletileg előre jelzett értékre koncentrálunk.
Általában a Kalman -együttható pontos értékének megtalálásához csak minimalizálnia kell a hibát:

Az (1) egyenleteket használjuk (azok, amelyek kék háttérrel rendelkeznek a keretben) a hiba kifejezésének átírásához:

Bizonyíték

Itt az ideje, hogy megvitassuk, mit jelent a hiba minimalizálása kifejezés? Végül is a hiba, mint láthatjuk, maga is egy véletlen változó, és minden alkalommal más értékeket vesz fel. Valójában nincs egy az egyhez megközelítés annak meghatározására, hogy mit jelent, hogy a hiba minimális. Csakúgy, mint egy véletlen változó varianciája esetén, amikor megpróbáltuk megbecsülni a szórás jellegzetes szélességét, itt is a legegyszerűbb kritériumot választjuk a számításokhoz. Minimalizáljuk a négyzetes hiba átlagát:

Írjuk ki az utolsó kifejezést:

Bizonyíték

Abból a tényből, hogy a (z) kifejezésben szereplő minden véletlen változó független, ebből következik, hogy minden "kereszt" kifejezés nulla:

Azt használtuk, hogy akkor a variancia képlet sokkal egyszerűbbnek tűnik :.

Ez a kifejezés minimális értéket vesz fel, amikor (a deriváltot nullával egyenlővé tesszük):

Itt már írunk egy kifejezést a Kalman -együtthatóhoz lépésindexsel, ezáltal hangsúlyozzuk, hogy ez az iterációs lépéstől függ.
A kapott optimális értéket behelyettesítjük a kifejezésbe, amelyet minimalizáltunk. Kapunk;

Feladatunkat teljesítettük. Kaptunk egy iteratív képletet a Kalman -együttható kiszámításához.
Foglaljuk össze egy keretben megszerzett tudásunkat:

Példa

Matlab kód

Mindent kitöröl; N = 100% minták száma a = 0,1% gyorsulás sigmaPsi = 1 sigmaEta = 50; k = 1: N x = k x (1) = 0 z (1) = x (1) + normrnd (0, sigmaEta); t = 1 esetén: (N-1) x (t + 1) = x (t) + a * t + normrnd (0, sigmaPsi); z (t + 1) = x (t + 1) + normrnd (0, sigmaEta); vége; % kalman szűrő xOpt (1) = z (1); eOpt (1) = sigmaEta; t = 1 esetén: (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) vége; diagram (k, xOpt, k, z, k, x)

Elemzés

Ha nyomon követjük, hogyan változik a Kálmán -együttható az iterációs lépéssel, akkor megmutathatjuk, hogy mindig stabilizál egy bizonyos értékre. Például, ha az érzékelő és a modell effektív effektív hibái tíz -egyhez kapcsolódnak, akkor a Kalman -együttható görbéje az iterációs lépéstől függően így néz ki:

A következő példában arról fogunk beszélni, hogy ez mennyivel könnyítheti meg az életünket.

Második példa

A gyakorlatban gyakran előfordul, hogy egyáltalán nem tudunk semmit a szűrés fizikai modelljéről. Tegyük fel például, hogy szeretné szűrni az értékeket a kedvenc gyorsulásmérőjéről. Nem tudja előre, hogy milyen törvény szerint kívánja elfordítani a gyorsulásmérőt. A legtöbb információ az érzékelő hibájának szórása. Ilyen nehéz helyzetben a mozgásmodell minden tudatlansága véletlenszerű változóba terelhető:

De őszintén szólva, egy ilyen rendszer már nem felel meg azoknak a feltételeknek, amelyeket a véletlen változóra szabtunk, mert most minden számunkra ismeretlen mozgásfizika ott rejtőzik, és ezért nem mondhatjuk, hogy különböző időpontokban a modellhibák függetlenek egymást, és hogy az átlagértékük nulla. Ebben az esetben nagyjából a Kálmán -szűrő elmélet nem alkalmazható. De nem fogunk figyelni erre a tényre, hanem hülyén alkalmazzuk az összes kolosszális képletet, szemmel kiválasztva az együtthatókat, hogy a szűrt adatok aranyosak legyenek.
De mehet más, sokkal egyszerűbb módon is. Amint fentebb láttuk, a Kálmán -együttható mindig az érték felé stabilizálódik a növekedéssel. Ezért ahelyett, hogy az együtthatókat választanánk, és a Kálmán -együtthatót összetett képletek segítségével találnánk meg, ezt az együtthatót mindig állandónak tekinthetjük, és csak ezt az állandót választhatjuk ki. Ez a feltételezés szinte semmit sem ront. Először is, már illegálisan alkalmazzuk Kálmán elméletét, másodszor pedig a Kálmán -együttható gyorsan állandóvá stabilizálódik. Ennek eredményeként minden nagyon leegyszerűsödik. Nincs szükségünk képletekre Kalman elméletéből, csak meg kell találnunk egy elfogadható értéket, és be kell illesztenünk az iteratív képletbe:

A következő grafikon egy kitalált érzékelő adatait mutatja, kétféle módon szűrve. Feltéve, hogy semmit sem tudunk a jelenség fizikájáról. Az első módszer őszinte, Kalman elméletének minden képletével. A második pedig egyszerűsített, képletek nélkül.

Amint látjuk, a módszerek szinte azonosak. Kis különbség csak az elején figyelhető meg, amikor a Kálmán -együttható még nem stabilizálódott.

Vita

Amint láttuk, a Kálmán -szűrő fő ötlete, hogy olyan együtthatót találjon, amely lehetővé teszi a szűrt értéket

átlagosan a legkevésbé térne el a koordináta valós értékétől. Látjuk, hogy a szűrt érték az érzékelő leolvasásának és az előző szűrt értéknek a lineáris függvénye. Az előző szűrt érték pedig az érzékelő leolvasásának és az előző szűrt értéknek a lineáris függvénye. És így tovább, amíg a lánc teljesen ki nem bontakozik. Vagyis a szűrt érték attól függ mindenböl az előző szenzorok lineárisan:

Ezért a Kalman szűrőt lineáris szűrőnek nevezik.
Bizonyítható, hogy a Kalman szűrő a legjobb az összes lineáris szűrő közül. A legjobb abban az értelemben, hogy a szűrőhiba átlagos négyzete minimális.

Többdimenziós tok

A Kálmán -szűrő egész elmélete általánosítható a többdimenziós esetre. Az ottani képletek kissé ijesztőbbnek tűnnek, de a levezetésük ötlete ugyanaz, mint az egydimenziós esetben. Láthatja őket ebben a kiváló cikkben: http://habrahabr.ru/post/140274/.
És ebben a csodálatos videó- egy példa arra, hogyan kell ezeket használni.

A Wiener szűrők a legalkalmasabbak a folyamatok vagy általában a folyamatszakaszok (blokkfeldolgozás) feldolgozására. A szekvenciális feldolgozáshoz minden egyes órajelre vonatkozóan szükség van a jel aktuális becslésére, figyelembe véve a megfigyelési folyamat során a szűrőbemenetbe belépő információkat.

A Wiener szűréssel minden új jelminta az összes szűrőtömeg újraszámítását igényli. Jelenleg széles körben elterjedtek az adaptív szűrők, amelyekben a beérkező új információkat folyamatosan korrigálják a korábban készített jelértékelésen (célkövetés radarban, automatikus vezérlőrendszerek a vezérlésben stb.). Különösen érdekesek a Kalman -szűrőként ismert rekurzív típusú adaptív szűrők.

Ezeket a szűrőket széles körben használják az automatikus szabályozó- és vezérlőrendszerek vezérlőköreiben. Innen jelentek meg, amint ezt egy olyan sajátos terminológia bizonyítja, amelyet munkájuk leírására használnak, mint az államtér.

A neurális számítás gyakorlatában az egyik fő megoldandó feladat gyors és megbízható algoritmusok beszerzése a neurális hálózatok tanulásához. E tekintetben hasznos lehet lineáris szűrők használata a visszacsatolási hurokban. Mivel az oktatási algoritmusok iteratív jellegűek, az ilyen szűrőnek szekvenciális rekurzív becslőnek kell lennie.

Paraméterbecslési probléma

A statisztikai döntések elméletének egyik gyakorlati gyakorlati jelentőségű problémája a rendszerek állapotvektorainak és paramétereinek becslésének problémája, amelyet a következőképpen fogalmazunk meg. Tegyük fel, hogy meg kell becsülni a $ X $ vektorparaméter értékét, amely nem érhető el a közvetlen méréshez. Ehelyett egy másik $ Z $ paramétert mérnek, $ X $ függvényében. A becslési probléma a kérdés megválaszolása: mit lehet mondani $ X $ -ról $ Z $ ismeretében. Általában a $ X $ vektor optimális kiértékelési eljárása az értékelés minőségének elfogadott kritériumától függ.

Például a paraméterbecslés problémájának bayesi megközelítése megköveteli a priori teljes körű információt a becsült paraméter valószínűségi tulajdonságairól, ami gyakran lehetetlen. Ezekben az esetekben a legkisebb négyzetek (OLS) módszeréhez folyamodnak, amely sokkal kevesebb a priori információt igényel.

Tekintsük az OLS alkalmazását arra az esetre, amikor a $ Z $ megfigyelési vektor lineáris modellel kapcsolódik a $ X $ paraméterbecslő vektorhoz, és a megfigyelés $ V $ zajt tartalmaz, amely nincs összefüggésben a becsült paraméterrel:

$ Z = HX + V $, (1)

ahol $ H $ a megfigyelt mennyiségek és a becsült paraméterek közötti kapcsolatot leíró transzformációs mátrix.

A négyzet hibát minimalizáló $ X $ becslés a következőképpen íródott:

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

Hagyja, hogy a $ V $ zaj ne korreláljon, ebben az esetben a $ R_V $ mátrix csak az azonossági mátrix, és a becslés egyenlete egyszerűbbé válik:

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

A mátrix formában történő írás nagymértékben megtakarítja a papírt, de egyesek számára szokatlan lehet. A következő példa Yu. M. Korshunov "A kibernetika matematikai alapjai" című monográfiájából veszi mindezt.
A következő elektromos áramkör áll rendelkezésre:

A megfigyelt értékek ebben az esetben a $ A_1 = 1 A, A_2 = 2 A, V = 20 B $ eszközök leolvasásai.

Ezenkívül ismert az $ R = 5 $ Ohm ellenállás. A legjobb módon kell becsülni, a hiba minimális átlagos négyzetének kritériuma szempontjából $ I_1 $ és $ I_2 $ áramok értékeit. A legfontosabb itt az, hogy van némi összefüggés a megfigyelt értékek (műszer leolvasás) és a becsült paraméterek között. És ezt az információt kívülről hozzák.

Ebben az esetben ezek a Kirchhoff -törvények, a szűrés esetében (amelyet a továbbiakban tárgyalunk) - egy idősor autoregresszív modellje, amely feltételezi az aktuális érték függését az előzőektől.

Tehát a Kirchhoff -törvények ismerete, amelynek semmi köze a statisztikai döntések elméletéhez, lehetővé teszi a kapcsolat megteremtését a megfigyelt értékek és a becsült paraméterek között (akik tanulmányozták az elektrotechnikát - ellenőrizhetik, a többieknek hogy szavukat fogadják):

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

Ugyanez vektor formában:

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

Vagy $ Z = HX + V $, ahol

$$ 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 = \ start (vmatrix) \ xi_1 \\ \ xi_2 \\ \ xi_3 \ end (vmatrix) $$

Figyelembe véve az interferencia értékeit, amelyek nem korrelálnak egymással, megtaláljuk az I 1 és I 2 becslését a legkisebb négyzetek módszerével, a 3. képlet szerint:

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

Tehát $ I_1 = 5/6 = 0,833 A $; $ I_2 = 9/6 = 1,5 A $.

Szűrési feladat

A rögzített értékekkel rendelkező paraméterek becslésének problémájával szemben a szűrés problémájában a folyamatokat kell becsülni, vagyis meg kell találni az időről időre változó jel aktuális becsléseit, amelyeket torzít a zaj, és ezért nem lehet irányítani mérés. Általában a szűrési algoritmusok típusa a jel és a zaj statisztikai tulajdonságaitól függ.

Feltételezzük, hogy a hasznos jel az idő lassan változó függvénye, és az interferencia korrelálatlan zaj. A legkisebb négyzetek módszerét fogjuk használni, ismét a jel és az interferencia valószínűségi jellemzőiről szóló a priori információ hiánya miatt.

Először becslést kapunk a $ x_n $ aktuális értékről a $ z_n, z_ (n-1), z_ (n-2) \ dots z_ idősor legújabb értékeinek rendelkezésre álló $ k $ alapján (n- (k-1)) $. A megfigyelési modell ugyanaz, mint a paraméterbecslési feladatban:

Világos, hogy a $ Z $ egy oszlopvektor, amely a $ z_n, z_ (n-1), z_ (n-2) \ dots z_ (n- (k-1)) idősor megfigyelt értékeiből áll $, $ V $-vektoros interferencia $ \ xi _n, \ xi _ (n-1), \ xi_ (n-2) \ dots \ xi_ (n- (k-1)) $, torzítva az igazit jel. Mit jelentenek a $ H $ és $ X $ szimbólumok? Miről beszélhetünk például a $ X $ oszlopvektorról, ha csak egy becslést kell megadni az idősor aktuális értékéről? És hogy mit jelent a $ H $ transzformációs mátrix, egyáltalán nem világos.

Mindezekre a kérdésekre csak akkor lehet választ adni, ha figyelembe vesszük a jelgenerációs modell fogalmát. Vagyis szükség van az eredeti jel valamilyen modelljére. Ez érthető, mivel a jel és az interferencia valószínűségi jellemzőiről a priori információ hiányában csak feltételezésekre van szükség. Jövendőmondásnak nevezhetjük a kávézaccon, de a szakértők inkább más terminológiát választanak. "Hajszárítójukon" paraméteres modellnek hívják.

Ebben az esetben a modell paramétereit becsülik meg. A megfelelő jelgeneráló modell kiválasztásakor ne feledje, hogy bármely elemzési funkció kibővíthető egy Taylor sorozatban. A Taylor sorozat elképesztő tulajdonsága, hogy a függvény formáját a $ x $ a ponttól bármely véges távolságra lévő $ t $ egyedileg a függvény viselkedése határozza meg a $ x = a pont végtelenül kis szomszédságában $ (az első és magasabb rendű származékairól beszélünk).

Így a Taylor sorozat megléte azt jelenti, hogy az analitikai funkciónak belső szerkezete van, nagyon erős csatolással. Ha például a Taylor sorozat három tagjára szorítkozunk, akkor a jelgenerációs modell így fog kinézni:

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

Vagyis a (4) képlet a polinom egy adott sorrendjére (a példában ez egyenlő 2 -vel) kapcsolatot létesít a jel $ n $ -adik értéke között az időbeli sorrendben és a $ (ni) $ - th. Így a becsült állapotvektor ebben az esetben a tényleges becsült értéken kívül a jel első és második deriváltját is tartalmazza.

Az automatikus vezérlés elméletében az ilyen szűrőt másodrendű statisztikai szűrőnek nevezik. A $ H $ transzformációs mátrix ebben az esetben (a becslés az aktuális és $ k-1 $ korábbi minták alapján történik) így néz ki:

$$ H = \ begin (vmatrix) 1 & -k & k ^ 2/2 \\ - & - & - \\ 1 & -2 & 2 \\ 1 & -1 & 0.5 \\ 1 & 0 & 0 \ vége (vmatrix) $$

Mindezek a számok a Taylor -sorozatból származnak, feltételezve, hogy a szomszédos megfigyelt értékek közötti időintervallum állandó és 1.

Tehát feltételezéseink szerinti szűrési feladatot a paraméterek becslésének feladatára redukáltuk; ebben az esetben az elfogadott jelgenerációs modell paramétereit becsüljük meg. És a $ X $ állapotvektor értékeinek becslése ugyanazon képlet szerint történik:

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

Lényegében paraméteres becslési eljárást valósítottunk meg, amely a jelgenerálási folyamat autoregresszív modelljén alapul.

A 3 -as formula könnyen megvalósítható programszerűen, ehhez ki kell töltenie a $ H $ mátrixot és a $ Z $ megfigyelési vektoroszlopot. Ezeket a szűrőket ún véges memória szűrők, mivel az utolsó $ k $ megfigyeléseket használják a $ X_ (nem) $ jelenlegi becslés megszerzésére. Minden új megfigyelési óránál egy újat adnak hozzá a jelenlegi megfigyelési sorozathoz, és a régit elvetik. Ezt a minősítési folyamatot ún elhúzható ablak.

Növekvő memóriaszűrők

A véges memóriájú szűrők fő hátránya, hogy minden új megfigyelés után teljes újraszámítást kell végezni a memóriában tárolt összes adat felett. Ezenkívül a becslések számítását csak az első $ k $ megfigyelések eredményeinek összegyűjtése után lehet elkezdeni. Vagyis ezeknek a szűrőknek az átmeneti ideje hosszú.

Ennek a hátránynak a kiküszöbölése érdekében át kell váltani a tartós memóriaszűrőről a szűrővel növekvő memória... Egy ilyen szűrőben a megfigyelt értékek számának, amelyre a becslést készítik, egybe kell esnie az aktuális megfigyelés n számával. Ez lehetővé teszi a becslések beszerzését a megfigyelések számából kiindulva, amely megegyezik a $ X $ becsült vektor összetevőinek számával. Ezt pedig az elfogadott modell sorrendje határozza meg, vagyis az, hogy a Taylor sorozat hány tagját használják a modellben.

Ugyanakkor az n növekedésével javulnak a szűrő simító tulajdonságai, vagyis nő a becslések pontossága. E megközelítés közvetlen megvalósítása azonban a számítási költségek növekedésével jár. Ezért a növekvő memóriaszűrőket úgy valósítják meg visszatérő.

A tény az, hogy mire n már rendelkezünk $ X _ ((n-1) оц) $ becsléssel, amely minden korábbi megfigyelésről tartalmaz információt $ z_n, z_ (n-1), z_ (n-2) \ pontok z_ (n- (k-1)) $. A $ X_ (nоц) $ becslést a következő $ z_n $ megfigyelésből kapjuk, a $ X _ ((n-1)) (\ mbox (оц)) $ becslésben tárolt információk felhasználásával. Ezt az eljárást ismétlődő szűrésnek nevezik, és a következőkből áll:

  • a becslés szerint $ X _ ((n-1)) (\ mbox (оц)) $ megjósolja $ X_n $ becslését a 4 képlet segítségével $ i = 1 $: $ X _ (\ mbox (notsapriori)) = F_1X _ ((n-1) sc) $. Ez a priori becslés;
  • a jelenlegi megfigyelés $ z_n $ eredményei szerint ezt az a priori becslést valódi, azaz utólagosra alakítják át;
  • ez az eljárás minden lépésnél megismétlődik, kezdve $ r + 1 $ -tól, ahol $ r $ a szűrési sorrend.

Az ismétlődő szűrés végső formulája így néz ki:

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

hol a második rendű szűrőnk:

A növekvő memóriaszűrő, amely a Formula 6 szerint működik, a Kalman -szűrő néven ismert szűrési algoritmus különleges esete.

E képlet gyakorlati megvalósításakor emlékeznünk kell arra, hogy a benne foglalt a priori becslést a 4. képlet határozza meg, és a $ h_0 X _ (\ mbox (notspriori)) $ érték a $ vektor első összetevője X _ (\ mbox (notspriori)) $.

A növekvő memóriaszűrőnek van egy fontos tulajdonsága. Ha megnézzük a 6 képletet, akkor a végső pontszám az előrejelzett pontszámvektor és a korrekciós kifejezés összege. Ez a korrekció kicsi $ n $ esetén nagy, és csökken a $ n $ növekedésével, és nullára hajlik, mint $ n \ rightarrow \ infty $. Vagyis az n növekedésével a szűrő simító tulajdonságai nőnek, és a benne rejlő modell kezd uralkodni. De az igazi jel csak bizonyos területeken felelhet meg a modellnek, ezért az előrejelzés pontossága romlik.

Ennek leküzdése érdekében néhány USD -tól kezdődően tilalmat rendelnek el a korrekciós időszak további csökkentésére. Ez egyenértékű a szűrő sávszélességének megváltoztatásával, azaz kis n esetén a szűrő szélesebb (kevésbé inerciális), nagy n esetén tehetetlenné válik.

Hasonlítsa össze az 1. és a 2. ábrát. Az első ábrán a szűrő nagy memóriával rendelkezik, miközben jól simít, de keskeny sávja miatt a becsült pálya elmarad a valódiétól. A második ábrán a szűrőmemória kisebb, rosszabbul simít, de jobban követi a valós pályát.

Irodalom

  1. YM Koršunov "A kibernetika matematikai alapjai"
  2. A. V. Balakrishnan "Kálmán szűrési elmélet"
  3. VNFomin "Ismétlődő becslés és adaptív szűrés"
  4. C.F.N. Cowan, P.M. Adaptív szűrők megadása

A Random Forest az egyik kedvenc adatbányászati ​​algoritmusom. Először is hihetetlenül sokoldalú, regressziós és osztályozási problémák megoldására is használható. Keressen rendellenességeket, és válasszon előrejelzőket. Másodszor, ez egy olyan algoritmus, amelyet nagyon nehéz helytelenül alkalmazni. Egyszerűen azért, mert más algoritmusokkal ellentétben kevés konfigurálható paraméterrel rendelkezik. Lényegében meglepően egyszerű is. És ugyanakkor figyelemre méltó a pontossága miatt.

Mi az ötlet egy ilyen csodálatos algoritmus mögött? Az ötlet egyszerű: tegyük fel, hogy van egy nagyon gyenge algoritmusunk. Ha sok különböző modellt készítünk ezzel a gyenge algoritmussal, és átlagoljuk előrejelzéseik eredményét, akkor a végeredmény sokkal jobb lesz. Ez az úgynevezett együttes képzés a gyakorlatban. A véletlenszerű erdő algoritmusát ezért "véletlenszerű erdőnek" nevezik, a kapott adatokhoz sok döntési fát hoz létre, majd átlagolja előrejelzéseik eredményét. A fontos pont itt a véletlenszerűség eleme az egyes fák létrehozásakor. Végül is világos, hogy ha sok egyforma fát hozunk létre, akkor az átlagolásuk eredménye egy fa pontosságú lesz.

Hogyan működik? Tegyük fel, hogy van néhány bemeneti adatunk. Minden oszlop valamilyen paraméternek felel meg, minden sor valamilyen adatelemnek.

Véletlenszerűen kiválaszthatunk bizonyos számú oszlopot és sort a teljes adatkészletből, és ezek alapján döntési fát építhetünk.


2012. május 10., csütörtök

2012. január 12, csütörtök


Ez minden. A 17 órás repülésnek vége, Oroszország a tengerentúlon van. És egy hangulatos 2 hálószobás lakás ablakán keresztül San Francisco, a híres Szilícium-völgy, Kalifornia, USA néz ránk. Igen, ez az oka annak, hogy az utóbbi időben gyakorlatilag nem írtam. Költöztünk.

Az egész még 2011 áprilisában kezdődött, amikor telefonos interjút készítettem a Zyngában. Aztán minden olyan játéknak tűnt, aminek semmi köze a valósághoz, és el sem tudtam képzelni, hogy ennek mi lesz az eredménye. 2011 júniusában Zynga Moszkvába érkezett, és egy sor interjút készített, körülbelül 60 jelöltet vizsgáltak meg, akik sikeresen teljesítettek telefonos interjút, és közülük körülbelül 15 -öt választottak ki (nem tudom a pontos számot, valaki később meggondolta magát, valaki azonnal elutasította). Az interjú meglepően egyszerűnek bizonyult. Nincs programozási probléma, nincs trükkös kérdés a nyílások alakjával kapcsolatban, leginkább a beszédképességet tesztelték. A tudást pedig véleményem szerint csak felületesen értékelték.

És akkor kezdődött a trükk. Először vártuk az eredményeket, majd az ajánlatot, az LCA jóváhagyását, majd a vízumkérelem jóváhagyását, majd az USA -ból származó dokumentumokat, majd a nagykövetségen sorban állást, majd egy további ellenőrzést, majd Vízum. Néha úgy tűnt számomra, hogy kész vagyok mindent eldobni és gólt szerezni. Időnként kételkedtem abban, hogy szükségünk van -e erre az Amerikára, elvégre Oroszországban sem rossz. Az egész folyamat körülbelül hat hónapot vett igénybe, ennek eredményeként december közepén vízumokat kaptunk, és elkezdtünk készülni az indulásra.

Hétfőn volt az első munkanapom egy új helyen. Az irodában minden feltétel megteremtődik annak érdekében, hogy ne csak dolgozzon, hanem éljen is. Reggelit, ebédet és vacsorát saját szakácsainktól, egy csomó változatos ételt zsúfolva mindenfelé, edzőtermet, masszázst és még fodrászatot is. Mindez teljesen ingyenes az alkalmazottak számára. Sokan kerékpárral mennek dolgozni, és számos helyiség található a járművek tárolására. Általában soha nem találkoztam ilyesmivel Oroszországban. Mindennek azonban megvan a maga ára, azonnal figyelmeztettek minket, hogy sokat kell dolgoznunk. Ami a "sok" a mércéjük szerint, számomra nem világos.

Remélem azonban, hogy a sok munka ellenére belátható időn belül folytathatom a blogolást, és talán elmondhatok valamit az amerikai életről és programozói munkáról Amerikában. Várj és láss. Addig is mindenkinek boldog új évet és karácsonyt kívánok, és hamarosan találkozunk!


Használati példaként kinyomtatjuk az orosz vállalatok osztalékhozamát. Alapárként egy részvény záróárát vesszük a nyilvántartás lezárásának napján. Valamiért ez az információ nincs a trojka oldalán, és sokkal érdekesebb, mint az osztalék abszolút értékei.
Figyelem! A kód végrehajtása sokáig tart, mert minden promócióhoz kérést kell benyújtania a finam szerverekhez, és meg kell szereznie annak értékét.

Eredmény<- NULL for(i in (1:length(divs[,1]))){ d <- divs if (d$Divs>0) (próbáld meg ((idézetek)<- 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


Hasonlóképpen statisztikákat készíthet az elmúlt évekről.

A Kalman szűrő valószínűleg a legnépszerűbb szűrési algoritmus, amelyet a tudomány és a technológia számos területén használnak. Egyszerűsége és hatékonysága miatt megtalálható a GPS -vevőkben, az érzékelők leolvasóinak processzoraiban, a vezérlőrendszerek megvalósításában stb.

Az interneten sok cikk és könyv található a Kálmán -szűrőről (főleg angolul), de ezeknek a cikkeknek meglehetősen nagy a belépési küszöbe, sok homályos hely van, bár valójában ez egy nagyon világos és átlátható algoritmus. Megpróbálok erről egyszerű nyelven beszélni, a komplexitás fokozatos növekedésével.

Mire való?

Bármely mérőeszköznek van valamilyen hibája, nagyszámú külső és belső hatás befolyásolhatja, ami azt eredményezi, hogy a tőle származó információ zajos. Minél zajosabbak az adatok, annál nehezebb feldolgozni ezeket az információkat.

A szűrő egy adatfeldolgozó algoritmus, amely eltávolítja a zajt és a felesleges információkat. A Kálmán szűrőben lehetőség van a priori információk beállítására a rendszer jellegéről, a változók kapcsolatáról, és ennek alapján pontosabb becslést készíteni, de még a legegyszerűbb esetben is (előzetes információk megadása nélkül) ) kiváló eredményeket ad.

Tekintsük a legegyszerűbb példát - tegyük fel, hogy szabályoznunk kell az üzemanyag szintjét a tartályban. Ehhez egy kapacitív érzékelőt helyeznek a tartályba, nagyon könnyű karbantartani, de vannak hátrányai - például a feltöltött üzemanyagtól való függőség (az üzemanyag dielektromos állandója sok tényezőtől függ, pl. a hőmérsékleten), nagy hatással van a "göröngyösségre" a tartályban. Ennek eredményeként a belőle származó információk egy tipikus "fűrészt" képviselnek, tisztességes amplitúdóval. Az ilyen típusú érzékelőket gyakran telepítik nehéz bányászati ​​berendezésekre (ne tévessze meg a tartály térfogata):

Kalman szűrő

Térjünk el egy kicsit, és ismerkedjünk meg magával az algoritmussal. A Kalman -szűrő a rendszer dinamikus modelljét (például a mozgás fizikai törvényét), az ismert vezérlési műveleteket és számos egymást követő mérést használ az optimális állapotbecslés kialakításához. Az algoritmus két ismétlődő fázisból áll: előrejelzésből és korrekcióból. Először kiszámítják az állapot előrejelzését a következő pillanatban (figyelembe véve mérésük pontatlanságát). Másodszor, az érzékelő új információja korrigálja az előre jelzett értéket (figyelembe véve ezen információk pontatlanságát és zaját is):

Az egyenletek mátrix formában jelennek meg, ha nem ismeri a lineáris algebrát - ez rendben van, akkor lesz egy egyszerűsített változat mátrixok nélkül az esethez egy változóval. Egy változó esetén a mátrixok skaláris értékekké degenerálódnak.

Először értsük meg a jelölést: az alsó index az idő pillanatát jelöli: k - aktuális, (k -1) - előző, a mínuszjel a felső indexben azt jelenti, hogy megjósolta közbenső érték.

A változók leírását az alábbi képek mutatják be:

Lehet sokáig és fárasztóan leírni, hogy mit jelentenek mindezek a titokzatos átmeneti mátrixok, de véleményem szerint jobb, ha egy valós példán keresztül próbáljuk alkalmazni az algoritmust - hogy az absztrakt értékek valódi értelmet nyerjenek.

Próbáljuk meg működés közben

Térjünk vissza a példához az üzemanyagszint -érzékelővel, mivel a rendszer állapotát egy változó képviseli (a tartályban lévő üzemanyag mennyisége), a mátrixok a szokásos egyenletekbe bomlanak:
Folyamatmodell meghatározása
A szűrő alkalmazásához meg kell határozni a rendszer dinamikáját meghatározó változók mátrixait / értékeit, valamint az F, B és H méreteket:

F- a rendszer dinamikáját leíró változó, üzemanyag esetén - ez lehet olyan együttható, amely meghatározza az üzemanyag -fogyasztást alapjáraton a mintavételi idő alatt (az algoritmus lépései közötti idő). Az üzemanyag -fogyasztáson kívül azonban van üzemanyag -feltöltés is ... ezért az egyszerűség kedvéért ezt a változót 1 -nek vesszük (vagyis jelezzük, hogy az előre jelzett érték megegyezik az előző állapottal).

B- az ellenőrzési művelet alkalmazását meghatározó változó. Ha további információkkal rendelkezünk a motor fordulatszámáról vagy a gázpedál lenyomásának mértékéről, akkor ez a paraméter határozza meg, hogy az üzemanyag -fogyasztás hogyan változik a mintavételi idő alatt. Mivel modellünkben nincsenek ellenőrzési műveletek (nincs információ róluk), ezért B = 0 -t veszünk.

H- egy mátrix, amely meghatározza a mérések és a rendszer állapota közötti kapcsolatot, egyelőre magyarázat nélkül ezt a változót is 1 -nek vesszük.

Simító tulajdonságok meghatározása
R- mérési hiba a mérőműszerek tesztelésével és mérésük hibájának meghatározásával határozható meg.

Q- A folyamatzaj meghatározása nehezebb feladat, mivel meg kell határozni a folyamat szórását, ami nem mindig lehetséges. Mindenesetre ezt a paramétert választhatja a kívánt szűrési szint biztosításához.

Végrehajtás kódban
A fennmaradó érthetetlenség eloszlatása érdekében egy egyszerűsített algoritmust alkalmazunk a C # -ban (mátrixok és vezérlőműveletek nélkül):

osztály KalmanFilterSimple1D
{
public double X0 (get; private set;) // előre jelzett állapot
public double P0 (get; private set;) // megjósolt kovariancia

Nyilvános kettős F (get; private set;) // valós érték tényezője az előző valós értékhez képest
public double Q (get; private set;) // mérési zaj
public double H (get; private set;) // a mért érték tényleges értékű tényezője
public double R (get; private set;) // környezeti zaj

Nyilvános kettős állapot (get; private set;)
public double Covariance (get; privát szett;)

Nyilvános KalmanFilterSimple1D (dupla q, dupla r, dupla f = 1, dupla h = 1)
{
Q = q;
R = r;
F = f;
H = h;
}

Public void SetState (kettős állapot, kettős kovariancia)
{
Állam = állam;
Kovariancia = kovariancia;
}

Public void Correct (kettős adat)
{
// időfrissítés - előrejelzés
X0 = F * állapot;
P0 = F * Kovariancia * F + Q;

// mérésfrissítés - korrekció
var K = H * P0 / (H * P0 * H + R);
Állapot = X0 + K * (adatok - H * X0);
Kovariancia = (1 - K * H) * F;
}
}

// Alkalmazás ...

Var fuelData = GetData ();
var szűrt = új Lista ();

Var kalman = új KalmanFilterSimple1D (f: 1, h: 1, q: 2, r: 15); // halmaz F, H, Q és R
kalman.SetState (fuelData, 0,1); // Állítsa be az állapot és a kovariancia kezdeti értékeit
foreach (var d in fuelData)
{
kalman. Helyes (d); // Alkalmazza az algoritmust

Filtered.Add (kalman.State); // Az aktuális állapot mentése
}

Az ezen paraméterekkel végzett szűrés eredménye az ábrán látható (a simítás mértékének beállításához - megváltoztathatja a Q és R paramétereket):

A legérdekesebb dolog a cikk keretein kívül marad - a Kalman -szűrő alkalmazása több változóra, a köztük lévő kapcsolat beállítása és a nem megfigyelhető változók értékeinek automatikus megjelenítése. Megpróbálom folytatni a témát, amint lesz idő.

Remélem, hogy a leírás nem túl fárasztó és bonyolult, ha bármilyen kérdése vagy magyarázata van - üdvözöljük a megjegyzésekben)

A technológiai folyamatok automatizálásának folyamatában a mechanizmusok és egységek vezérléséhez különféle fizikai mennyiségek mérésével kell foglalkozni. Ez lehet folyadék vagy gáz nyomása és áramlási sebessége, sebessége, hőmérséklete és még sok más. A fizikai mennyiségek mérése analóg érzékelőkkel történik. Az analóg jel olyan adatjel, amelyben a reprezentatív paramétereket az idő függvénye és a lehetséges értékek folyamatos halmaza írja le. Az értéktér folytonosságából az következik, hogy a jelbe bevezetett interferencia megkülönböztethetetlen a keresett jeltől. Ezért a szükséges fizikai mennyiség rossz értéke kerül a vezérlőeszköz analóg bemenetére. Ezért szükséges az érzékelőből érkező jel szűrése.

Az egyik hatékony szűrési algoritmus a Kalman szűrő. A Kalman szűrő egy rekurzív szűrő, amely egy hiányos és zajos mérések sorozatával becsüli meg egy dinamikus rendszer állapotvektorát. A Kalman szűrő a rendszer dinamikus modelljét (például a mozgás fizikai törvényét), a vezérlési műveleteket és számos szekvenciális mérést használ az optimális állapotbecsléshez. Az algoritmus két ismétlődő fázisból áll: előrejelzésből és korrekcióból. Az első szakaszban kiszámítják az állapot előrejelzését a következő időpillanatban (figyelembe véve mérésük pontatlanságát). Másodszor, az érzékelőből származó új információk korrigálják az előre jelzett értéket (figyelembe véve ezen információk pontatlanságát és zajosságát is).

Az előrejelzés szakaszában a következők történnek:

  1. A rendszer állapotának előrejelzése:

hol van a rendszer jelenlegi állapotának előrejelzése; - az állapotok közötti átmenet mátrixa (a rendszer dinamikus modellje); - a rendszer állapotának előrejelzése az előző időpillanatban; - az ellenőrzési művelet alkalmazási mátrixa; - az előző pillanatban végzett ellenőrzési tevékenység.

  1. A hibakovariancia előrejelzése:

hol van a hiba előrejelzése; - hiba az előző pillanatban; - folyamatzaj kovariancia.

A kiigazítás szakaszában a következők történnek:

  1. Kálmán nyereség kiszámítása:

hol van a Kálmán nyereség; - mérési mátrix, amely a mérések és állapotok kapcsolatát mutatja; - mérési zaj kovariancia.

hol van a mérés az aktuális időben.

  1. Kovariancia hiba frissítése:

hol van az identitás mátrix.

Ha a rendszer állapotát egy változó írja le, akkor = 1, és a mátrixok rendes egyenletekbe degenerálódnak.

A Kalman szűrő hatékonyságának egyértelmű bemutatása érdekében kísérletet hajtottak végre az AVR PIC KY-037 hangerőszenzorral, amely az Arduino Uno mikrokontrollerhez van csatlakoztatva. Az 1. ábra grafikonon mutatja az érzékelő leolvasását szűrő nélkül (1. sor). A kaotikus ingadozások az érzékelő kimenetében zaj jelenlétére utalnak.

1. ábra Az érzékelő leolvasásának grafikonja szűrő alkalmazása nélkül

A szűrő alkalmazásához meg kell határozni a változók értékeit, és, amelyek meghatározzák a rendszer és a méretek dinamikáját. Vegyük és egyenlő 1, és egyenlő 0 -val, mivel a rendszerben nincsenek ellenőrzési műveletek. A szűrő simító tulajdonságainak meghatározásához ki kell számítani a változó értékét, valamint ki kell választani a paraméter értékét.

A változót a Microsoft Excel 2010 programban fogjuk kiszámítani. Ehhez ki kell számítani az érzékelő leolvasott mintájának szórását. = 0,62. a kívánt szűrési szinttől függően kerül kiválasztásra, akkor = 0,001. A 2. ábrán a második sor az érzékelő leolvasásának grafikonját mutatja behelyezett szűrővel.

2. ábra A szenzor leolvasásának grafikonja Kalman szűrővel

A grafikonból arra a következtetésre juthatunk, hogy a szűrő megbirkózott a zajszűrési feladattal, mivel egyensúlyi állapotban a szűrésen túlhaladó érzékelői értékek ingadozása jelentéktelen.

A Kálmán -szűrőnek azonban jelentős hátránya van. Ha az érzékelő által mért érték gyorsan változhat, a szűrt érzékelő leolvasása nem változik olyan gyorsan, mint a mért érték. A 3. ábra a Kalman -szűrő válaszát mutatja a mért érték ugrására.

3. ábra A Kálmán -szűrő reakciója a mért érték ugrására

A szűrő reakciója a mért érték ugrására elhanyagolhatónak bizonyult. Ha a mért érték jelentősen megváltozik, majd nem tér vissza az előző értékhez, akkor a szűrt érzékelői leolvasások csak jelentős idő elteltével felelnek meg a mért érték valós értékének, ami elfogadhatatlan a nagy teljesítményt igénylő automatikus vezérlőrendszerek esetében .

Az elvégzett kísérletből arra lehet következtetni, hogy a Kalman szűrőt célszerű használni az érzékelők leolvasásához kis sebességű rendszerekben.

Bibliográfia:

  1. GOST 17657-79. Adatátvitel. Kifejezések és meghatározások. - Moszkva: Szabványkiadó, 2005. - 2 p.
  2. Kálmán szűrő // Wikipédia. ... Frissítés dátuma: 2017.04.26. URL: http://ru.wikipedia.org/?oldid=85061599 (hozzáférés dátuma: 2017.05.21.).