LabVIEWForum.de - Wert aus Array lesen

LabVIEWForum.de

Normale Version: Wert aus Array lesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi
Habe folgendes Problem:
Habe Messwerte (für h) die eine sinusähnlichen Verlauf ergeben. Die Funktion von h(x) ist allerdings um einiges komplizierter und nicht mit eindeutiger Lösung umzustellen.
Meine Idee war nun x dadurch zu bestimmen von der bestehenden Funktion von 0-360° eine Tabelle zu erstellen und nun den gemessenen Wert, in der Tabelle zu suchen. Gibt es hier irgendeine Funktion der mir dies ermöglicht, da die Werte nicht exakt übereinstimmen und somit oft zwischen den Werten in der Tabelle liegen.

MFG
Hartigoal
Hmmm,

wenn ich Dich richtig verstehe, würde ich eine "visuelle" Lösung anstreben.
Zeichne die Werte der Tabelle in einen XY-Graphen. Dann zeichne die Messwerte ein. Schnittpunkte der Messwerte mit den Tabellenwerten suchen (über X-Achse z.B.)...

Wäre mal eine schnelle kurz vorm Feierabend-Idee.Rolleyes

Gruß
Erst spricht Du von Messwerten mit "sinusähnlichen" Verlauf, unmittelbar darauf von einer Funktion, die "allerdings um einiges komplizierter" ist. Welche Funktion meinst Du damit und in welchem Zusammenhang stehen die Messwerte mit der Funktion? Willst Du z.B die freien Parameter dieser nicht genannten Funktion mit dem Messwerten fitten?
Als nächstes bringst Du dann eine Tabelle ins Gespräch. Wenn Du aber, so verstehe ich das, die Tabelle mit Messwerten zur Interpolation verwenden willst, wozu dann überhaupt noch diese ominöse Funktion?

Und nun die gute Nachricht: Genau das Interpolationswerkzeug, welches Du suchst, das gibt es.
Es steht unter Arrays und heißt "ID Array interpolieren"
Inputs: a) Array aus Punkten [Xi,Yi], wobei die Eckige Klammer einen Cluster mit dem beiden Punktkoordinaten beschreibt.
b) x-wert, der auch zwischen den punkten liegen kann
Output: interpolierter Y-Wert.
Es liegt in Deiner Hand, was Du als X und was als Y definierst. Ich verstehe Dich so, daß Du hier die Koordinaten tauschen müßtest, da Du ja eigentlich Y vorgibst und nach X suchst.
Was die Funktion allerdings macht, wenn die Ergebnisse mehrdeutig sind, wie. z.B beim Sinus, wenn nach dem Winkel gesucht wird, mußt Du selbst herausfinden.
Danke für die Hilfe!
Die Funktion ist ein und dieselbe. Der Verlauf ist ähnlich dem eines Sinus.
Die Funktion ist:
h=(hk/2)*(1-cos(phi*pi/180)+(lambda/2)*sin(phi*pi/180)*sin(phi*pi/180))
wobei hk eine Konstante ist!
Der gemessen Wert ist h, wobei der gesuchte Wert der Winkel phi ist.
Sie stellt den Hubverlauf eines Pumpenkolbens dar. Es geht nun darum drei Hubverläufe miteinander zu vergleichen und den Unterschied im Winkel zu errechen.
' schrieb:Die Funktion ist:
h=(hk/2)*(1-cos(phi*pi/180)+(lambda/2)*sin(phi*pi/180)*sin(phi*pi/180))
wobei hk eine Konstante ist!
Der gemessen Wert ist h, wobei der gesuchte Wert der Winkel phi ist.
Sie stellt den Hubverlauf eines Pumpenkolbens dar. Es geht nun darum drei Hubverläufe miteinander zu vergleichen und den Unterschied im Winkel zu errechen.
Das hättest Du doch gleich sagen können, worum es wirklich geht. Die Idee mit der Tabelle ist zwar naheliegend, aber aber unnötig. Es gibt Funktionen zur Nullstellenbestimmung in LV, und die brauchst Du doch auf die Funktion
f(phi) =(hk/2)*(1-cos(phi*pi/180)+(lambda/2)*sin(phi*pi/180)*sin(phi*pi/180)) - h
anzuwenden.
Und damit Du mal siehst, was in LV so alles auf einfache Weise geht, hier mal Deine Formal graphisch dargestellt. Und nun quäle Dich mal selbst mit den Nullstellen ab, melde Dich, wenn Du dazu noch Hilfe brauchst. (Hinweis: Der Code dafür muss nicht mehr sein als hier im Beispiel)
Referenz-URLs