DE102013208299A1 - Verfahren zum Durchsuchen einer Nachschlagetabelle - Google Patents

Verfahren zum Durchsuchen einer Nachschlagetabelle Download PDF

Info

Publication number
DE102013208299A1
DE102013208299A1 DE102013208299A DE102013208299A DE102013208299A1 DE 102013208299 A1 DE102013208299 A1 DE 102013208299A1 DE 102013208299 A DE102013208299 A DE 102013208299A DE 102013208299 A DE102013208299 A DE 102013208299A DE 102013208299 A1 DE102013208299 A1 DE 102013208299A1
Authority
DE
Germany
Prior art keywords
vector
index
value
calculated
xin
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102013208299A
Other languages
English (en)
Inventor
Gabriel Gallegos-Lopez
Michael H. Kinoshita
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GM Global Technology Operations LLC
Original Assignee
GM Global Technology Operations LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GM Global Technology Operations LLC filed Critical GM Global Technology Operations LLC
Publication of DE102013208299A1 publication Critical patent/DE102013208299A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Verfahren und eine Vorrichtung sind geliefert, in denen ein berechneter Vektorindex (CVI) basierend auf einem Eingabewert, nach dem innerhalb eines Indexvektors einer Nachschlagetabelle gesucht wird, erzeugt/berechnet werden kann. Wenn der CVI größer als eine Länge eines Indexvektors ist, kann der CVI erneut berechnet werden, um einen erneut berechneten Vektorindex (RVI) zu erzeugen. Wenn bestimmt wird, dass der Wert des CVI korrekt ist, oder wenn der RVI erzeugt wird, kann eine Interpolationsroutine für einen linear indizierten Indexvektor unter Verwendung eines gegenwärtig berechneten Vektorindex (z. B. entweder der CVI oder der RVI) ausgeführt werden, um einen interpolierten Ausgabewert zu bestimmen, der dem Eingabewert entspricht. Wenn im Gegensatz dazu bestimmt wird, dass der Wert des CVI inkorrekt ist, kann eine Interpolationsroutine für einen stückweise indizieren Indexvektor ausgeführt werden, um den interpolierten Ausgabewert zu bestimmen.

