Latest 0.2.0
Homepage https://github.com/ghenania/MGKalman
License MIT
Platforms ios 8.0, requires ARC
Dependencies MGMatrix
Frameworks Accelerate
Authors

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.

Latest podspec

{
    "name": "MGKalman",
    "version": "0.2.0",
    "summary": "An efficient and simple implementation of the Kalman filter in Objective C",
    "description": "MGKalman is an efficient and simple implementation of the Kalman filter in Objective C.",
    "homepage": "https://github.com/ghenania/MGKalman",
    "license": "MIT",
    "authors": {
        "Mohamed GHENANIA": "[email protected]"
    },
    "source": {
        "git": "https://github.com/ghenania/MGKalman.git",
        "tag": "0.2.0"
    },
    "platforms": {
        "ios": "8.0"
    },
    "requires_arc": true,
    "source_files": "Pod/Classes/**/*",
    "resource_bundles": {
        "MGKalman": [
            "Pod/Assets/*.png"
        ]
    },
    "frameworks": "Accelerate",
    "dependencies": {
        "MGMatrix": [
            "~> 0.2.0"
        ]
    }
}

Pin It on Pinterest

Share This