From f48b0575dcea1871bb043b3a6a7ddee256cc8e17 Mon Sep 17 00:00:00 2001 From: gurkenhabicht <34342412+gurkenhabicht@users.noreply.github.com> Date: Thu, 24 May 2018 17:36:16 +0200 Subject: [PATCH 1/3] Update Makefile --- src/ansi_c_implementation/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ansi_c_implementation/Makefile b/src/ansi_c_implementation/Makefile index 03f4af7..ff1ac74 100644 --- a/src/ansi_c_implementation/Makefile +++ b/src/ansi_c_implementation/Makefile @@ -5,5 +5,8 @@ all: NLMSvariants.c win: NLMSvariants.c gcc -o lms NLMSvariants.c +gdb: NLMSvariants.c + gcc -Wall -Wextra -pedantic -ggdb NLMSvariants.c + clean: $(RM) lms From 5f900080d17b13f9e296a059ff05dac1190c6009 Mon Sep 17 00:00:00 2001 From: gurkenhabicht <34342412+gurkenhabicht@users.noreply.github.com> Date: Thu, 24 May 2018 17:39:36 +0200 Subject: [PATCH 2/3] Delete Aufgabenstellung.md --- Aufgabenstellung.md | 131 -------------------------------------------- 1 file changed, 131 deletions(-) delete mode 100644 Aufgabenstellung.md diff --git a/Aufgabenstellung.md b/Aufgabenstellung.md deleted file mode 100644 index acecc6d..0000000 --- a/Aufgabenstellung.md +++ /dev/null @@ -1,131 +0,0 @@ -# Aufgabenstellung - -Aus der PDF entnommen mit der Auswahl an PVL-Themen - -### "Vergleich von linearen Prädiktionsstrategien (NLMSvariants)" - -Das Voraussagen von Signalwerten ist ein Schlüsselelement in modernen Kompressionssystemen. -Aber auch in anderen Anwendungsgebieten ist die Prädiktion von Ereignissen erforderlich. -Aufgabe ist es, ein Matlab/SciLab/Octave/C-Programm zu schreiben, das Varianten eines bestimmten -Prädiktionsverfahrens miteinander vergleicht. -Adaptive Prädiktionsfilter passen sich der Charakteristik der Signale an und gehören somit in den -Bereich des maschinellen Lernens. So genannte Least-Mean-Square-Filter (LMS) sind adaptive -Filter mit einer vergleichsweisen geringen Komplexität. Im Wesentlichen werden M vorangegangene -Signalwerte gewichtet überlagert, um einen Schätzwert für die aktuelle Position zu generieren. - -Xˉ [𝑛] = �𝑎𝑗[𝑛] ∙ 𝑥[𝑛 − 𝑗] - -Der Prädiktionsfehler lautet: e[𝑛] = 𝑥[𝑛] − 𝑥'[𝑛]. Um die Prädiktionsfehlerenergie zu minimieren -müssen die Filterkoeffizienten nachgeführt (aktualisiert) werden - -𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 * 𝑒[𝑛] * 𝑥[𝑛−𝑗] - -||𝐱[𝑛]|| -2 mit ||𝐱[𝑛]|| -2 = ∑ (𝑥[𝑛 − 𝑗]) 𝑀 2 -𝑗=1 - -während 0 < 𝜇 ≤ 1 die Lernrate ist. -Leider funktioniert das nur gut, wenn der Mittelwert von x[n] gleich Null ist. Für Bilder und auch -teilweise für Sprachsignale ist das nicht gegeben. Als Lösung kommen drei Varianten in Frage, -welche die obigen Formeln leicht abwandeln: - -1. lokalen Mittelwert abziehen - - 𝑥 -�[𝑛] = 𝑥̅[𝑛] + ∑ 𝑎𝑗[𝑛] ∙ (𝑥[𝑛 − 𝑗] − 𝑥̅[𝑛]) 𝑀 -𝑗=1 mit 𝑥̅[𝑛] = 1 -𝑀 ∑ 𝑥[𝑛 − 𝑗] 𝑀 -𝑗=1 -und - 𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 ∙ 𝑒[𝑛] ∙ -𝑥[𝑛−𝑗]−𝑥̅[𝑛] -||𝐱[𝑛]|| -2 mit ||𝐱[𝑛]|| -2 = ∑ (𝑥[𝑛 − 𝑗] − 𝑥�[𝑛]) 𝑀 2 -𝑗=1 - -2. Bezug auf direkten Vorgänger nehmen - -𝑥 -�[𝑛] = 𝑥[𝑛 − 1] + ∑ 𝑎𝑗[𝑛] ∙ (𝑥[𝑛 − 1] − 𝑥[𝑛 − 𝑗 − 1]) 𝑀 -𝑗=1 -und -𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 ∙ 𝑒[𝑛] ∙ -𝑥[𝑛−1]−𝑥[𝑛−𝑗−1] -||𝐱[𝑛]|| -2 mit ||𝐱[𝑛]|| -2 = ∑ (𝑥[𝑛 − 1] − 𝑥[𝑛 − 𝑗 − 1]) 𝑀 2 -𝑗=1 - -3. differentiellen Bezug auf Vorgänger nehmen - -𝑥 -�[𝑛] = 𝑥[𝑛 − 1] + ∑ 𝑎𝑗[𝑛] ∙ (𝑥[𝑛 − 𝑗] − 𝑥[𝑛 − 𝑗 − 1]) 𝑀 -𝑗=1 -und -𝑎𝑗[𝑛 + 1] = 𝑎𝑗[𝑛] + 𝜇 ∙ 𝑒[𝑛] ∙ -𝑥[𝑛−𝑗]−𝑥[𝑛−𝑗−1] -||𝐱[𝑛]|| -2 mit ||𝐱[𝑛]|| -2 = ∑ (𝑥[𝑛 − 𝑗] − 𝑥[𝑛 − 𝑗 − 1]) 𝑀 2 -𝑗=1 - -Das originale Verfahren und die drei Varianten sind zu implementieren und mit verschiedenen -Testsignalen (synthetisierte und reale, N>= 500) und verschiedene M zu prüfen. Als Gütekriterium -ist die mittlere Energie des Schätzfehlers 𝐸 = 1 -𝑁 - -� ∑ (𝑒[𝑛]) 𝑁 2 𝑛=1 heranzuziehen. Bei selbstgenerierten -Signalen könnte auch die Konvergenz der Filterkoeffizienten zu den richtigen Werten -untersucht werden. - -Weitere Unterstützung wird bei Bedarf gegeben. Alle Untersuchungen sind schriftlich zu dokumentieren. -Neben der schriftlichen Arbeit sind alle Quellen (Programmcode, Texte, Testsignale) -und Tools abzugeben, damit eine Reproduktion der Ergebnisse möglich ist. - -Teilaufgaben: -* Koordination -* Recherche -* Programmierung -* Dokumentation (Grundlagen, Methode, Änderungen am Quellcode, Kompressionsergebnisse) - - -## E-Mail Ergänzung zur Aufgabenstellung: - -Sehr geehrte Studierende, - -danke für die Wahl des Themas. - -Zur Themenstellung möchte ich Folgendes ergänzen: -Die drei Varianten sind jeweils in einer Schleife über alle -verfügbaren Signalwerte abzuarbeiten, wobei typischer Weise mit -Filterkoeffizienten a_j = 0 angefangen wird. -Abweichend davon ist es evtl. sinnvoll, a_1=1 zusetzen. - -Testsignale können Sie sich selbst generieren, wobei wir uns -hierüber noch abstimmen sollten. -Man könnte verschiedene Zeilen aus verschiedenen Bildern nehmen, -Sprachsignale aufzeichnen oder Signale synthetisch generieren: - -z.B. -x[0] = x[1] = x[2] =..= x[M] = 100; -for n = M+1: N-1 - x[n] = a_1 * x[n-1] + a_2 * x[n-2] + ..+ a_M *x[n-M] + -randn(1,1)*5; -end - -Die Koeffizienten des LMS-Filters müssten dann gegen die bei der -Synthese verwendeten Koeffizienten konvergieren -Achtung: bei Matlab beginnt das Indizieren mit 1 (statt 0). - -Bitte fangen Sie zeitnah an. -Falls es Unklarheiten zum Ablauf oder der Verfahrensweise gibt, -bitte per Email bei mir melden. -Da es gewisse Freiheitsgrade in der Bearbeitung gibt, wäre es sehr -sinnvoll, wenn Sie mir regelmäßig über den Stand der PVL berichten -und wir uns ggf. austauschen können. - -Mit freundlichen Grüßen -T.Strutz - From 6d8b553d8dd03db382af6abfeb88cdb65fa43dda Mon Sep 17 00:00:00 2001 From: gurkenhabicht <34342412+gurkenhabicht@users.noreply.github.com> Date: Thu, 24 May 2018 17:40:08 +0200 Subject: [PATCH 3/3] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index ffa3a6a..d1d6514 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ More information can be found inside the according folders. # Structure ``` -│ Aufgabenstellung.md │ README.md │ ├───bin