NLMSvariants/src/ansi_c_implementation
gurkenhabicht 69fcfadd5a -lm 2018-05-24 17:42:30 +02:00
..
Makefile -lm 2018-05-24 17:42:30 +02:00
NLMSvariants.c deleted dead code 2018-05-24 17:21:20 +02:00
README.md graphing is opt in now. 2018-05-24 11:02:00 +02:00
graphResults_template.html check 2018-05-16 12:34:39 +02:00
nlms_types.h updated 2018-05-22 17:03:42 +02:00

README.md

Installation

Use $ make or compile it anywhere else, $ make win does the trick on windows and cygwin/gitbash. However if you use Visual Studio use the C++ implementation in ../src/cpp_implementation. It's a carbon copy of the *.c file but VS wants to use a *.cpp file.

Features

This little piece of code compares 3 different implementations of a least mean square filter.

  • local mean
  • direct predecessor
  • differential predecessor

PPM files can be used for input at this iteration. Output will be generated as .txt files with predicted value generated by the filter and its error value as well as given actual value from the PPM file. Furthermore there is an output as an svg graph to compare the implementatiosn on a visual level. These graphical results are build from graphResults_template.html which creates the actual output to graphResults.html. Open this file to see the results. You can hide graphs by clicking on its name for better visibility.

Use $ ./lms -h for help.

Usage

There are a bunch of options you can predefine but do not have to. The only parameter needed is -i which is the inputfile.

Parameter Description StdVal
-i The inputfile, has to be PPM. none
-n Amount of input data used. 500
-w Size of M (window). 5
-c Choose RGB color channel, green has least noise. green
-l Learnrate of machine learning. 0.4
-g true include graph building. Choose for amount of input data lower than 1200. none
-s Seed randomizing weights. Choose for repoducability. time(NULL)

This code is ANSI compatible no POSIX, C99, C11 or GNU libs, because it had to be VS compatible . There are way easier methods like getline() or getopt(), I know ...