Git Product home page Git Product logo

mgkalman's Introduction

MGKalman

Version License Platform

How to

Kalman filter equations

    /*------------------------------------------*\
     |  Kalman model                              |
     |                                            |
     |  state quation                             |
     |  x(k) = A.x(k-1)+B.u(k)+w(k-1)             |
     |                                            |
     |  observations equation                     |
     |  z(k) = H.x(k)+y(k)                        |
     |                                            |
     |  prediction equations                      |
     |  x^(k) = A.x^(k-1) + B.u(k)                |
     |  P^(k) = A.P(k-1).A^T + Q                  |
     |                                            |
     |  correction equations                      |
     |  K(k) = P^(k).H^T . (H.P^(k).H^T + R)^-1   |
     |  x(k) = x^(k) + K(k).(z(k) - H*x^(k))      |
     |  P(k) = (I - K(k).H).P^(k)                 |
     |                                            |
     \*------------------------------------------*/

Easily instantiate Matrix

   // Kalman filter with order 2x2
    self.kalmanFilter= [MGKalman filterWithStateOrder:stateOrder observationOrder:observationOrder];
    
    
    // A matrix
    [_kalmanFilter setA:[MGMatrix identity:stateOrder]];
    
    /* H matrix */
    [_kalmanFilter setH:[MGMatrix rows:observationOrder columns:stateOrder values:
                         1.0,   0.0,
                         0.0,   1.0
                         ]];
    
    /* B Matrix */
    [_kalmanFilter setB:[MGMatrix rows:stateOrder columns:stateOrder]];
    
    // Q Matrix
    [_kalmanFilter setQ:[MGMatrix rows:stateOrder columns:stateOrder]];
    
    // R Matrix
    [_kalmanFilter setR:[MGMatrix rows:observationOrder columns:observationOrder values:
                         1.0,  0.0,
                         0.0,   1.
                         ]];
    
    
    // Po Matrix
    [_kalmanFilter setP_estimated:[MGMatrix rows:stateOrder columns:stateOrder values:
                                   1000.0,   0.0,
                                   0.0,   1000.0
                                   ]];
    
    // X(0)
    [_kalmanFilter setX_estimated:[MGMatrix rows:stateOrder columns:1 values:

Estimate and correct

    [_kalmanFilter estimateWithNewObservation:[MGMatrix rows:2 columns:1 values:
                                               z1,
                                               z2
                                               ]];

Usage

To run the example project, clone the repo, and run pod install from the Example directory first.

Requirements

  • Accelerate.Framework
  • iOS 8+
  • pod "MGMatrix"

Installation

MGKalman is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "MGKalman"

Author

Mohamed GHENANIA, [email protected]

License

MGKalman is available under the MIT license. See the LICENSE file for more info.

mgkalman's People

Contributors

ghenania avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.