Description

  • TECHNISCHES GEBIET
  • Das technische Gebiet betrifft im Allgemeinen Nachschlagetabellen und genauer das Durchsuchen einer Nachschlagetabelle nach einem Vektorindex, der einem Eingabewert entspricht, und das Bestimmen eines Ausgabewertes, der dem Eingabewert entspricht.
  • HINTERGRUND
  • Systeme, wie beispielsweise mechanische und/oder elektronische Systeme, werden oft analysiert, um mathematische Verhältnisse unter den Eingängen, Zuständen und Ausgängen des Systems zu bestimmen. Sobald diese Informationen erhalten werden, können dieselben verwendet werden, um Nachschlagetabellen zu erzeugen, die das Verhalten des Systems charakterisieren. Eine Nachschlagetabelle ist eine Datenstruktur, wie beispielsweise ein Array oder assoziatives Array, die oft verwendet wird, um eine Laufzeitberechnung durch eine einfachere Arrayindizieroperation zu ersetzen.
  • Nachschlagetabellen können durch das Sammeln von Eingabe- und Ausgabedaten für ein statisches oder dynamisches System erzeugt werden. Dies kann künstlich, über Simulation, oder experimentell durch Prüfen eines tatsächlichen Systems erfolgen. Bei einem System mit M Eingängen und N Ausgängen kann ein Satz von N M-dimensionalen Nachschlagetabellen verwendet werden, um das Verhalten des Systems zu charakterisieren. Für ein System mit N Ausgabedatenwerten werden N Arrayelemente lokalisiert und die entsprechenden Daten an diesen Orten gespeichert.
  • Sobald ein Satz Nachschlagetabellen basierend auf Systemeingabedaten und Systemausgabedaten erzeugt ist, kann derselbe in einem Computerspeicher gespeichert werden, so dass das entsprechende Array der Werte bei Anwendungen ohne die Notwendigkeit des Regenerierens der Systemsausgabedaten verwendet werden kann. Zum Lokalisieren der adäquaten Arrayelemente in der Nachschlagetabelle werden nur die Eingabedaten erfordert und die ungefähren Systemausgabedaten können aus diesen Orten ausgelesen werden. An sich kann die Verwendung von Nachschlagetabellen erhebliche Einsparungen hinsichtlich der Verarbeitungszeit liefern, da das Abrufen eines Wertes aus einem Speicher oft schneller als das Durchlaufen einer extensiven Berechnung oder Eingabe/Ausgabeoperation in Echtzeit ist.
  • Nachschlagetabellen erfassen ein Eingabe-Ausgabe-Mapping des Systems in Form von numerischen Daten, die an vorbestimmten Arrayorten gespeichert werden können. Eine Nachschlagetabelle implementiert ein Array von Tabellendaten (manchmal als „Elemente” bezeichnet) und ordnet die Tabellendaten/Tabellenelemente einem Bereich indizierter Werte zu, an dem die Tabelle für einen gegebenen Index evaluiert wird. Diese indizierten Werte dienen zum Unterteilen des Tabelleneingaberaums in Bereiche, die als „Zellen” bezeichnet werden, wobei jede Zelle durch zwei „Haltepunkte” begrenzt ist, um einen Intervall oder ein Segment zu definieren, in den/das ein Eingabewert fallen kann.
  • Eine eindimensionale Nachschlagetabelle enthält einen Indexvektor und einen entsprechenden Ausgabevektor. Jeder Vektor besteht aus einer Anzahl von Zellen, die zum Speichern von Werten verwendet werden. Der Indexvektor weist einen Satz diskreter Eingabewerte auf und der Ausgabevektor enthält eine Reihe entsprechender Ausgabewerte, so dass jede Zelle des Indexvektors mit einer entsprechenden Zelle des Ausgabevektors assoziiert wird. Alle Werte des Indexvektors und Ausgabevektors werden mit einem entsprechenden Vektorindex, der üblicherweise ein ganzzahliger Wert ist, assoziiert oder bei demselben evaluiert.
  • In den meisten Fällen kann ein Eingabewert in die Nachschlagetabelle überall innerhalb einer bestimmten Zelle des Indexvektors liegen (z. B. kann der Eingabewert zwischen zwei Haltepunkten liegen, die eine bestimmte Zelle eines Indexvektors definieren). Für einen bestimmten Indexvektor kann eine Suche durchgeführt werden, um die zwei Zellen des Indexvektors zu identifizieren, die hinsichtlich des Wertes dem Eingabewert am nächsten sind. Beispielsweise definiert ein Prozessor den Ort des Eingabewertes relativ zu einem der Intervalle, um die Zellen des Eingabevektors und die entsprechenden numerischen Tabellendatenwerte derselben zu identifizieren.
  • Sobald die Zellen des Indexvektors identifiziert wurden, sind die entsprechenden Zellen eines Ausgabevektors bekannt. Der Prozessor kann dann einen Interpolationsalgorithmus basierend auf den Werten der Zellen ausführen, die derselbe identifiziert hat, um zwischen Tabellendatenwerten zu interpolieren, um einen Ausgabewert zu bestimmen, der dem Eingabewert entspricht.
  • Ein Indexvektor kann entweder linear oder stückweise indiziert sein. Für einen linear indizierten Indexvektor ist der Unterschied zwischen jeglichen zwei aufeinanderfolgenden Zellen immer der Gleiche. Im Gegensatz dazu ist für einen stückweise indizierten Indexvektor der Indexvektor auf eine „stückweise” Art indiziert, was bedeutet, dass Zellen manchmal ungleichmäßig beabstandet sind, so dass ein Unterschied zwischen einer Gruppe zwei aufeinanderfolgender Zellen des stückweise indizierten Indexvektors anders als ein Unterschied zwischen einer anderen Gruppe zwei aufeinanderfolgender Zellen des stückweise indizierten Indexvektors ist.
  • Das Verfahren zum Durchsuchen des Indexvektors zum Identifizieren der Zellen des Indexvektors (die hinsichtlich des Wertes dem Eingabewert am nächsten sind) variiert abhängig davon, ob der Indexvektor linear oder stückweise indiziert ist. Wenn bekannt ist, dass der Indexvektor linear ist, kann beispielsweise ein Suchalgorithmus eingesetzt werden, bei dem die lineare Interpolation unter Verwendung der Steigung basierend auf dem Unterschied zwischen einer Gruppe zwei aufeinanderfolgender Zellen und eines berechneten Index berechnet wird. Im Gegensatz dazu kann, wenn bekannt ist, dass der Indexvektor stückweise indiziert ist, ein Suchalgorithmus eingesetzt werden, bei dem der Indexvektor vom Beginn des Indexvektors sequentiell (d. h. auf einer zellenweisen Basis) durchsucht wird, bis der Index gefunden wird. Dieses Verfahren zum Durchsuchen eines stückweise indizierten Indexvektors verbraucht einen erheblichen Betrag des Prozessordurchsatzes.
  • Folglich wird erwünscht verbesserte Verfahren und Systeme zum Durchsuchen eines Indexvektors einer Nachschlagetabelle nach einem Vektorindex zu liefern, um die Zellen des Indexvektors zu identifizieren, die hinsichtlich des Wertes dem Eingabewert entsprechen und demselben am nächsten sind, so dass ein Ausgabewert (der dem Eingabewert entspricht) bestimmt werden kann. Es wäre erstrebenswert, wenn diese verbesserten Verfahren und Systeme ungeachtet dessen verwendet werden können, ob der Indexvektor linear oder stückweise indiziert ist. Zudem werden andere erwünschte Merkmale und Charakteristiken der vorliegenden Erfindung aus der folgenden detaillierten Beschreibung und den beiliegenden Ansprüchen offensichtlich werden, die in Verbindung mit den beiliegenden Zeichnungen und dem vorangehenden technischen Gebiet und Hintergrund genommen wurden.
  • ZUSAMMENFASSUNG
  • Ein Verfahren ist geliefert, das durch einen Computerprozessor in Verbindung mit einer Nachschlagetabelle durchgeführt werden kann.
  • Basierend auf einem Eingabewert, nach dem innerhalb eines Indexvektors der Nachschlagetabelle gesucht wird, kann ein Wert eines Vektorindex berechnet werden, um einen berechneten Vektorindex zu erzeugen. In einigen Ausführungsformen kann bestimmt werden, ob der berechnete Vektorindex kleiner als eine Länge eines Indexvektors ist, und wenn nicht, dann kann der berechnete Vektorindex durch Dekrementieren der Länge des Indexvektors um eins erneut berechnet werden, um einen erneut berechneten Vektorindex zu erzeugen.
  • Dann kann bestimmt werden, ob der Wert des berechneten Vektorindex korrekt ist, um zu bestimmen, ob der Indexvektor linear oder stückweise indiziert ist.
  • Wenn entweder bestimmt wird, dass der Wert des berechneten Vektorindex korrekt ist, oder wenn der erneut berechnete Vektorindex erzeugt wird, kann eine Interpolationsroutine für einen linear indizierten Indexvektor unter Verwendung eines gegenwärtig berechneten Vektorindex ausgeführt werden, um einen interpolierten Ausgabewert zu bestimmen, der dem Eingabewert entspricht. Der gegenwärtig berechnete Vektorindex kann entweder der berechnete Vektorindex oder der erneut berechnete Vektorindex sein.
  • Wenn im Gegensatz dazu bestimmt wird, dass der Wert des berechneten Vektorindex nicht korrekt ist, wird bestimmt, dass der Indexvektor stückweise indiziert ist, und eine Interpolationsroutine für einen stückweise indizierten Indexvektor kann ausgeführt werden, um den interpolierten Ausgabewert zu bestimmen, der dem Eingabewert entspricht.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • Die Ausführungsformen werden nachstehend in Verbindung mit den folgenden Figuren der Zeichnung beschrieben werden, in denen ähnliche Nummern ähnliche Elemente bezeichnen und in denen:
  • 1 ein Blockdiagramm eines Systems nach einer Ausführungsform ist;
  • 2 ein Ablaufplan ist, der ein Verfahren nach einer Ausführungsform veranschaulicht; und
  • 3 ein Graph ist, der die Interpolation gemäß einer Ausführungsform veranschaulicht.
  • DETAILLIERTE BESCHREIBUNG
  • Die folgende detaillierte Beschreibung ist rein beispielhafter Art und soll die Anwendung und Verwendungen nicht beschränken. Zudem besteht keine Absicht durch eine zum Ausdruck gebrachte oder implizierte Theorie gebunden zu sein, die in dem/der vorangehenden technischen Gebiet, Hintergrund, kurzen Zusammenfassung oder der folgenden detaillierten Beschreibung dargelegt ist.
  • Vor dem detaillierten Beschreiben von Ausführungsformen, die gemäß der vorliegenden Erfindung sind, sollte beachtet werden, dass die Ausführungsformen in erster Linie in Kombinationen von Verfahrensschritten und Vorrichtungskomponenten in Bezug auf das Durchsuchen eines Indexvektors einer Nachschlagetabelle nach einem Vektorindex, der einem Eingabewert entspricht, und dann Berechnen einer Steigung, die in Verbindung mit dem Eingabewert und dem berechneten Vektorindex verwendet werden kann, um einen entsprechenden Ausgabewert zu bestimmen, liegen. Es wird eingesehen werden, dass Ausführungsformen der Erfindung, die hierin beschrieben sind, unter Verwendung von Hardware, Software oder einer Kombination derselben implementiert werden können. Es wird eingesehen werden, dass hierin beschriebene Ausführungsformen der Erfindung aus einem oder mehreren herkömmlichen Prozessoren und einzigartigen, gespeicherten Programmbefehlen bestehen können, die den einen oder die mehreren Prozessoren steuern, um in Verbindung mit bestimmten Nichtprozessorschaltungen einige, die meisten oder alle Funktionen zum Durchsuchen eines Indexvektors einer Nachschlagetabelle nach einem Vektorindex, der einem Eingabewert entspricht, und dann Berechnen einer Steigung zu implementieren, die in Verbindung mit dem Eingabewert und dem berechneten Vektorindex verwendet werden kann, um einen entsprechenden Ausgabewert zu bestimmen, wie hierin beschrieben wird. An sich können diese Funktionen als Schritte eines Verfahrens zum Durchsuchen eines Indexvektors einer Nachschlagetabelle nach einem Vektorindex, der einem Eingabewert entspricht, und dann Berechnen einer Steigung interpretiert werden, die in Verbindung mit dem Eingabewert und dem berechneten Vektorindex verwendet werden kann, um einen entsprechenden Ausgabewert zu bestimmen.
  • 1 ist ein Blockdiagramm eines Systems 30 nach einer Ausführungsform der vorliegenden Erfindung. Das System 30 enthält einen Prozessor 10 und einen Speicher 20, die miteinander gekoppelt sind und in Verbindung stehen.
  • Der Speicher 20 enthält eine Nachschlagetabelle 22. Die Nachschlagetabelle 22 wird zum Speichern von Information verwendet, die einen Indexvektor (X) 26 und einen entsprechenden Ausgabevektor (Y) 28 enthalten. Jeder Vektor 26, 28 enthält eine Anzahl von Zellen, die zum Speichern von Werten verwendet werden. Jeder Wert des Indexvektors (X) 26 und des Ausgabevektors (Y) 28 wird mit einem entsprechenden Vektorindex assoziiert oder bei demselben evaluiert, der ein ganzzahliger Wert ist, der in einem Bereich von null bis N liegt, wobei N die Länge des Vektors ist.
  • Der Indexvektor (X) 26 weist einen Satz diskreter Eingabewerte X0 bis XN auf und der Ausgabevektor (Y) 28 weist eine Reihe entsprechender Ausgabewerte Y0 bis YN auf. Beispielsweise weist der Indexvektor eine Anzahl von Zellen (X0...XN) auf und kann wie folgt repräsentiert werden: Indexvektor = [X0, X1, X2, X3, ..., XN], wobei der Zahlenabschnitt von X0, X1 etc. einem Index entspricht, der einen Bereich von 0 bis N aufweist. An sich ist die Zelle null (X0) die erste Zelle des Indexvektors (X) 26 und enthält den Wert des Indexvektors (X) 26, der beim Index 0 evaluiert wird (X0 = Indexvektor(0)), und die Zelle N (XN) die letzte Zelle des Indexvektors (X) 26 und enthält den Wert des Indexvektors (X) 26, der beim Index N evaluiert wird (XN = Indexvektor(N)). Ähnlich ist die Zelle null (Y0) die erste Zelle des Ausgabevektors (Y) 28 und enthält den Wert des Ausgabevektors (Y) 28, der beim Index 0 evaluiert wird (Y0 = Ausgabevektor(0)), und die Zelle N (YN) die letzte Zelle des Ausgabevektors (Y) 28 und enthält den Wert des Ausgabevektors (Y) 28, der beim Index N evaluiert wird (YN = Ausgabevektor(N)).
  • Der Indexvektor (X) 26 kann entweder linear oder stückweise indiziert sein. Für einen linear indizierten Indexvektor (X) 26 sind die Zellen derart gleichmäßig beabstandet, dass der Unterschied zwischen jeglichen zwei aufeinanderfolgenden Zellen des linear indizierten Indexvektors (X) 26 immer der Gleiche ist. Im Gegensatz dazu sind für einen stückweise indizierten Indexvektor (X) 26 die Zellen eines stückweise indizierten Indexvektors (X) 26 derart ungleichmäßig beabstandet, dass ein Unterschied zwischen den zwei aufeinanderfolgenden Zellen des stückweise indizierten Indexvektors (X) 26 anders als ein Unterschied zwischen anderen zwei aufeinanderfolgenden Zellen des stückweise indizierten Indexvektors (X) 26 ist.
  • Der Prozessor 10 enthält ein Vektorindex-Suchmodul 12, das die Nachschlagetabelle 22 durchsucht, um entweder einen Vektorindex zu berechnen oder zu finden, der einem Eingabewert (Xin) 11 entspricht, ein Steigungsberechnungsmodul 14, das einen oder mehrere Steigungswerte basierend auf einem Vektorindex berechnet, der vom Vektorindex-Suchmodul 12 bereitgestellt wird, und ein Interpolationsmodul 16, das einen Ausgabewert (Yout) 18 basierend auf einem der berechneten Steigungswerte und Informationen erzeugt, die vom Vektorindex-Suchmodul 12 bereitgestellt werden. Wie hierin verwendet, bezieht sich der Ausdruck „Modul” auf eine Vorrichtung, eine Schaltung, eine elektrische Komponente und/oder eine softwarebasierte Komponente zum Durchführen einer Aufgabe. Weitere Details werden nun nachstehend beschrieben werden.
  • Das Vektorindex-Suchmodul 12 nimmt anfänglich an, dass der Indexvektor linear indiziert ist, und berechnet einen Vektorindex basierend auf dem Eingabewert (Xin) 11. Das Vektorindex-Suchmodul 12 bestimmt, ob der berechnete Vektorindex (CVI) innerhalb des Bereiches oder der Länge (N) des Indexvektors 26 liegt. Wenn nicht, berechnet das Vektorindex-Suchmodul 12 den Vektorindex erneut durch Dekrementieren desselben um eins, um einen erneut berechneten Vektorindex (RVI) zu erzeugen.
  • Wenn das Vektorindex-Suchmodul 12 bestimmt, dass sich der Vektorindex innerhalb des Längenbereiches (N) des Indexvektors befindet, bestimmt das Vektorindex-Suchmodul 12 dann durch Bestimmen, ob der Eingabewert (Xin) 11 innerhalb von Werten bestimmter Zellen des Indexvektors (X) 26 ist, ob der Indexvektor (X) 26 linear indiziert ist.
  • Wenn das Vektorindex-Suchmodul 12 bestimmt, dass der Indexvektor linear indiziert ist und dass der Vektorindex (CVI), der anfänglich berechnet wurde, korrekt ist, bestimmt das Vektorindex-Suchmodul 12, ob eine anfänglich berechnete Steigung oder „erste” Steigung korrekt ist. Die erste Steigung wird durch das Steigungsberechnungsmodul 14 basierend auf einem gegenwärtig berechneten Vektorindex berechnet, der entweder der berechnete Vektorindex (CVI) oder der erneut berechnete Vektorindex (RVI) sein kann.
  • Wenn das Vektorindex-Suchmodul 12 bestimmt, dass die erste Steigung korrekt ist, verwendet das Interpolationsmodul 16 den gegenwärtig berechneten Vektorindex und die erste Steigung, um einen Ausgabewert (Yout) 18 zu interpolieren. Im Gegensatz dazu, berechnet das Steigungsberechnungsmodul 14 eine zweite Steigung, wenn das Vektorindex-Suchmodul 12 bestimmt, dass die erste Steigung nicht korrekt ist, und das Interpolationsmodul 16 verwendet den Eingabewert (Xin) 11, den gegenwärtig berechneten Vektorindex und die zweite Steigung, um einen Ausgabewert (Yout) 18 zu interpolieren.
  • Wenn das Vektorindex-Suchmodul 12 bestimmt, dass der Indexvektor (X) 26 nicht linear indiziert ist und der berechnete Vektorindex (CVI) inkorrekt ist, wird das Vektorindex-Suchmodul 12 dann andererseits annehmen, dass der Indexvektor (X) 26 ein stückweise indizierter Indexvektor ist, und eine Suche vornehmen, die von dem Wert der ersten Steigung abhängt, um einen neuen Vektorindex zu finden, der nachstehend als gefundener Vektorindex (FVI) bezeichnet werden wird. Sobald das Vektorindex-Suchmodul 12 den neuen, gefundenen Vektorindex (FVI) findet, verwendet das Steigungsberechnungsmodul 14 den Eingabewert (Xin) 11 und den gefundenen Vektorindex, um eine dritte Steigung zu berechnen, und das Interpolationsmodul 16 den Eingabewert (Xin) 11, die dritte Steigung und den gefundenen Vektorindex, um einen Ausgabewert (Yout) 18 zu interpolieren.
  • 2 ist ein Ablaufplan, der ein Verfahren 100 zum Durchsuchen eines Indexvektors (X) 26 einer Nachschlagetabelle 22 nach einem Vektorindex, der einem Eingabewert (Xin) entspricht, und dann Berechnen einer Steigung veranschaulicht, die in Verbindung mit dem Eingabewert (Xin) und dem Vektorindex verwendet werden kann, um einen entsprechenden Ausgabewert (Yout) gemäß einigen der offenbarten Ausführungsformen zu bestimmen. 2 wird in Bezug auf die Nachschlagetabelle 22 in 1 beschrieben werden.
  • 3 ist ein Graph, der eine Interpolation gemäß einer Ausführungsform veranschaulicht. 3 veranschaulicht drei Punkte 210, 220, 230, wobei: Punkt 210 einen Wert einer Zelle (X) des Indexvektors (X) 26 und einen entsprechenden Wert einer Zelle (Yn) des Ausgabevektors (Y) 28 repräsentiert; Punkt 220 einen Wert einer angrenzenden Zelle (Xn+1) des Indexvektors (X) 26 und einen entsprechenden Wert einer Zelle (Yn+1) des Ausgabevektors (Y) 28 repräsentiert; und Punkt 230 den Eingabewert (Xin) und den entsprechenden Ausgabewert (Yout) desselben repräsentiert, nach dem gesucht wird. Hier wird die Bezeichnung X verwendet, um einen Wert der Zelle n des Indexvektors (X) 26 (d. h. den Wert des Indexvektors (X) 26, der beim Index n evaluiert wird) anzugeben, wohingegen die Bezeichnung Xn+1 verwendet wird, um einen Wert der Zelle n + 1 des Indexvektors (X) (d. h. den Wert des Indexvektors (X) 26, der beim Index n + 1 evaluiert wird) anzugeben. Ähnlich wird die Bezeichnung Yn verwendet, um einen Wert der Zelle n des Ausgabevektors (Y) 28 (d. h. den Wert des Ausgabevektors (Y) 28, der beim Index n evaluiert wird) anzugeben, wohingegen die Bezeichnung Yn+1 verwendet wird, um einen Wert der Zelle n des Ausgabevektors (Y) 28 (d. h. den Wert des Ausgabevektors (Y) 28, der beim Index n + 1 evaluiert wird) anzugeben. 2 wird nachstehend in Bezug auf 3 beschrieben werden.
  • Das Verfahren 100 ermöglicht das Durchsuchen des Ausgabevektors ungeachtet dessen, ob derselbe linear oder stückweise indiziert ist.
  • Das Verfahren 100 beginnt mit dem Schritt 110, in dem ein Vektorindex berechnet wird. Im Schritt 110 wird angenommen, dass ein gleichmäßiger Abstand zwischen aufeinanderfolgenden Zellen besteht (d. h., dass der Ausgabevektor (Y) 28 linear ist). In einer Ausführungsform kann der Wert des Vektorindex unter Verwendung der Gleichung (1), die folgt, berechnet werden: Index = Floor([Xin – X0]/[X1 – X0]) (1), wobei Xin ein Eingabewert, nach dem innerhalb des Indexvektors (X) gesucht wird, (oder „gesuchter Wert”) ist. Die Abrundungsfunktion bzw. Floor-Funktion setzt den ganzzahligen Abschnitt der Berechnung zurück. Der Unterschied zwischen zwei aufeinanderfolgenden Zellen des Eingabevektors (X) wird als Zellenunterschied (DiffX) bezeichnet werden. Anfänglich wird angenommen, dass der Zellenunterschied linear ist. In einer Ausführungsform kann der Zellenunterschied (DiffX) durch die Gleichung (2), die folgt, berechnet werden: DiffX = X1 – X0 (2).
  • Folglich wird in einer Ausführungsform des Schrittes 110 ein Verhältnis von: (1) einem Unterschied zwischen dem Eingabewert (Xin) 230, nach dem innerhalb des Indexvektors (X) gesucht wird, und einem Wert einer ersten Zelle (X0) des Indexvektors (X); zu (2) dem Zellenunterschied (DiffX) zwischen zwei aufeinanderfolgenden Zellen des Indexvektors (X) berechnet und der ganzzahlige Abschnitt dieses Verhältnisses ist der Wert des berechneten Vektorindex (CVI). Der Wert des berechneten Vektorindex (aus Schritt 110) kann verwendet werden, um zu bestimmen, ob der Indexvektor (X) 26 linear indiziert oder stückweise indiziert ist.
  • Im Schritt 120 wird bestimmt, ob der berechnete Vektorindex (aus Schritt 110) kleiner als die Länge des Indexvektors (N) ist.
  • Wenn bestimmt wird, dass der berechnete Vektorindex (aus Schritt 110) größer als die Länge des Indexvektors (N) oder gleich derselben ist, fährt das Verfahren 100 mit dem Schritt 135 fort, in dem der berechnete Vektorindex durch Dekrementieren der Länge des Indexvektors (N) um eins erneut berechnet wird, um einen erneut berechneten Vektorindex zu erzeugen, und das Verfahren 100 fährt dann mit dem Block 140 fort. Mit anderen Worten wird der erneut berechnete Vektorindex auf einen Wert N – 1 (Index = N – 1) gesetzt.
  • Wenn im Gegensatz dazu (im Schritt 124) bestimmt wird, dass der Index kleiner als N ist, bedeutet dies, dass der berechnete Vektorindex (aus Schritt 110) innerhalb der maximalen Länge (N) des Indexvektors ist, und das Verfahren 100 fährt mit dem Schritt 130 fort.
  • Im Schritt 130 wird durch Bestimmen, ob der berechnete Vektorindex (aus Schritt 110) korrekt ist, bestimmt, ob der Indexvektor (X) 26 entweder linear indiziert oder stückweise indiziert ist. Hierfür wird in einer Ausführungsform bestimmt, ob der Eingabewert (Xin) zwischen: (1) einem ersten Wert des Indexvektors (X) 26, der bei dem berechneten Vektorindex evaluiert wird; und (2) einem zweiten Wert des Indexvektors (N) 26 ist, der bei dem um eins inkrementierten berechneten Vektorindex evaluiert wird. Dies kann in der Gleichung (3), die folgt, repräsentiert werden: Indexvektor(Index) ≤ Xin UND Xin ≤ Indexvektor(Index + 1)? (3).
  • In der Gleichung (3) wird bestimmt, ob der Wert des Indexvektors (X) 26, der bei dem Index evaluiert wird, kleiner als der Eingabewert (Xin) oder gleich demselben ist, und, ob der Eingabewert (Xin) kleiner als der Wert des Indexvektors (X) 26 oder gleich demselben ist, der beim Index + 1 evaluiert wird.
  • Wenn bestimmt wird, dass der Eingabewert (Xin) zwischen: (1) dem ersten Wert des Indexvektors (X) 26, der bei dem berechneten Vektorindex evaluiert wird; und (2) dem zweiten Wert des Indexvektors (N) 26 ist, der bei dem um eins inkrementierten berechneten Vektorindex evaluiert wird, wird bestimmt, dass der Indexvektor (X) 26 linear indiziert ist. Im Gegensatz dazu wird bestimmt, dass der Indexvektor (X) 26 stückweise indiziert ist, wenn bestimmt wird, dass der Eingabewert (Xin) nicht zwischen: (1) dem ersten Wert des Indexvektors (X) 26, der bei dem berechneten Vektorindex evaluiert wird; und (2) dem zweiten Wert des Indexvektors (N) 26 ist, der bei dem um eins inkrementierten berechneten Vektorindex evaluiert wird.
  • Interpolationsroutine für einen linear indizierten Indexvektor
  • Wenn (im Schritt 130) bestimmt wird, dass beide Bedingungen erfüllt (oder wahr) sind, dann wird bestimmt, dass der berechnete Vektorindex (aus Schritt 110) korrekt ist, was heißt, dass der Indexvektor (X) 26 rein linear ist, und das Verfahren 100 fährt mit dem Block 140 fort, in dem eine Interpolationsroutine für eine linear indizierten Indexvektor ausgeführt wird.
  • Die Interpolationsroutine 140 für einen linear indizierten Indexvektor beginnt mit dem Schritt 142.
  • Der dem Block 142 bereitgestellte Vektorindex kann entweder der berechnete Vektorindex (aus Schritt 110) oder der erneut berechnete Vektorindex (aus Schritt 135) sein und wird nachstehend als gegenwärtig berechneter Vektorindex bezeichnet.
  • Im Schritt 142 kann bestimmt werden, ob eine erste Bedingung erfüllt ist, d. h., ob (1) ein Unterschied zwischen dem Wert des Indexvektors, der bei dem gegenwärtig berechneten Vektorindex + 1 (Indexvektor(gegenwärtigberechneterVektorindex + 1)) evaluiert wird, und dem Wert des Indexvektors, der bei dem gegenwärtig berechneten Vektorindex (Indexvektor(gegenwärtigberechneterVektorindex)) evaluiert wird, gleich (2) einem Zellenunterschied (z. B. Unterschied zwischen dem Wert der Zelle eins (X1) des Eingabevektors (X) und dem Wert der Zelle null (X0) des Eingabevektors (X))) ist. Dies kann in der Gleichung (4), die folgt, repräsentiert werden: Indexvektor(gegenwärtigberechneterVektorindex + 1) – Indexvektor(gegenwärtigberechneterVektorindex) = DiffX? (4).
  • Wenn bestimmt wird, dass die erste Bedingung bei 142 wahr ist, bedeutet dies, dass eine erste Steigung berechnet und zur Interpolation verwendet werden kann. Das Verfahren fährt mit dem Schritt 144 fort, in dem die erste Steigung berechnet werden kann. In einer Ausführungsform kann die erste Steigung basierend auf einem Verhältnis von (1) einem Zellenunterschied zwischen zwei aufeinanderfolgenden Zellen des Indexvektors (z. B. Unterschied zwischen Zelle eins (Y1) des Ausgabevektors (Y1) und Zelle null (Y0) des Ausgabevektors (Y) 28) und (2) einem zweiten Unterschied zwischen der Zelle eins (X1) des Eingabevektors (X) und der Zelle null (X0) des Eingabevektors (X) berechnet werden. Dies kann in der Gleichung (5), die folgt, repräsentiert werden: Erste Steigung = (Y2 – Y1)/(DiffX); wobei DiffX = X1 – X0 (5).
  • Das Verfahren 100 fährt dann mit dem Schritt 145 fort, in dem der gegenwärtig berechnete Vektorindex und die erste Steigung verwendet werden, um einen Wert der Ausgabe (Yout) durch die Gleichung (6), die folgt, zu interpolieren: Yout = Erste Steigung × (Xin – Indexvektor(gegenwärtigberechneterVektorindex)) + Y0 (6), wobei die erste Steigung berechnet wird, wie oben beschrieben wurde, Indexvektor(gegenwärtigberechneterVektorindex) der Indexvektor ist, der bei dem gegenwärtig berechneten Vektorindex evaluiert wird, der entweder der berechnete Vektorindex (aus Schritt 110) oder der erneut berechnete Vektorindex (aus Schritt 135) ist, Xin der Eingabewert (Xin) ist, nach dem gesucht wird, und Yout der interpolierte Ausgabewert ist, der dem Eingabewert (Xin) entspricht. Das Verfahren 100 endet dann mit dem Schritt 170.
  • Wenn bestimmt wird, dass die Bedingung beim Schritt 142 falsch ist, bedeutet dies, dass zwar der gegenwärtig berechnete Vektorindex (aus Schritt 110 oder Schritt 135) korrekt ist, aber die erste Steigung nicht korrekt ist (dies ist eine indirekte Bestimmung beim Schritt 142, wenn falsch), und daher fährt das Verfahren mit dem Schritt 146 fort, in dem eine zweite Steigung berechnet wird. In einer Ausführungsform wird die zweite Steigung basierend auf einem Verhältnis von (1) einem dritten Unterschied zwischen dem Wert des Ausgabevektors (Y) 28, der bei dem gegenwärtig berechneten Vektorindex plus 1 (Ausgabevektor(gegenwärtigberechneterVektorindex + 1)) evaluiert wird, und dem Wert des Ausgabevektors (Y) 28, der bei dem gegenwärtig berechneten Vektorindex (Ausgabevektor(gegenwärtigberechneterVektorindex)) evaluiert wird, und (2) einem vierten Unterschied zwischen dem Wert des Indexvektors, der bei dem gegenwärtig berechneten Vektorindex + 1 (Indexvektor(gegenwärtigberechneterVektorindex + 1)) evaluiert wird, und dem Indexvektor, der bei dem gegenwärtig berechneten Vektorindex (Indexvektor(gegenwärtigberechneterVektorindex)) evaluiert wird. Die Berechnung der zweiten Steigung kann in der Gleichung (7), die folgt, repräsentiert werden: Zweite Steigung = ((Ausgabevektor(gegenwärtigberechneterVektorindex + 1) – Ausgabevektor(gegenwärtigberechneterVektorindex))/(Indexvektor(gegenwärtigberechneterVektorindex + 1) – Indexvektor(gegenwärtigberechneterVektorindex)) (7).
  • Das Verfahren 100 fährt dann mit dem Schritt 148 fort, in dem der gegenwärtig berechnete Vektorindex und die zweite Steigung zum Interpolieren eines Wertes der Ausgabe (Yout) durch die Gleichung (8), die folgt, verwendet werden: Yout = Zweite Steigung × (Xin – Indexvektor(gegenwärtigberechneterVektorindex)) + Ausgabevektor(gegenwärtigberechneterVektorindex) (8), wobei die zweite Steigung berechnet wird, wie oben in Bezug auf die Gleichung (7) beschrieben wurde, und die anderen Variablen oben in Bezug auf die Gleichung (7) beschrieben wurden. Wieder ist Yout der interpolierte Ausgabewert, der dem Eingabewert (Xin) entspricht. Das Verfahren 100 endet dann mit dem Schritt 170.
  • Interpolationsroutine für einen stückweise indizierten Indexvektor
  • Wenn (im Schritt 130) bestimmt wird, dass eine der Bedingungen nicht erfüllt (oder falsch) ist, dann wird bestimmt, dass der berechnete Vektorindex (aus Schritt 110) inkorrekt ist, was heiß, dass der Indexvektor (X) 26 quasilinear indiziert (z. B. stückweise indiziert) ist, und das Verfahren 100 fährt mit dem Block 150 fort, in dem eine Interpolationsroutine für einen stückweise indizierten Indexvektor ausgeführt wird. Mit anderen Worten fährt das Verfahren mit dem Schritt 150 fort, wenn im Schritt 130 bestimmt wird, dass eine oder beide Bedingungen nicht wahr sind. Wie nachstehend beschrieben werden wird, wird im Block 150 eine Interpolation basierend auf einer dritten Steigung und dem dritten Index durchgeführt.
  • Die Routine 150 beginnt mit dem Schritt 152, in dem bestimmt wird, ob der Zellenunterschied (DiffX) (z. B. Unterschied zwischen Zelle eins (X1) des Eingabevektors (X) und Zelle null (X0) des Eingabevektors (X)) größer als null ist (d. h. positiv oder negativ ist).
  • Wenn (im Schritt 152) bestimmt wird, dass der Zellenunterschied (DiffX) größer als null (positiv) ist, fährt das Verfahren 100 mit dem Schritt 154 fort, in dem bestimmt wird, ob der Indexvektor, der bei dem berechneten Vektorindex (aus Schritt 110) (Indexvektor(Index)) evaluiert wird, kleiner als der Eingabewert (Xin) ist, was in dem Ausdruck (9), der folgt, zum Ausdruck gebracht werden kann: Indexvektor(Index) < Xin? (9).
  • Wenn bestimmt wird, dass der Indexvektor, der bei dem berechneten Vektorindex (Indexvektor(Index)) evaluiert wird, größer als (oder nicht kleiner als) der Eingabewert (Xin) ist, fährt das Verfahren 100 mit dem Schritt 162 fort, in dem eine erste stückweise Suche durchgeführt wird. Die erste stückweise Suche beginnt bei dem berechneten Vektorindex (Indexvektor(Index)) und dekrementiert den Vektorindex um eins in Richtung der Zelle null (X0) des Eingabevektors (X) bis eine erste gefundene Bedingung auftritt, an welchem Punkt der neue Vektorindex gefunden wird, und der gefundene Vektorindex wird auf den neuen Vektorindex zurückgesetzt, der gefunden wurde. In einer Ausführungsform tritt die erste gefundene Bedingung auf, wenn bestimmt wird, dass der Eingabewert (Xin) größer als der Indexvektor, der bei dem berechneten Vektorindex (CVI) evaluiert wird, oder gleich demselben ist, oder der Vektorindex null (0) erreicht. Folglich wird, wenn entweder: bestimmt wird, dass der Eingabewert (Xin) größer als der Indexvektor, der bei dem berechneten Vektorindex (Indexvektor(Index)) evaluiert wird, oder gleich demselben ist; oder der Vektorindex null (0) erreicht, der neue Vektorindex gefunden und der Wert einer Variablen (gefundenerIndex) auf den Vektorindexwert zurückgesetzt, der gefunden wurde.
  • Wenn im Gegensatz dazu bestimmt wird, dass der Indexvektor, der bei dem berechneten Vektorindex (Indexvektor(Index)) evaluiert wird, kleiner als der Eingabewert (Xin) ist, fährt das Verfahren 100 mit dem Schritt 156 fort, in dem eine zweite stückweise Suche durchgeführt wird. Die zweite stückweise Suche beginnt bei dem berechneten Vektorindex (Indexvektor(Index)) und der Vektorindex wird um eins in Richtung der Zelle N (XN) des Eingabevektors (X) inkrementiert bis eine „zweite” gefundene Bedingung auftritt, an welchem Punkt der neue Vektorindex gefunden wird, und der gefundene Vektorindex wird auf den neuen Vektorindex, der gefunden wurde, minus eins (1) zurückgesetzt. In einer Ausführungsform tritt die zweite gefundene Bedingung auf, wenn entweder: bestimmt wird, dass der Eingabewert (Xin) kleiner als der Wert des Indexvektors, der bei dem berechneten Vektorindex (Indexvektor(Index)) evaluiert wird, oder gleich demselben ist; oder der Wert des Vektorindex N erreicht, an welchem Punkt der neue Vektorindex gefunden wird, und der Wert einer Variablen (gefundenerIndex) kann auf den neuen Vektorindexwert, der gefunden wurde, minus 1 zurückgesetzt werden.
  • Wenn im Schritt 152 bestimmt wird, dass die Zellendifferenz (DiffX) negativ ist, fährt das Verfahren 100 mit dem Schritt 160 fort, in dem bestimmt wird, ob der Indexvektor, der bei dem berechneten Vektorindex (aus Schritt 110) (Indexvektor(Index)) evaluiert wird, größer als der Eingabewert (Xin) ist, was in dem Ausdruck (10), der folgt, zum Ausdruck gebracht werden kann: Indexvektor(Index) > Xin? (10).
  • Wenn bestimmt wird, dass der Indexvektor, der bei dem berechneten Vektorindex (Indexvektor(Index)) evaluiert wird, kleiner als der Eingabewert (Xin) ist, fährt das Verfahren 100 mit dem Schritt 162 fort, in dem die erste schrittweise Suche durchgeführt wird, wie oben beschrieben wurde. Wenn im Gegensatz dazu bestimmt wird, dass der Indexvektor, der bei dem berechneten Vektorindex (Indexvektor(Index)) evaluiert wird, größer als der Eingabewert (Xin) ist, fährt das Verfahren 100 mit dem Schritt 156 fort, in dem die zweite stückweise Suche erfolgt, wie oben beschrieben wurde.
  • In Anschluss an entweder den Schritt 156 oder den Schritt 162 fährt das Verfahren 100 mit dem Schritt 158 fort. Im Schritt 158 wird eine dritte Steigung basierend auf dem Indexvektor, der bei dem im Schritt 156 oder Schritt 162 gefundenen Vektorindex evaluiert wird, (Indexvektor(gefundenerIndex)) berechnet. In einer Ausführungsform kann die Berechnung, die zum Berechnen der dritten Steigung im Schritt 158 durchgeführt wird, in der Gleichung (11), die folgt, repräsentiert werden: Dritte Steigung = (Ausgabevektor(gefundenerIndex + 1) – Ausgabevektor(gefundenerIndex))/(Indexvektor(gefundenerIndex + 1) – Indexvektor(gefundenerindex)) (11).
  • Wie in der Gleichung (11) gezeigt, wird die dritte Steigung basierend auf einem Verhältnis von (1) einem fünften Unterschied zwischen dem Wert des Ausgabevektors (Y) 28, der bei dem gefundenen Vektorindex plus 1 (Ausgabevektor(gefundenerIndex + 1)) evaluiert wird, und dem Wert des Ausgabevektors (Y) 28, der bei dem gefundenen Vektorindex (Ausgabevektor(gefundenerIndex)) evaluiert wird, und (2) einem sechsten Unterschied zwischen dem Wert des Indexvektors, der bei dem gefundenen Vektorindex + 1 (Indexvektor(gefundenerIndex + 1)) evaluiert wird, und dem Indexvektor, der bei dem gefundenen Vektorindex (Indexvektor(gefundenerIndex)) evaluiert wird, berechnet. Es wird angemerkt, dass abhängig davon, auf welchem Weg der Block 150 durchlaufen wurde, der Wert von gefundenerIndex aus entweder dem Block 162 oder Block 156 kommt.
  • Das Verfahren 100 fährt dann mit dem Schritt 164 fort, in dem der gefundene Vektorindex und die dritte Steigung verwendet werden, um einen Wert der Ausgabe (Yout) durch die Gleichung (12), die folgt, zu interpolieren: Yout = Dritte Steigung × (Xin – Indexvektor(gefundenerIndex)) + Ausgabevektor(gefundenerIndex) Gleichung (12), wobei die dritte Steigung (im Schritt 158) berechnet wird, wie oben beschrieben wurde, und die anderen Variablen oben in Bezug auf die Gleichung (10) beschrieben sind. Wieder ist Yout der interpolierte Ausgabewert, der dem Eingabewert (Xin) entspricht. Das Verfahren 100 endet dann bei 170.
  • Jemand mit technischen Fähigkeiten wird einsehen, dass die verschiedenen illustrativen logischen Blöcke, Module und Algorithmusschritte, die in Verbindung mit den Ausführungsformen beschrieben wurden, die hierin offenbart sind, als elektronische Hardware, Computersoftware oder Kombinationen aus beiden implementiert werden können. Einige der Ausführungsformen und Implementierungen sind oben bezüglich funktionalen und/oder logischen Blockkomponenten (oder Modulen) und verschiedenen Verarbeitungsschritten beschrieben. Es sollte jedoch eingesehen werden, dass solche Blockkomponenten (oder Module) durch irgendeine Anzahl von Hardware-, Software- und/oder Firmwarekomponenten umgesetzt werden können, die zum Durchführen der spezifizierten Funktionen vorgesehen sind.
  • Um diese Austauschbarkeit von Hardware und Software deutlich zu veranschaulichen, wurden verschiedene veranschaulichende Komponenten, Blöcke, Module und Schritte oben im Allgemeinen hinsichtlich der Funktionalität derselben beschrieben. Ob solch eine Funktionalität als Hardware oder Software implementiert wird, hängt von der bestimmten Anwendung und Ausgestaltungsbedingungen ab, die dem Gesamtsystem auferlegt sind. Fachmänner werden die beschriebene Funktionalität auf variierende Weisen für jede bestimmte Anwendung implementieren, aber solche Implementierungsentscheidungen sollten nicht interpretiert werden eine Abweichung von dem Bereich der vorliegenden Erfindung zu verursachen. Beispielsweise kann eine Ausführungsform eines Systems verschiedene Komponenten einer integrierten Schaltung einsetzten, z. B. Speicherelemente, digitale Signalverarbeitungselemente, Logikelemente, Nachschlagetabellen oder Ähnliches, die eine Vielzahl von Funktionen unter der Steuerung von einem oder mehreren Mikroprozessoren oder anderen Steuervorrichtungen ausführen können. Zudem wird jemand mit technischen Fähigkeiten einsehen, dass die hierin beschriebenen Ausführungsformen lediglich nicht einschränkende, beispielhafte Implementierungen sind.
  • Die verschiedenen veranschaulichenden logischen Blöcke und Module, die in Verbindung mit den hierin offenbarten Ausführungsformen beschrieben sind, können mit einem Allzweckprozessor, einem digitalen Signalprozessor (DSP), einer anwendungsspezifischen integrierten Schaltung (ASIC), einem feldprogrammierbaren Gate-Array (FPGA) oder einer anderen programmierbaren Logikvorrichtung, diskreten Gate- oder Transistorlogik, anderen diskreten Hardwarekomponenten oder einer Kombination derselben implementiert oder durchgeführt werden, die zum Durchführen der hierin beschriebenen Funktionen ausgestaltet sind. Ein Allzweckprozessor kann ein Mikroprozessor sein, aber alternativ kann der Prozessor jeder/jede herkömmliche Prozessor, Controller oder Mikrocontroller oder Zustandsmaschine sein. Ein Prozessor kann auch als Kombination aus Rechenvorrichtungen, z. B. eine Kombination aus einem DSP und einem Mikroprozessor, eine Vielzahl von Mikroprozessoren, ein oder mehrere Mikroprozessoren in Verbindung mit einem DSP-Kern oder jede andere solche Konfiguration sein.
  • Die Schritte eines Verfahrens oder Algorithmus, die in Verbindung mit den hierin offenbarten Ausführungsformen beschrieben sind, können direkt in Hardware, in einem Softwaremodul, das durch einen Prozessor ausgeführt wird, oder in einer Kombination der beiden ausgeführt werden. Ein Softwaremodul kann in einem RAM-Speicher, einem Flash-Speicher, einem ROM-Speicher, einem EPROM-Speicher, einem EEPROM-Speicher, Registern, einer Festplatte, einer Wechselplatte, einer CD-ROM oder einer anderen Form von Speichermedium liegen, das in der Technik bekannt ist. Ein beispielhaftes Speichermedium ist mit dem Prozessor derart gekoppelt, dass der Prozessor Informationen von dem Speichermedium lesen und auf dasselbe schreiben kann. Alternativ kann das Speichermedium ein Bestandteil des Prozessors sein. Der Prozessor und das Speichermedium können in einer ASIC liegen. Alternativ können der Prozessor und das Speichermedium diskrete Komponenten bleiben.
  • In diesem Dokument können relationale Ausdrücke, wie zum Beispiel erster/erste/erstes und zweiter/zweite/zweites und Ähnliches, nur zum Unterscheiden einer Entität oder Funktion von einer anderen Entität oder Funktion verwendet werden ohne eine tatsächliche solche Beziehung oder Ordnung zwischen solchen Entitäten oder Funktionen unbedingt zu erfordern oder zu implizieren. Numerische Ordinale, wie beispielsweise „erster/erste/erstes”, „zweiter/zweite/zweites”, „dritter/dritte/drittes” etc., bezeichnen lediglich unterschiedliche Einzelne einer Vielzahl und implizieren keinerlei Ordnung oder Reihenfolge, sofern nicht speziell durch die Anspruchssprache definiert. Die Reihenfolge des Textes in einem der Ansprüche impliziert nicht, dass Verfahrensschritte in einer temporalen oder logischen Ordnung gemäß solch einer Reihenfolge durchgeführt werden müssen, sofern es nicht durch die Sprache des Anspruchs speziell definiert ist. Die Verfahrensschritte können in jeder Ordnung miteinander vertauscht werden, ohne von dem Bereich der Erfindung abzuweichen, solange solch ein Austausch nicht im Widerspruch zur Anspruchssprache steht und logischerweise unsinnig ist.
  • Abhängig von dem Kontext implizieren zudem Wörter wie „verbinden” oder „gekoppelt mit”, die beim Beschreiben eines Verhältnisses zwischen zwei unterschiedlichen Elementen verwendet werden, nicht, dass eine direkte physische Verbindung zwischen diesen Elementen hergestellt werden muss. Beispielsweise können zwei Elemente physisch, elektronisch, logisch oder auf eine andere Weise durch eines oder mehrere zusätzliche Elemente miteinander verbunden sein.
  • Zwar wurde zumindest eine beispielhafte Ausführungsform in der vorangehenden detaillierte Beschreibung dargelegt, aber es sollte eingesehen werden, dass eine große Anzahl von Variationen besteht. Es sollte auch eingesehen werden, dass die beispielhafte Ausführungsform oder die beispielhaften Ausführungsformen nur Beispiele sind und den Bereich, die Anwendbarkeit oder Konfiguration der Offenbarung keineswegs beschränken sollen. Vielmehr wird die vorangehende detaillierte Beschreibung jemandem mit technischen Fähigkeiten einen geeigneten Plan zum Implementieren der beispielhaften Ausführungsform oder beispielhaften Ausführungsformen liefern. Es sollte klar sein, dass verschiedene Änderungen an der Funktion und Anordnung von Elementen vorgenommen werden können ohne vom Bereich der Offenbarung abzuweichen, der in den beiliegenden Ansprüchen und rechtmäßigen Äquivalenten derselben dargelegt ist.
  • WEITERE AUSFÜHRUNGSFORMEN
    • 1. Verfahren, das durch einen Computerprozessor in Verbindung mit einer Nachschlagetabelle durchgeführt wird, wobei das Verfahren Folgendes aufweist: Berechnen eines Wertes eines Vektorindex basierend auf einem Eingabewert (Xin), nach dem innerhalb eines Indexvektors (X) der Nachschlagetabelle gesucht wird, um einen berechneten Vektorindex zu erzeugen; Bestimmen, ob der berechnete Vektorindex kleiner als eine Länge eines Indexvektors (N) ist; wenn bestimmt wird, dass der berechnete Vektorindex größer als die Länge des Indexvektors (N) ist, erneutes Berechnen des berechneten Vektorindex durch Dekrementieren der Länge des Indexvektors (N) um eins, um einen erneut berechneten Vektorindex zu erzeugen; Bestimmen, ob der Wert des berechneten Vektorindex korrekt ist, um zu bestimmen, ob der Indexvektor (X) linear indiziert oder stückweise indiziert ist; wenn entweder bestimmt wird, dass der Wert des berechneten Vektorindex korrekt ist, oder der erneut berechnete Vektorindex erzeugt wird, Ausführen einer Interpolationsroutine für einen linear indizierten Indexvektor unter Verwendung eines gegenwärtig berechneten Vektorindex, um einen interpolierten Ausgabewert (Yout) zu bestimmen, der dem Eingabewert (Xin) entspricht, wobei der gegenwärtig berechnete Vektorindex entweder der berechnete Vektorindex oder der erneut berechnete Vektorindex ist; und wenn bestimmt wird, dass der berechnete Vektorindex inkorrekt ist, und bestimmt wird, dass der Indexvektor (X) stückweise indiziert ist, Ausführen einer Interpolationsroutine für einen stückweise indizierten Indexvektor, um den interpolierten Ausgabewert (Yout) zu bestimmen, der dem Eingabewert (Xin) entspricht.
    • 2. Verfahren nach der Ausführungsform 1, wobei das Berechnen des Wertes eines Vektorindex Folgendes aufweist: Berechnen des Wertes des Vektorindex basierend auf dem Eingabewert (Xin), nach dem innerhalb des Indexvektors (X) gesucht wird, und einer Zellendifferenz (DiffX) zwischen zwei aufeinanderfolgenden Zellen des Indexvektors (X), um den berechneten Vektorindex zu erzeugen.
    • 3. Verfahren nach der Ausführungsform 2, wobei das Berechnen des Wertes eines Vektorindex Folgendes aufweist: Berechnen eines Verhältnisses von (1) einem Unterschied zwischen dem Eingabewert (Xin), nach dem innerhalb des Indexvektors (X) gesucht wird, und einem Wert einer ersten Zelle (X0) des Indexvektors (X) zu (2) dem Zellenunterschied (DiffX) zwischen zwei aufeinanderfolgenden Zellen des Indexvektors (X), wobei der berechnete Vektorindex ein ganzzahliger Abschnitt des Verhältnisses ist.
    • 4. Verfahren nach der Ausführungsform 1, wobei das Bestimmen, ob der Wert des berechneten Vektorindex korrekt ist, Folgendes aufweist: Bestimmen, ob der Eingabewert (Xin) zwischen: einem ersten Wert des Indexvektors (X), der bei dem berechneten Vektorindex evaluiert wird; und einem zweiten Wert des Indexvektors (X) ist, der bei dem um eins inkrementierten berechneten Vektorindex evaluiert wird.
    • 5. Verfahren nach der Ausführungsform 4 ferner mit: Bestimmen, dass der Indexvektor (X) linear indiziert ist, wenn bestimmt wird, dass der Eingabewert (Xin) zwischen: dem ersten Wert des Indexvektors (X), der bei dem berechneten Vektorindex evaluiert wird; und dem zweiten Wert des Indexvektors (X) ist, der bei dem um eins inkrementierten berechneten Vektorindex evaluiert wird.
    • 6. Verfahren nach der Ausführungsform 5, wobei das Ausführen der Interpolationsroutine für den linear indizierten Indexvektor Folgendes aufweist: Bestimmen, ob eine erste Bedingung erfüllt ist.
    • 7. Verfahren nach der Ausführungsform 6, wobei die erste Bedingung ist, ob ein erster Unterschied zwischen einem ersten Wert und einem zweiten Wert gleich einem zweiten Unterschied zwischen einem dritten Wert und einem vierten Wert ist, wobei der erste Wert der Wert des Indexvektors ist, der bei dem gegenwärtig berechneten Vektorindex plus 1 (Indexvektor(gegenwärtigberechneterVektorindex + 1)) evaluiert wird, wobei der zweite Wert der Wert des Indexvektors ist, der bei dem gegenwärtig berechneten Vektorindex (Indexvektor(gegenwärtigberechneterVektorindex)) evaluiert wird, wobei der dritte Wert der Wert der Zelle eins (X1) des Eingabevektors (X) ist und wobei der vierte Wert der Wert der Zelle null (X0) des Eingabevektors (X) ist.
    • 8. Verfahren nach der Ausführungsform 6 ferner mit: Berechnen einer ersten Steigung, wenn die erste Bedingung erfüllt ist; und Interpolieren des interpolierten Ausgabewertes (Yout), der dem Eingabewert (Xin) entspricht, basierend auf dem gegenwärtig berechneten Vektorindex und der ersten Steigung.
    • 9. Verfahren nach der Ausführungsform 8, wobei das Berechnen der ersten Steigung Folgendes aufweist: Berechnen der ersten Steigung ein Verhältnis von: (1) einem ersten Unterschied zwischen der Zelle eins (Y1) des Ausgabevektors (Y) und der Zelle null (Y0) des Ausgabevektors (Y), und (2) einem zweiten Unterschied zwischen der Zelle eins (X1) des Eingabevektors (X) und der Zelle null (X0) des Eingabevektors (X) zu sein.
    • 10. Verfahren nach der Ausführungsform 9, wobei das Interpolieren des interpolierten Ausgabewertes (Yout), der dem Eingabewert (Xin) entspricht, Folgendes aufweist: Interpolieren des interpolierten Ausgabewertes (Yout) als die Summe von: Zelle eins (Y0) des Ausgabevektors (Y) und einem Produkt der ersten Steigung und einem Unterschied zwischen dem Eingabewert (Xin) und dem Indexvektor, der bei dem gegenwärtig berechneten Vektorindex evaluiert wird.
    • 11. Verfahren nach der Ausführungsform 6 ferner mit: Berechnen einer zweiten Steigung, wenn die erste Bedingung nicht erfüllt ist; und Interpolieren des interpolierten Ausgabewertes (Yout), der dem Eingabewert (Xin) entspricht, basierend auf dem gegenwärtig berechneten Vektorindex und der zweiten Steigung.
    • 12. Verfahren nach der Ausführungsform 11, wobei das Berechnen der zweiten Steigung Folgendes aufweist: Berechnen der zweiten Steigung ein Verhältnis von: (1) einem dritten Unterschied zwischen einem Wert des Ausgabevektors (Y), der bei dem gegenwärtig berechneten Vektorindex plus 1 (Ausgabevektor(gegenwärtigberechneterVektorindex + 1)) evaluiert wird, und einem Wert des Ausgabevektors (Y), der bei dem gegenwärtig berechneten Vektorindex (Ausgabevektor(gegenwärtigberechneterVektorindex)) evaluiert wird; und (2) einem vierten Unterschied zwischen dem ersten Wert des Indexvektors, der bei dem gegenwärtig berechneten Vektorindex plus 1 (Indexvektor(gegenwärtigberechneterVektorindex + 1)) evaluiert wird, und dem zweiten Wert des Indexvektors, der bei dem gegenwärtig berechneten Vektorindex (Indexvektor(gegenwärtigberechneterVektorindex)) evaluiert wird, zu sein.
    • 13. Verfahren nach der Ausführungsform 12, wobei das Interpolieren des interpolierten Ausgabewertes (Yout), der dem Eingabewert (Xin) entspricht, Folgendes aufweist: Interpolieren des interpolierten Ausgabewertes (Yout) als die Summe von: dem Wert des Ausgabevektors (Y), der bei dem gegenwärtig berechneten Vektorindex (Ausgabevektor(gegenwärtigberechneterVektorindex)) evaluiert wird, und einem Produkt der zweiten Steigung und eines Unterschieds zwischen dem Eingabewert (Xin) und dem Indexvektor, der bei dem gegenwärtig berechneten Vektorindex evaluiert wird.
    • 14. Verfahren nach der Ausführungsform 4 ferner mit: Bestimmen, dass der Indexvektor (X) stückweise indiziert ist, wenn bestimmt wird, dass der Eingabewert (Xin) nicht zwischen: dem ersten Wert des Indexvektors (X), der bei dem berechneten Vektorindex evaluiert wird; und dem zweiten Wert des Indexvektors (X) ist, der bei dem um eins inkrementierten berechneten Vektorindex evaluiert wird; und wobei das Ausführen der Interpolationsroutine für den stückweise indizierten Indexvektor Folgendes aufweist: Suchen nach einem neuen Vektorindex, der, nachdem derselbe gefunden wurde, ein gefundener Vektorindex ist; Berechnen einer dritten Steigung basierend auf dem gefundenen Vektorindex; und Interpolieren des interpolierten Ausgabewertes (Yout), der dem Eingabewert (Xin) entspricht, basierend auf dem gefundenen Vektorindex und der dritten Steigung.
    • 15. Verfahren nach der Ausführungsform 14, wobei das Suchen nach einem neuen Vektorindex, der, nachdem derselbe gefunden wird, ein gefundener Vektorindex ist, Folgendes aufweist: Bestimmen, ob der Zellenunterschied (DiffX) größer als null ist; wenn bestimmt wird, dass der Zellenunterschied (DiffX) größer als null ist, Bestimmen, ob der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, kleiner als der Eingabewert (Xin) ist.
    • 16. Verfahren nach der Ausführungsform 15, wobei das Verfahren, wenn bestimmt wird, dass der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, größer als der Eingabewert (Xin) ist, ferner Folgendes aufweist: Durchführen einer ersten stückweisen Suche nach dem neuen Vektorindex, wobei das Durchführen der ersten stückweisen Suche Folgendes aufweist: Beginnen bei dem berechneten Vektorindex und Dekrementieren des Vektorindex um eins in Richtung der Zelle null (X0) des Eingabevektors (X) bis eine erste gefundene Bedingung auftritt, an welchem Punkt der neue Vektorindex gefunden wird, wobei die erste gefundene Bedingung auftritt, wenn bestimmt wird, dass der Eingabewert (Xin) größer als der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, oder gleich demselben ist, oder der Vektorindex null (0) erreicht; und Zurücksetzen des gefundenen Vektorindex auf den neuen Vektorindex, der gefunden wurde.
    • 17. Verfahren nach der Ausführungsform 15, wobei das Verfahren, wenn bestimmt wird, dass der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, kleiner als der Eingabewert (Xin) ist, ferner Folgendes aufweist: Durchführen einer zweiten stückweisen Suche nach dem neuen Vektorindex, wobei das Durchführen der zweiten stückweisen Suche Folgendes aufweist: Beginnen bei dem berechneten Vektorindex, Inkrementieren des Vektorindex um eins in Richtung der Zelle N (XN) des Eingabevektors (X) bis eine zweite gefundene Bedingung auftritt, an welchem Punkt der neue Vektorindex gefunden wird, wobei die zweite gefundene Bedingung auftritt, wenn bestimmt wird, dass der Eingabewert (Xin) kleiner als der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, oder gleich demselben ist, oder der Vektorindex N erreicht; und Zurücksetzen des gefundenen Vektorindex auf den neuen Vektorindex, der gefunden wurde, minus eins.
    • 18. Verfahren nach der Ausführungsform 15, wobei das Verfahren, wenn bestimmt wird, dass der Zellenunterschied (DiffX) kleiner als null ist, Folgendes aufweist: Bestimmen, ob der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, größer als der Eingabewert (Xin) ist.
    • 19. Verfahren nach der Ausführungsform 18, wobei das Verfahren, wenn bestimmt wird, dass der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, kleiner als der Eingabewert (Xin) ist, ferner Folgendes aufweist: Durchführen einer ersten stückweisen Suche nach dem neuen Vektorindex, wobei das Durchführen der ersten stückweisen Suche Folgendes aufweist: Beginnen bei dem berechneten Vektorindex und Dekrementieren des Vektorindex um eins in Richtung der Zelle null (X0) des Eingabevektors (X) bis eine erste gefundene Bedingung auftritt, an welchem Punkt der neue Vektorindex gefunden wird, wobei die erste gefundene Bedingung auftritt, wenn bestimmt. wird, dass der Eingabewert (Xin) größer als der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, oder gleich demselben ist, oder der Vektorindex null (0) erreicht; und Zurücksetzen des gefundenen Vektorindex auf den neuen Vektorindex, der gefunden wurde.
    • 20. Verfahren nach der Ausführungsform 18, wobei das Verfahren, wenn bestimmt wird, dass der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, größer als der Eingabewert (Xin) ist, ferner Folgendes aufweist: Durchführen einer zweiten stückweisen Suche nach dem neuen Vektorindex, wobei das Durchführen der zweiten stückweisen Suche Folgendes aufweist: Beginnen bei dem berechneten Vektorindex, Inkrementieren des Vektorindex um eins in Richtung der Zelle N (XN) des Eingabevektors (X) bis eine zweite gefundene Bedingung auftritt, an welchem Punkt der neue Vektorindex gefunden wird, wobei die zweite gefundene Bedingung auftritt, wenn bestimmt wird, dass der Eingabewert (Xin) kleiner als der Indexvektor, der bei dem berechneten Vektorindex evaluiert wird, oder gleich demselben ist, oder der Vektorindex N erreicht; und Zurücksetzen des gefundenen Vektorindex auf den neuen Vektorindex, der gefunden wurde, minus eins.
    • 21. Verfahren nach der Ausführungsform 14, wobei das Berechnen der dritten Steigung basierend auf dem gefundenen Vektorindex Folgendes aufweist: Berechnen der dritten Steigung ein Verhältnis von: (1) einem fünften Unterschied zwischen einem Wert des Ausgabevektors (Y), der bei dem gefundenen Vektorindex plus 1 (Ausgabevektor(gefundenerIndex + 1)) gefunden wird, und einem Wert des Ausgabevektors (Y), der bei dem gefundenen Vektorindex (Ausgabevektor(gefundenerIndex)) evaluiert wird; und (2) einem sechsten Unterschied zwischen einem ersten Wert des Indexvektors, der bei dem gefundenen Vektorindex plus 1 (Indexvektor(gefundenerIndex + 1)) evaluiert wird, und einem zweiten Wert des Indexvektors, der bei dem gefundenen Vektorindex (Indexvektor(gefundenerIndex)) evaluiert wird, zu sein.
    • 22. Verfahren nach der Ausführungsform 14, wobei das Interpolieren des interpolierten Ausgabewertes (Yout), der dem Eingabewert (Xin) entspricht, Folgendes aufweist: Interpolieren des interpolierten Ausgabewertes (Yout) als die Summe von: dem Wert des Ausgabevektors (Y) 28, der bei dem gefundenen Vektorindex (Ausgabevektor(gefundenerIndex)) evaluiert wird; und einem Produkt der dritten Steigung und einem Unterschied zwischen dem Eingabewert (Xin) und dem Indexvektor, der bei dem gefundenen Vektorindex evaluiert wird.
    • 23. Verfahren nach der Ausführungsform 1, wobei die Zellen eines linear indizierten Indexvektors (X) gleichmäßig beabstandet sind, so dass der Unterschied zwischen jeglichen zwei aufeinanderfolgenden Zellen des linear indizierten Indexvektors (X) immer der Gleiche ist; und wobei Zellen eines stückweise indizierten Indexvektors (X) ungleichmäßig beabstandet sind, so dass ein Unterschied zwischen den zwei aufeinanderfolgenden Zellen des stückweise indizieren Indexvektors (X) anders als ein Unterschied zwischen anderen zwei aufeinanderfolgenden Zellen des stückweise indizierten Indexvektors (X) ist.

Claims (10)

  1. Verfahren, das durch einen Computerprozessor in Verbindung mit einer Nachschlagetabelle durchgeführt wird, wobei das Verfahren Folgendes aufweist: Berechnen eines Wertes eines Vektorindex basierend auf einem Eingabewert (Xin), nach dem innerhalb eines Indexvektors (X) der Nachschlagetabelle gesucht wird, um einen berechneten Vektorindex zu erzeugen; Bestimmen, ob der berechnete Vektorindex kleiner als eine Länge eines Indexvektors (N) ist; wenn bestimmt wird, dass der berechnete Vektorindex größer als die Länge des Indexvektors (N) ist, erneutes Berechnen des berechneten Vektorindex durch Dekrementieren der Länge des Indexvektors (N) um eins, um einen erneut berechneten Vektorindex zu erzeugen; Bestimmen, ob der Wert des berechneten Vektorindex korrekt ist, um zu bestimmen, ob der Indexvektor (X) linear indiziert oder stückweise indiziert ist; wenn entweder bestimmt wird, dass der Wert des berechneten Vektorindex korrekt ist, oder der erneut berechnete Vektorindex erzeugt wird, Ausführen einer Interpolationsroutine für einen linear indizierten Indexvektor unter Verwendung eines gegenwärtig berechneten Vektorindex, um einen interpolierten Ausgabewert (Yout) zu bestimmen, der dem Eingabewert (Xin) entspricht, wobei der gegenwärtig berechnete Vektorindex entweder der berechnete Vektorindex oder der erneut berechnete Vektorindex ist; und wenn bestimmt wird, dass der berechnete Vektorindex inkorrekt ist, und bestimmt wird, dass der Indexvektor (X) stückweise indiziert ist, Ausführen einer Interpolationsroutine für einen stückweise indizierten Indexvektor, um den interpolierten Ausgabewert (Yout) zu bestimmen, der dem Eingabewert (Xin) entspricht.
  2. Verfahren nach Anspruch 1, wobei das Berechnen des Wertes eines Vektorindex Folgendes aufweist: Berechnen des Wertes des Vektorindex basierend auf dem Eingabewert (Xin), nach dem innerhalb des Indexvektors (X) gesucht wird, und einer Zellendifferenz (DiffX) zwischen zwei aufeinanderfolgenden Zellen des Indexvektors (X), um den berechneten Vektorindex zu erzeugen.
  3. Verfahren nach Anspruch 2, wobei das Berechnen des Wertes eines Vektorindex Folgendes aufweist: Berechnen eines Verhältnisses von (1) einem Unterschied zwischen dem Eingabewert (Xin), nach dem innerhalb des Indexvektors (X) gesucht wird, und einem Wert einer ersten Zelle (x0) des Indexvektors (X) zu (2) dem Zellenunterschied (DiffX) zwischen zwei aufeinanderfolgenden Zellen des Indexvektors (X), wobei der berechnete Vektorindex ein ganzzahliger Abschnitt des Verhältnisses ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei das Bestimmen, ob der Wert des berechneten Vektorindex korrekt ist, Folgendes aufweist: Bestimmen, ob der Eingabewert (Xin) zwischen: einem ersten Wert des Indexvektors (X), der bei dem berechneten Vektorindex evaluiert wird; und einem zweiten Wert des Indexvektors (X) ist, der bei dem um eins inkrementierten berechneten Vektorindex evaluiert wird.
  5. Verfahren nach Anspruch 4 ferner mit: Bestimmen, dass der Indexvektor (X) linear indiziert ist, wenn bestimmt wird, dass der Eingabewert (Xin) zwischen: dem ersten Wert des Indexvektors (X), der bei dem berechneten Vektorindex evaluiert wird; und dem zweiten Wert des Indexvektors (X) ist, der bei dem um eins inkrementierten berechneten Vektorindex evaluiert wird.
  6. Verfahren nach Anspruch 5, wobei das Ausführen der Interpolationsroutine für den linear indizierten Indexvektor Folgendes aufweist: Bestimmen, ob eine erste Bedingung erfüllt ist.
  7. Verfahren nach Anspruch 6, wobei die erste Bedingung ist, ob ein erster Unterschied zwischen einem ersten Wert und einem zweiten Wert gleich einem zweiten Unterschied zwischen einem dritten Wert und einem vierten Wert ist, wobei der erste Wert der Wert des Indexvektors ist, der bei dem gegenwärtig berechneten Vektorindex plus 1 (Indexvektor(gegenwärtigberechneterVektorindex + 1)) evaluiert wird, wobei der zweite Wert der Wert des Indexvektors ist, der bei dem gegenwärtig berechneten Vektorindex (Indexvektor(gegenwärtigberechneterVektorindex)) evaluiert wird, wobei der dritte Wert der Wert der Zelle eins (X1) des Eingabevektors (X) ist und wobei der vierte Wert der Wert der Zelle null (X0) des Eingabevektors (X) ist.
  8. Verfahren nach Anspruch 6 oder 7 ferner mit: Berechnen einer ersten Steigung, wenn die erste Bedingung erfüllt ist; und Interpolieren des interpolierten Ausgabewertes (Yout), der dem Eingabewert (Xin) entspricht, basierend auf dem gegenwärtig berechneten Vektorindex und der ersten Steigung.
  9. Verfahren nach Anspruch 8, wobei das Berechnen der ersten Steigung Folgendes aufweist: Berechnen der ersten Steigung ein Verhältnis von: (1) einem ersten Unterschied zwischen der Zelle eins (Y1) des Ausgabevektors (Y) und der Zelle null (Y0) des Ausgabevektors (Y), und (2) einem zweiten Unterschied zwischen der Zelle eins (X1) des Eingabevektors (X) und der Zelle null (X0) des Eingabevektors (X) zu sein.
  10. Verfahren nach Anspruch 9, wobei das Interpolieren des interpolierten Ausgabewertes (Yout), der dem Eingabewert (Xin) entspricht, Folgendes aufweist: Interpolieren des interpolierten Ausgabewertes (Yout) als die Summe von: Zelle eins (Y0) des Ausgabevektors (Y) und einem Produkt der ersten Steigung und einem Unterschied zwischen dem Eingabewert (Xin) und dem Indexvektor, der bei dem gegenwärtig berechneten Vektorindex evaluiert wird.
DE102013208299A 2012-05-08 2013-05-06 Verfahren zum Durchsuchen einer Nachschlagetabelle Withdrawn DE102013208299A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/466,746 2012-05-08
US13/466,746 US8990277B2 (en) 2012-05-08 2012-05-08 Method for searching a lookup table

Publications (1)

Publication Number Publication Date
DE102013208299A1 true DE102013208299A1 (de) 2013-11-14

Family

ID=49475705

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013208299A Withdrawn DE102013208299A1 (de) 2012-05-08 2013-05-06 Verfahren zum Durchsuchen einer Nachschlagetabelle

Country Status (3)

Country Link
US (1) US8990277B2 (de)
CN (1) CN103390022B (de)
DE (1) DE102013208299A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102565184B1 (ko) * 2018-07-09 2023-08-08 에스케이하이닉스 주식회사 디지털 회로를 모델링하는 회로 모듈 및 이를 포함하는 시뮬레이션 장치
CN110187413B (zh) * 2019-04-18 2021-10-26 广州市市政工程设计研究总院有限公司 一种城市内涝预报方法、电子设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI20000378A (fi) * 2000-02-18 2001-08-18 Nokia Networks Oy Laskutoimitusten suorittaminen digitaalisessa signaalinkäsittelylaitteessa
TWI258146B (en) * 2001-12-28 2006-07-11 Realtek Semiconductor Corp Curve lookup table method reducing memory space and data storage method
US20070073651A1 (en) * 2005-09-23 2007-03-29 Tomasz Imielinski System and method for responding to a user query
KR100646857B1 (ko) * 2005-11-25 2006-11-23 한국전자통신연구원 룩업 테이블 구성 및 인덱스 검색 방법
US8913073B2 (en) * 2006-08-09 2014-12-16 Adobe Systems Incorporated Interpolation according to a function represented using unevenly spaced samples of the function
US7516117B2 (en) * 2006-08-24 2009-04-07 International Business Machines Corporation Method for accelerating range queries using periodic monotonic properties of non-monotonic functions
CN100498782C (zh) * 2006-09-01 2009-06-10 北大方正集团有限公司 一种在全文检索系统中快速更新数据域的方法
US8054912B2 (en) * 2007-08-21 2011-11-08 Texas Instruments Incorporated Large-dynamic-range lookup table for a transmitter predistorter and system and method employing the same
CN101848248B (zh) * 2010-06-04 2012-12-26 华为技术有限公司 一种规则查找方法和装置

Also Published As

Publication number Publication date
CN103390022A (zh) 2013-11-13
US8990277B2 (en) 2015-03-24
CN103390022B (zh) 2016-09-14
US20130304782A1 (en) 2013-11-14

Similar Documents

Publication Publication Date Title
DE102010028266A1 (de) Steuergerät und Verfahren zur Berechnung einer Ausgangsgröße für eine Steuerung
DE112019007232B4 (de) Zustandsschätzvorrichtung und zustandsschätzverfahren
DE102013206264A1 (de) Verfahren und Vorrichtung zur Durchführung einer Berechnung eines datenbasierten Funktionsmodells
DE202019006019U1 (de) Techniken zum Analysieren von Fahrzeugdesignabweichungen unter Verwendung von Deep Learning mit neuronalen Netzwerken
DE102014207683A1 (de) Verfahren und Vorrichtung zum Erstellen eines datenbasierten Funktionsmodells
DE112018002002T5 (de) Luftströmungsratenmessvorrichtung
DE102014225039A1 (de) Verfahren und Vorrichtung zum Bereitstellen von spärlichen Gauß-Prozess-Modellen zur Berechnung in einem Motorsteuergerät
DE102013208299A1 (de) Verfahren zum Durchsuchen einer Nachschlagetabelle
DE19513960A1 (de) Abbildung eines Graphen in einen Speicher
DE4406300C2 (de) Lineares Interpolationsverfahren
DE102008046505B4 (de) Verfahren zur Bildverarbeitung von Stereobildern
DE102013206276A1 (de) Verfahren und Vorrichtung zum Erstellen eines Funktionsmodells für ein Steuergerät eines Motorsystems
DE102016208178A1 (de) Softwaresegmentierungsverfahren, Softwaresegmentierungsvorrichtung und fahrzeugeigene Vorrichtung
WO2008034862A1 (de) Mischung unterschiedlich bearbeiteter röntgenbilddaten
DE102018101166A1 (de) Automatisierte verfahren zur umwandlung in ein datenformat geringerer genauigkeit
EP0449363B1 (de) Schaltungsanordnung zur Bestimmung der Lage von Extrem- werten einer Ähnlichkeitsfunktion
DE112020007889T5 (de) Bildverarbeitungseinrichtung, programm und bildverarbeitungsverfahren
CN105653672A (zh) 一种基于时间序列的计算机数据挖掘方法
DE102017118996B3 (de) Verfahren zur Bestimmung von einflussführenden Parameterkombinationen eines physikalischen Simulationsmodells
DE102014208379A1 (de) Verfahren und Vorrichtung zum Ermitteln eines Funktionswerts eines bezüglich einer Eingangsgröße invertierten datenbasierten Funktionsmodells
EP1254415A1 (de) Vorrichtung, speichermedium und verfahren zum ermitteln von objekten mit grossen ähnlichkeit zu einem vorgegebenen objekt
DE112019006397T5 (de) Entwicklungsassistenzeinrichtung, entwicklungsassistenzsystem und entwicklungsassistenzverfahren
DE102014118905A1 (de) Verfahren zur Vor- und Nachverarbeitung einer schnellen Arkustangensberechnung
DE102016115331A1 (de) Verfahren und Vorrichtung zur Bestimmung eines Modells eines technischen Systems
DE19710463C2 (de) Verfahren zur automatischen Differentiation auf einem Rechner insbesondere zur Simulation elektronischer Schaltungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee