An encapsulated solution that leaves you in control.
The key components of MIDvec are implemented hierarchically for optimal control and speed in your next embedded application.
MIDvec comes with a fully comprehensive help document describing how to use every single function in the library. It also comes with a source file full of use examples for all facets of the library, from initializing a vector to training an ANN to attain the image at the right.
Building and initializing an artificial neural net takes one function call. Feedforward and backpropagation are both each one function. ANNs can be saved and loaded as .txt files. ANNs of arbitrary layer and node count (that is, deep neural networks) can easily be synthesized and simulated with no added code complexity from the end user.
If you have considered integrating artificial or deep neural networks into your embedded systems yet, you may be under the impression that they are mathematically inaccessible to develop reliably and / or that reliable and proprietary libraries or systems for them are too expensive. Let the MIDvec library shatter that notion. As long as you have a cursory, high-level understanding of what a neural network does, the MIDvec system will do the heavy lifting for you. All you need to do is feed it training examples.
To the right and above is the output of an ANN trained to move a particle in a circle of radius 0.5 using MIDvec. The crosshairs denote randomly selected initial positions. Each successive point after each crosshair denotes a small step by that particle in a direction determined by the neural net. In this example it is visible that regardless of particle initial position the ANN forces the particle's movement to converge to a circular path of radius 0.5.
This particle in a circle is a simple example that can be quickly extrapolated to a potential embedded systems problem, such as Simultaneous Localization and Mapping (SLAM) for empirically developing some optimal vector field which defines navigation through space.
MIDvec provides a convenient image interface system for systematically generating and editing bitmaps. The plot above was made using MIDvec to plot complex numbers as particle locations. Plotting traces to bitmaps is as simple as a single function call. While some graphing tasks are easy to handle with other systems like Excel, MIDvec's image sub library opens the door for you to exhibit full control over complex graphing tasks.
Bitmaps are a simple, adaptable, frequently-occurring image format. While your desktop probably has more ways to plot a curve than you can count on both hands, your embedded system probably doesn't. What your embedded system sees or stores as an image is effortless to visualize on another platform.
Digital signal processing.
Convolution, correlation, FFT, and IFFT are all available in MIDvec. Generate an FIR filter impulse response (lowpass, highpass, bandpass or bandstop) using one line of code. Quickly develop and test communications systems concepts, or integrate the systems of this sub library with either of the above two sub libraries to tackle larger tasks such as pattern recognition or behavior optimization. Integration with the image library described above offers full control over signal analysis and comparison in time or frequency.
Embedded systems are a core user of DSP systems and tasks. Various embedded systems transduce physical signals in countless forms and depend on DSP to decipher their meaning. With the MIDvec embedded library, rapidly experimenting with DSP systems in an embedded context is effortless. Each primary function - Fourier transform, filter application, filter generation - is one function call away with its hyperparameters readily available.
As with any library that employs ML and DSP, complex numbers and vector operations must be convenient and neat to use. Menial vector operations such as sorting, zero-padding, printing, generating linearly spaced vectors, term by term operations - these are all tucked neatly into their own functions.