Merge branch 'master' of https://github.com/FBRDNLMS/NLMSvariants
This commit is contained in:
commit
3b0c9ac3fc
Binary file not shown.
|
@ -0,0 +1,31 @@
|
|||
# README
|
||||
|
||||
### Short explenation of the c# .exe
|
||||
|
||||

|
||||
|
||||
1. Choose the algorithm u want to calculate on and press "start" or "enter"
|
||||
|
||||
2. Choose the number of pixels you want to go for
|
||||
|
||||
3. Clears the screen and reprints the actual values of your picture or predefined values
|
||||
|
||||
4. Choose the learnrate and window size you want, learnrate has to be over 0.0 and under or even 1.0.
|
||||
The window size has to be an integer.
|
||||
|
||||
5. Loads a picture, it has to be BMP, GIF, EXIF, JPG, PNG or TIFF
|
||||
|
||||
6. Check this for generating outputfiles in the same direktory you started your .exe in
|
||||
Outputfiles are : weights.txt, weights_after.txt, localMean|directPredecessorer|differentialPredecessorer.txt, results.txt
|
||||
|
||||
7. Chart where the algorithems output is displayed
|
||||
|
||||
|
||||

|
||||
|
||||
1. Displays the average error of the calculated algorithm
|
||||
|
||||
2. Displays the variance of the error of the calculated algorithm
|
||||
|
||||
3. The history of graphs displayed in the chart, it is possible to have graphs of all 3 LMS algorithems in the history.
|
||||
There is no way to hide graphs, simply use "Clear" and then calculate again.
|
Binary file not shown.
After Width: | Height: | Size: 73 KiB |
Binary file not shown.
After Width: | Height: | Size: 151 KiB |
|
@ -1,3 +1,10 @@
|
|||
/*
|
||||
===========================================================================
|
||||
|
||||
Created by Kevin Becker on 19.04.2018
|
||||
|
||||
===========================================================================
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
@ -37,11 +44,52 @@ namespace NMLS_Graphisch
|
|||
*
|
||||
*---------------------------------------------------*/
|
||||
|
||||
private void GO_btn_Click(object sender, EventArgs e)
|
||||
private void Start_btn_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
/* Initializing the chart to display all values */
|
||||
/* Initializing NumberOfSamples with the choosen pixelcount */
|
||||
NumberOfSamples = Int32.Parse(comboBox_pixel.SelectedItem.ToString());
|
||||
|
||||
/* Initializing the weights */
|
||||
|
||||
w = new double[windowSize, NumberOfSamples];
|
||||
for (int i = 0; i < NumberOfSamples; i++)
|
||||
{
|
||||
for (int k = 0; k < windowSize; k++)
|
||||
{
|
||||
w[k, i] = rnd.NextDouble();
|
||||
}
|
||||
}
|
||||
|
||||
/* Initializing the learnrate with the choosen one */
|
||||
txtBox_learnrate.Text = txtBox_learnrate.Text.Replace(".", ",");
|
||||
try
|
||||
{
|
||||
learnrate = Double.Parse(txtBox_learnrate.Text);
|
||||
}
|
||||
catch(Exception exep)
|
||||
{
|
||||
MessageBox.Show("Please choose a learnrate between >0.0 and <=1.0");
|
||||
return;
|
||||
}
|
||||
|
||||
while(learnrate <= 0.0 || learnrate > 1.0)
|
||||
{
|
||||
MessageBox.Show("Please choose a learnrate between >0.0 and <=1.0");
|
||||
var myValue = Microsoft.VisualBasic.Interaction.InputBox("Choose a learnrate between >0.0 and <=1.0", "Learnrate", "0,8");
|
||||
if(myValue == "")
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
learnrate = Double.Parse(myValue);
|
||||
}
|
||||
}
|
||||
|
||||
/* Initializing the windowsize with the choosen one*/
|
||||
|
||||
/* Initializing the chart to display all values */
|
||||
chart_main.ChartAreas[0].AxisX.Maximum = NumberOfSamples;
|
||||
chart_main.ChartAreas[0].AxisY.Maximum = 300;
|
||||
chart_main.ChartAreas[0].AxisY.Minimum = -100;
|
||||
|
@ -53,7 +101,7 @@ namespace NMLS_Graphisch
|
|||
{
|
||||
for (int k = 0; k < windowSize; k++)
|
||||
{
|
||||
File.AppendAllText("weights.txt",
|
||||
File.AppendAllText(String.Format("weights_{0}.txt", comboBox_algorithem.SelectedItem.ToString().Replace(" ","")),
|
||||
String.Format("[{0}][{1}] {2}\n", k, i, Math.Round(w[k, i], 2).ToString()),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
@ -66,15 +114,15 @@ namespace NMLS_Graphisch
|
|||
switch (comboBox_algorithem.SelectedItem.ToString())
|
||||
{
|
||||
|
||||
case "lokaler Mittelwert":
|
||||
case "local mean":
|
||||
series = localMean();
|
||||
break;
|
||||
|
||||
case "direkter Vorgänger":
|
||||
case "direct predecessor":
|
||||
series = directPredecessor();
|
||||
break;
|
||||
|
||||
case "differenzieller Vorgänger":
|
||||
case "differential predecessor":
|
||||
series = diffPredecessor();
|
||||
break;
|
||||
|
||||
|
@ -104,7 +152,7 @@ namespace NMLS_Graphisch
|
|||
{
|
||||
for (int k = 0; k < windowSize; k++)
|
||||
{
|
||||
File.AppendAllText("weights_after.txt",
|
||||
File.AppendAllText(String.Format("weights_after_{0}.txt", comboBox_algorithem.SelectedItem.ToString().Replace(" ", "")),
|
||||
String.Format("[{0}][{1}] {2}\n", k, i, Math.Round(w[k, i], 2).ToString()),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
@ -133,8 +181,8 @@ namespace NMLS_Graphisch
|
|||
x_error[0] = 0;
|
||||
|
||||
/* Inizilazing series for the main chart */
|
||||
Series localMeanError = new Series("Lokaler Mittelwert Error");
|
||||
Series localMeanPredict = new Series("Lokaler Mittelwert Prediction");
|
||||
Series localMeanError = new Series("Local Mean Error");
|
||||
Series localMeanPredict = new Series("Local Mean Prediction");
|
||||
localMeanError.ChartType = SeriesChartType.Spline;
|
||||
localMeanPredict.ChartType = SeriesChartType.Spline;
|
||||
|
||||
|
@ -155,7 +203,7 @@ namespace NMLS_Graphisch
|
|||
|
||||
double x_pred = 0.0;
|
||||
double[] x_array = _x;
|
||||
double x_actual = _x[x_count + 1];
|
||||
double x_actual = _x[x_count];
|
||||
|
||||
/* Prediction algorithem */
|
||||
|
||||
|
@ -169,11 +217,11 @@ namespace NMLS_Graphisch
|
|||
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("lokalerMittelwert.txt",
|
||||
File.AppendAllText("localMean.txt",
|
||||
String.Format("{0}. X_pred {1}\n", x_count, x_pred),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.AppendAllText("lokalerMittelwert.txt",
|
||||
File.AppendAllText("localMean.txt",
|
||||
String.Format("{0}. X_actual {1}\n", x_count, x_actual),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
@ -187,7 +235,7 @@ namespace NMLS_Graphisch
|
|||
/* Output */
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("lokalerMittelwert.txt",
|
||||
File.AppendAllText("localMean.txt",
|
||||
String.Format("{0}. X_error {1}\n\n", x_count, x_error[x_count]),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
@ -234,8 +282,8 @@ namespace NMLS_Graphisch
|
|||
/* Output the result */
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("ergebnisse.txt",
|
||||
String.Format("Quadratische Varianz(x_error): {0}\n Mittelwert(x_error): {1}\n\n", varianz, mittel),
|
||||
File.AppendAllText("results_localMean.txt",
|
||||
String.Format("Squared variance(x_error): {0}\n Average(x_error): {1}\n\n", varianz, mittel),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
||||
|
@ -259,8 +307,8 @@ namespace NMLS_Graphisch
|
|||
int x_count = 0;
|
||||
|
||||
/* Inizilazing series for the main chart */
|
||||
Series directPredecessorError = new Series("Direkter Vorgänger Error");
|
||||
Series directPredecessorPrediction = new Series("Direkter Vorgänger Prediction");
|
||||
Series directPredecessorError = new Series("Direct predecessor Error");
|
||||
Series directPredecessorPrediction = new Series("Direct predecessor Prediction");
|
||||
directPredecessorError.ChartType = SeriesChartType.Spline;
|
||||
directPredecessorPrediction.ChartType = SeriesChartType.Spline;
|
||||
|
||||
|
@ -268,7 +316,7 @@ namespace NMLS_Graphisch
|
|||
while (x_count < NumberOfSamples - 1)
|
||||
{
|
||||
double x_pred = 0.0;
|
||||
double x_actual = _x[x_count + 1];
|
||||
double x_actual = _x[x_count];
|
||||
|
||||
if (x_count > 0)
|
||||
{
|
||||
|
@ -285,11 +333,11 @@ namespace NMLS_Graphisch
|
|||
/* If output is checked a file is produced with prediction, actual and the error */
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("direkterVorgaenger.txt",
|
||||
File.AppendAllText("directpredecessor.txt",
|
||||
String.Format("{0}. X_pred {1}\n", x_count, x_pred),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.AppendAllText("direkterVorgaenger.txt",
|
||||
File.AppendAllText("directpredecessor.txt",
|
||||
String.Format("{0}. X_actual {1}\n", x_count, x_actual),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
@ -300,7 +348,7 @@ namespace NMLS_Graphisch
|
|||
/* Output */
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("direkterVorgaenger.txt",
|
||||
File.AppendAllText("directpredecessor.txt",
|
||||
String.Format("{0}. X_error {1}\n\n", x_count, x_error[x_count]),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
@ -350,8 +398,8 @@ namespace NMLS_Graphisch
|
|||
/* Output the result */
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("ergebnisse.txt",
|
||||
String.Format("Quadratische Varianz(x_error): {0}\n Mittelwert(x_error): {1}\n\n", varianz, mittel),
|
||||
File.AppendAllText("results_directpredecessor.txt",
|
||||
String.Format("Squared variance(x_error): {0}\n Average(x_error): {1}\n\n", varianz, mittel),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
||||
|
@ -375,8 +423,8 @@ namespace NMLS_Graphisch
|
|||
int x_count = 0;
|
||||
|
||||
/* Inizilazing series for the main chart */
|
||||
Series diffPredecessorError = new Series("Differenzieller Vorgänger Error");
|
||||
Series diffPredecessorPrediction = new Series("Differenzieller Vorgänger Prediction");
|
||||
Series diffPredecessorError = new Series("Differential predecessor Error");
|
||||
Series diffPredecessorPrediction = new Series("Differential predecessor Prediction");
|
||||
diffPredecessorError.ChartType = SeriesChartType.Spline;
|
||||
diffPredecessorPrediction.ChartType = SeriesChartType.Spline;
|
||||
|
||||
|
@ -384,7 +432,7 @@ namespace NMLS_Graphisch
|
|||
while (x_count < NumberOfSamples - 1)
|
||||
{
|
||||
double x_pred = 0.0;
|
||||
double x_actual = _x[x_count + 1];
|
||||
double x_actual = _x[x_count];
|
||||
if (x_count > 0)
|
||||
{
|
||||
|
||||
|
@ -401,11 +449,11 @@ namespace NMLS_Graphisch
|
|||
/* If output is checked a file is produced with prediction, actual and the error */
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("differenziellerVorgaenger.txt",
|
||||
File.AppendAllText("differentialpredecessor .txt",
|
||||
String.Format("{0}. X_pred {1}\n", x_count, x_pred),
|
||||
Encoding.UTF8);
|
||||
|
||||
File.AppendAllText("differenziellerVorgaenger.txt",
|
||||
File.AppendAllText("differentialpredecessor.txt",
|
||||
String.Format("{0}. X_actual {1}\n", x_count, x_actual),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
@ -416,7 +464,7 @@ namespace NMLS_Graphisch
|
|||
/* Output */
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("differenziellerVorgaenger.txt",
|
||||
File.AppendAllText("differentialpredecessor.txt",
|
||||
String.Format("{0}. X_error {1}\n\n", x_count, x_error[x_count]),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
@ -468,8 +516,8 @@ namespace NMLS_Graphisch
|
|||
/* Output the result */
|
||||
if (checkBox_output.Checked)
|
||||
{
|
||||
File.AppendAllText("ergebnisse.txt",
|
||||
String.Format("Quadratische Varianz(x_error): {0}\n Mittelwert(x_error): {1}\n\n", varianz, mittel),
|
||||
File.AppendAllText("results_differentialpredecessor.txt",
|
||||
String.Format("Squared variance(x_error): {0}\n Average(x_error): {1}\n\n", varianz, mittel),
|
||||
Encoding.UTF8);
|
||||
}
|
||||
|
||||
|
@ -484,15 +532,24 @@ namespace NMLS_Graphisch
|
|||
*---------------------------------------------------*/
|
||||
private void Form1_Load(object sender, EventArgs e)
|
||||
{
|
||||
/* Initializing some diffrent combo-/textboxes and the main chart */
|
||||
comboBox_algorithem.SelectedIndex = 0;
|
||||
comboBox_pixel.SelectedIndex = 0;
|
||||
// sets an eventhandler on the gotFocus event
|
||||
txtBox_learnrate.GotFocus += new EventHandler(txtBox_learnrate_gotFocus);
|
||||
txtBox_learnrate.Text = ">0.0 & <=1.0";
|
||||
// sets an eventhandler on the gotFocus event
|
||||
txtBox_windowSize.GotFocus += new EventHandler(txtBox_windowSize_gotFocus);
|
||||
chart_main.Series.Clear();
|
||||
Series x_actual = new Series("Actual x Value");
|
||||
x_actual.ChartType = SeriesChartType.Spline;
|
||||
|
||||
// sets the accept button to Start_btn
|
||||
this.AcceptButton = Start_btn;
|
||||
|
||||
/* Initializing weights and actual values
|
||||
In case no picture is loaded, actual values are generated
|
||||
And printing them on a chart */
|
||||
Then printing them on a chart */
|
||||
for (int i = 0; i < NumberOfSamples; i++)
|
||||
{
|
||||
_x[i] += ((255.0 / NumberOfSamples) * i);
|
||||
|
@ -505,6 +562,30 @@ namespace NMLS_Graphisch
|
|||
chart_main.Series.Add(x_actual);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------
|
||||
* txtBox_learnrate_gotFocus()
|
||||
*
|
||||
* sets the default text to "" if gotFocus is raised
|
||||
*
|
||||
* -------------------------------------------------*/
|
||||
|
||||
protected void txtBox_learnrate_gotFocus(Object sender, EventArgs e)
|
||||
{
|
||||
txtBox_learnrate.Text = "";
|
||||
}
|
||||
|
||||
/*--------------------------------------------------
|
||||
* txtBox_windowSize_gotFocus()
|
||||
*
|
||||
* sets the default text to "" if gotFocus is raised
|
||||
*
|
||||
* -------------------------------------------------*/
|
||||
|
||||
protected void txtBox_windowSize_gotFocus(Object sender, EventArgs e)
|
||||
{
|
||||
txtBox_windowSize.Text = "";
|
||||
}
|
||||
|
||||
/*---------------------------------------------------
|
||||
* Clear_btn_Click()
|
||||
*
|
||||
|
@ -594,6 +675,28 @@ namespace NMLS_Graphisch
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*---------------------------------------------------
|
||||
* txtBox_windowSize_TextChanged()
|
||||
*
|
||||
* proofs if window size textbox is a valid number
|
||||
*
|
||||
*---------------------------------------------------*/
|
||||
|
||||
private void txtBox_windowSize_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(txtBox_windowSize.Text.Length > 0)
|
||||
{
|
||||
windowSize = Int32.Parse(txtBox_windowSize.Text);
|
||||
}
|
||||
}catch(Exception excep)
|
||||
{
|
||||
MessageBox.Show("Not a valid window size");
|
||||
txtBox_windowSize.Text = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue