LabVIEWForum.de - Wie Array interpolieren?

LabVIEWForum.de

Normale Version: Wie Array interpolieren?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Leute,

ich benutze das Beispiel "Draw Graph" um eine Art Höhenprofil zu zeichnen. Dieses Beispiel schreibt zu jedem bestimmten Punkt den jeweiligen X- bzw. Y-Wet in ein 1-dimensionales Array. Soweit so gut, ich kann diese Werte auch auslesen und damit arbeiten, jedoch bräuchte ich auch die Werte dazwischen. Ich muss sozusagen aus den einzelnen Stützstellen den Graphen interpolieren. Wie kriege ich das hin? Es gibt ja das Element "Array interpolieren", jedoch werde ich aus diesem nicht ganz schlau. ich kann dem Element ja einen Index übergeben, an welcher Stelle interpoliert werden soll, oder? Wie funktioniert das ganze?

MfG

Kons
Moin!

Achtung - Antwort hier aus dem Gedächtnis, hoffentlich passt esWink

Es müssten da drei Eingänge sein:
Y - Die zu interpolierenden Daten
X - Die dazu passenden Stellen (falles es unregelmäßig sein sollte)
xi - die neuen Stellen (ergeben sich durch die neue Abtastrate)

Also wenn jetzt die Zahlenfolge 10,20,30 auf 10,11,12,13,...,30 interpoliert werden soll, müsste das X entsprechen 0,10,20 und das xi 0,1,2,3,...,30 sein.
hmm, ja so is das glaub ich nur kann ich es auf mein beispiel nicht so richtig anwenden...also, ich habe 2 1-dimensionale Arrays, einer enthält die X-Werte, einer die Y-Werte. Ein X/X Paar hat also immer den gleichen Index in seinem jeweiligen Array. Nun habe ich aber nur Y-Werte für ausgewählte X-Stellen. Ich habe also eine X-Skala, die von 0-100ß geht, habe aber nur an Beispielsweißse 20 Stellen mittendrin Stützwerte.
Wie muss ich da jetzt vorgehen um für jeden beliebigen X-Wert(in meinem Fall 0,1,2,3...,1000) den passenden Y-Wert zu ermitteln?

MfG

Kons
Y - Deine Y-Werte (lückenhaft)
X - Die dazu passenden X-Werte (also auch lückenhaft)
xi - Die X-Werte, diesmal aber fortlaufend

Also z.B.
Y = (1,2,4,5)
X = (0,1,3,4)
xi = (0,1,2,3,4)

da sollte sowas rauskommen wie
yi = (1,2,3,4,5)
Ah ok, also das "Array Interpolieren" Element hat nur 2 Eingänge, einmal für das zu interpolierende Array und dann den Index, also die Stelle, die interpoliert werden soll. Das ganz funktioniert auch, nur is jetzt noch das Problem, wenn ich zum Beispiel einen X-Wert von 74,6 habe und den Y-Wert an dieser Stelle haben will, dass ich dem Interpolierer nicht einfach sagen kann, interpoliere an der Stelle 74,6, sonern ich habe ja nur den Index der Stützstelle und müsste jetzt gucken, zwischen welchen Stützstellen ds genau ist. Also zwischen Nr. 10 und 11 vieleicht. Gibts nich ne Möglichkeit, wie ich einfach die X-Stelle angeben kann und ich kriege die passende Y-Stelle ausgespuckt?
' schrieb:. Wie kriege ich das hin? Es gibt ja das Element "Array interpolieren", jedoch werde ich aus diesem nicht ganz schlau.
Prinzipiell könnte man dies Funktion zwar verwenden, wenn Du immer nur einen Zwischenpunkt brauchst und die Interpolation nur linear zu sein braucht. Nur: Es gibt da unter "Mathematik/ Interpolation und Extrapolation" Funktionen, die sind 1000 mal so leistungsfähig wie diese. z.B. diese:
[attachment=12514]
naja, ich brauch ja im prinzip ja nur eine lineare interpolation.

also nochmal genauer zu meinem Problem:

Ich zeichne einzelne Punkte eines Graphens. Ich habe jeweils ein 1-dimensionales Array für die X-Werte und eines Für die Y-Werte. Somit bekomme ich die Stützwerte meines Graphens.

Die laufende Nr. n den Arrays ist auch die Nr. des Stützwertes.

Ich habe nun eine X-Achse, die von 0 bis 1000 geht und eine gewisse Anzahl von Stützstellen (So etwa 20). Diese sind bunt auf der X-Achse verteilt und entsprechen nicht der laufenen Nr. der Stützstellen.

Was ich nun bekommen möchte ist eigentlich ein Array, in dem zu jedem X-Wert (0,1,2,3,4...,1000) der interpolierte Y-Wert steht. Das ganze soll linear sein, das heißt die Punkte werden nur verbunden.

MfG

Kons
So, ich hab jetzt erste Erfolge erzielt, jedoch sieht das nich so aus, wie ich es will^^

Ich hab mal den Teil vom Blockdiagramm reingestellt, der die Interpolation macht.

Der linke Graph im Frontpanel ist der gezeichnete mit den einzelnen Stützstellen und der rechte der Interpolierte...Ähnlichkeiten sind zu erkennen, aber irgendwo steckt noch nen grundsätzlicher Fehler. Hat da jemand ne Ahnung?

[attachment=12519]

[attachment=12520]
Hat keiner ne Idee, was da falsch sein könnte?
Rtmfx

Online-Hilfe zum VI öffnen (Strg->H)! Der obere Ausgang ist Y, der darunter X.

Außerdem verstehe ich immer noch nicht so ganz, was du genau willst.

1. Möglichkeit: Du willst eine lineare Ausgleichsgerade durch all deine Punkte legen?! Dann bist du mit diesem VI auf dem Holzweg.
2. Möglichkeit: Du willst "nur" immer zwischen 2 deiner "Messpunkte" eine Gerade legen. Dann müsstes du eigentlich nur deine Arrays ordnen, den Rest macht der Graph.

MfG, Jens
Seiten: 1 2
Referenz-URLs