- RcdMathLib Documentation {#mainpage}
- RcdMathLib in a nutshell {#RcdMathLib-in-a-nutshell}
- Download and use RcdMathLib {#download-use-RcdMathLib}
- The quickest start {#the-quickest-start}
- Structure {#structure}
- Linear Algebra
- Non-Linear Algebra
- Localization
- examples
- doc
- Further information {#further-information}
RcdMathLib Documentation {#mainpage}
\author Zakaria Kasmi
- RcdMathLib Documentation {#mainpage}
- RcdMathLib in a nutshell {#RcdMathLib-in-a-nutshell}
- Download and use RcdMathLib {#download-use-RcdMathLib}
- The quickest start {#the-quickest-start}
- Structure {#structure}
- Further information {#further-information}
RcdMathLib in a nutshell {#RcdMathLib-in-a-nutshell}
RcdMathLib is an open-source library for numerical linear and non-linear algebra designed to match the requirements of resource-limited or embedded devices. RcdMathLib supports solving linear and non-linear equation systems. Furthermore, it provides general-purpose implemented methods that facilitate solving problems of regression smoothing and curve fitting. It also allows for calculating as well as optimizing a position on a mobile device.
Download and use RcdMathLib {#download-use-RcdMathLib}
The simplest way to use the RcdMathLib for resource-limited devices is to download the Elipse project (TODO). The following Eclipse project enables also the RcdMathLib for full-fledged platforms (TODO).
The quickest start {#the-quickest-start}
You can run RcdMathLib on most resource-limited such as the STM32 Discovery board as well as on a PC. Try it right now in your terminal window:
git clone git://github.com/RIOT-OS/RIOT.git # assumption: git is pre-installed
cd RcdMathLib/examples/linear_algebra/basic_operation/
make all
The example above shows how to use the basic operations of the RcdMathLib such as the vector or the matrix operations.
Structure {#structure}
This section walks you through RcdMathLib's structure to easily find your way around in RcdMathLib's code base.
RcdMathLib's source code is composed into three groups:
- Linear algebra
- Non-linear algebra
- Localization
In addition RcdMathLib includes various examples to familiarize the user with the software as well as an API to facilitate the use and the further development of the library.
The structural groups are projected onto the directory structure of RcdMathLib, where each of these groups resides in one or two directories in the main RcdMathLib directory.
The following list gives a more detailed description of each of RcdMathLib's top-level directories:
Linear Algebra
This directory contains functions that are specific to vector and matrix operations, and other algebraic operations. It provides functions to perform basic matrix operations such as matrix addition, multiplication, or transposition. It also provides algorithms for complex operations like matrix decomposition algorithms, algorithms to calculate the pseudo-inverse of a matrix, or methods to solve systems of linear equations. The linear algebra module is divided in the following sub-modules:
- Basic operations sub-module.
- Matrix decompositions sub-module.
- Pseudo-Inverse sub-module.
- Solve linear equations sub-module.
- Utilities sub-module.
See @ref linear_algebra module for further information and API documentations.
Non-Linear Algebra
The non-linear algebra module contains functions to solve multi-variant nonlinear equations as wells algorithms solving problems of regression smoothing and curve fitting. This module also enables enables the optimization of an approximate solution by using Non-linear Least Squares (NLS) methods such as modified Gauss--Newton (GN) or the Levenberg--Marquardt (LVM) algorithms. The non-linear algebra module is divided in the two following sub-modules:
- Solve non-linear equations sub-module.
- Optimization sub-module.
See here @ref non_linear_algebra module for further information.
Localization
The localization module contains functions to compute a position of a mobile device using distance measurements or DC-pulsed, magnetic signals. This module also includes optimization algorithms such as the Levenberg--Marquardt approach to optimize the calculated position. The localization module also involves a method to recognize and mitigate the multipath errors on the mobile station.
In the position_algos
sub-directory you can find the implementations of the
distance-based localization system (see the @ref distance_based module) as well as
the implementations of the DC-pulsed, magnetic position system (see the @ref magnetic_based
module). The pos_algos_common
sub-directory contains common localization algorithms like
the trilateration method (see the @ref pos_algos_common module). The optimization algorithms are
localted in the optimization
sub-directory providing the following optimization approaches:
- Gauss--Newton (GN) algorithm.
- Levenberg--Marquardt (LVM) algorithm.
- Multipath Distance Detection and Mitigation (MDDM) algorithm.
See the @ref localization module for more detailed information.
examples
Here you find a number of example applications that demonstrate certain features of RcdMathLib. The examples found in this directory is a good starting point for anyone who is new to RcdMathLib.
For more information best browse that directory and have a look at the
README.md
files that ship with each example.
To create your own application - here or anywhere else - see @ref creating-an-application
doc
The doc
directory contains the doxygen configuration and also contains the compiled doxygen
output after running make doc
.
Further information {#further-information}
- @ref getting-started
- @ref creating-an-application
- @ref creating-modules