kramann.info
© Guido Kramann

Login: Passwort:










COACH2
1 Planung
2 Architektur
3 Anzeige
4 EEPROM
5 I2C
..5.1 MasterSendByte
..5.2 MasterSend2Bytes
..5.3 MasterReceiveByte
..5.4 MasterReceive2Bytes
6 UART
7 DFT
8 FFT
9 Planung2
10 Klassen
..10.1 AnzeigeTaster
..10.2 RS232
..10.3 MotorServo
..10.4 Drehgeber
..10.5 Sensor
..10.6 Funk
11 Adaption
..11.1 Programmiertechnik
..11.2 Evoopt
12 Fuzzy
..12.1 Uebungsaufgabe
..12.2 Fuzzygroesse
..12.3 Fuzzyset
..12.4 Lookuptable
13 Skript
..13.1 Funkkorrektur
..13.2 Skriptsprachen
..13.3 Anforderungen
..13.4 Agentensysteme
..13.5 Implementierung
..13.6 Experimente
14 Gesamtkonzept
..14.1 Skripterweiterung
..14.2 Makroverhalten
67 Echtzeitsysteme
..67.1 Einfuehrung
....67.1.1 Echtzeit
....67.1.2 Korrektheit
....67.1.3 Hardware
....67.1.4 Ziele
....67.1.5 Synchronprogramm
..67.2 Threads
....67.2.1 Java
....67.2.2 Synchronisierung
..67.3 COACH
....67.3.1 Kaskadenregler
....67.3.2 Zeitebene1
....67.3.3 Zeitebene2
....67.3.4 Zeitebene3
....67.3.5 Puck
....67.3.6 Puckschwarm
..67.4 RTAIlab
....67.4.1 Slax
....67.4.1 USB_Stick
....67.4.2 Sinus
..67.5 Semaphor
....67.5.1 Laufkatze
....67.5.2 Java
....67.5.3 Semaphor
..67.6 Audio
....67.6.1 wav
....67.6.2 Linux
..67.7 Lookup
....67.7.1 Fuzzy
....67.7.2 PWM
..67.8 NeuronaleNetze
....67.8.1 Neuron
....67.8.2 Backpropagation
....67.8.3 Umsetzung
....67.8.4 Winkelerkennung
..67.9 Internetprogrammierung
....67.9.1 Codegenerierung
....67.9.2 PHP_Programmierung
....67.9.3 PHP_OOP
....67.9.4 Java
....67.9.5 UDP
..67.10 DFT
..67.11 FFT
..67.12 Zustandsmaschine
..67.13 Fuzzy
....67.13.1 Fuzzylogik
....67.13.2 FuzzyRegler
....67.13.3 Uebung9
....67.13.5 Softwareentwicklung
......67.13.5.1 AgileSoftwareentwicklung
......67.13.5.2 FuzzyRegler
......67.13.5.3 Uebung
....67.13.6 Umsetzung
......67.13.6.1 FuzzyRegler
......67.13.6.2 Simulation
......67.13.6.3 Optimierung
......67.13.6.4 Uebung
....67.13.7 Haengependel
......67.13.7.1 Haengependel
......67.13.7.2 Simulation
......67.13.7.3 FuzzyRegler
......67.13.7.4 Optimierer
......67.13.7.5 Genetisch
....67.13.8 Information
....67.13.9 Energie

67.7 Verwendung von Lookup-Tabellen (LUT) zur Performance-Verbesserung von Programmen

Das Prinzip

Sind zur Bereitstellung von Ausgabewerten Berechnungen notwendig und handelt es sich um zeitkritische Anwendungen, so kann überlegt werden, ob Teile dieser Werte nicht vrausberechnet und als Tabelle bereitgestellt werden könnten.

Ein Speicherzugriff auf ein Array ist in der Regel wesentlich schneller, als irgendwelche mathematischen Operationen. Der Nachteil dieser Technik liegt in dem größeren Speicherbedarf der Anwendung.

Ein Zwischenstadium zwischen Lookup-Table und direkter Berechnung liegt in der Generierung und Verwendung von Lookup-Funktionen. Sind die zu bestimmenden Werte durch einfach zu berechnende Funktionen anzunähern, z.B. durch Polynome, kann dies zu einer erhöhten Berechnungsgeschwindigkeit führen, ohne mehr Arbeitsspeicher zu verbrauchen. Im einfachsten Fall werden die Werte zwischen zwei Lookup-Einträgen interpoliert. Anwendungsfälle: Ersatz von Simulationen durch Berechnungsfunktionen. Der Nachfolgezustand eines Einfachpendels ist beispielsweise eindeutig bestimmt durch seinen aktuellen Zustand und einer eventuell einwirkenden äußeren Kraft. Man könnte in einer gewissen Rasterung den Folgezustand zu allen erlaubten Kombinationen der Wirkgrößen bestimmen und statt der Simulation verwenden.

Interpolation

Ein einfacher naheliegender Weg die Werte einer mehrdimensionalen Lookup-Tabelle zu interpolieren, besteht darin die benachbarten Tabellenwerte einer aktuellen kontinuierlichen Eingangskombination mit ihrem euklidischen Abstand zu dieser Eingangskombination zu gewichten.

  • Dazu stelle man sich beispielsweise drei Eingangswerte als Achsen in einem dreidimensionalen Koordinatensystem vor.
  • Eine spezielle Eingangskombination ist dann ein Punkt in diesem Koordinatensystem (s. Bild unten, roter Kreis).
  • Die acht unmittelbar benachbarten Einträge in die Lookup-Tabelle sind als weitere Kreise im Bild unten eingezeichnet und mit Ziffern kodiert.
  • Der euklidische Abstand der Eingangskombination zu den Nachbarn ist als L111, L211, L121, usw. im Bild eingetragen.
  • Der interpolierte Wert A ergibt sich hier aus den benachbarten A111, A211, usw. folgendermaßen:
Interpolation eines Ausgangs resultierend aus der Lage des Eingangsvektors relativ zu bekannten Stützstellen.

Bild 67.7-1: Interpolation eines Ausgangs resultierend aus der Lage des Eingangsvektors relativ zu bekannten Stützstellen.

Räumliche Visualisierung eines Ausgangs, der von drei Eingängen abhängt.

Bild 67.7-2: Räumliche Visualisierung eines Ausgangs, der von drei Eingängen abhängt.