INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Oberfläche aus drei 1D-Arrays erzeugen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

02.02.2015, 10:44 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2015 11:21 von cdegelmann.)
Beitrag #1

cdegelmann Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2013

2013 SP1
2013
DE


Deutschland
Oberfläche aus drei 1D-Arrays erzeugen
Hallo zusammen,

ich sitze schon seit ein paar Tagen an einem Problem, welches ich bisher nicht wirklich lösen konnte.
Ich habe einen XY-Tisch, von welchem ich mir, während einer definierten Fahrt, die X- und Y- Koordinaten rausgeben lasse, welche dann anschließend jeweils in einem 1D- Array angezeigt werden.
Zusätzlich habe ich einen Sensor, welcher Abstände messen kann. Dieser gibt mir ebenfalls in Form eines 1D-Arrays die Abstandswerte heraus. Das heißt ich habe für jeden Koordinatenpunkt einen Abstandswert.
Die Wertereihe könnte beispielsweise so aussehen:

X ------------------ Y ------------------ Z

4,3 ------------------ 5 ------------------ 3,3
4,34 ------------------ 5 ------------------ 3,2
4,6 ------------------ 5 ------------------ 3
4,6 ------------------ 5,3------------------ 2,9

usw.

Jetzt möchte ich einen Oberflächengraph mit den vorliegenden Werten erzeugen. Die Punkte lassen sich in einem dreidimensionalen Koordinatensystem problemlos darstellen.
Allerdings möchte ich, dass alle Punkte eine Oberfläche generieren.
In einem anderen Forum bin ich auf parametrische Oberflächen gestoßen, welche sich auch generieren lassen, allerdings leider keinen wirklichen Bezug zu meinen Messdaten haben.
Kann mir jemand sagen, was ich genau tun muss, damit ich aus den Messwerten einen aussagekräftigen Oberflächenverlauf generieren kann? Ich habe keine Ahnung, wie ich die Abstandswerte (Z) so umforme, dass ich sie in einer Matrix darstelle.

Gruß

Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
02.02.2015, 11:23 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2015 11:24 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Oberfläche aus drei 1D-Arrays erzeugen
Hallo Christian,

in MATLAB gibt es den Befehl "griddata", der auf Basis von Vektoren x,y,z eine Oberfläche interpoliert. Dieser Befehl wird auch im MathScript-Node von LabVIEW unterstützt und ich habe damit gute Erfahrungen gesammelt. Wenn du also MathScript nutzen kannst, dann probiere das mal aus.

Ansonsten gibt es Methoden wie die "Bilineare Interpolation", die du dann selbst auf deine Daten anwenden kannst. Ist halt etwas mehr Programmieraufwand…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2015, 13:56 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2015 13:57 von Lucki.)
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
RE: Oberfläche aus drei 1D-Arrays erzeugen
Das ist aber jetzt nicht Dein Ernst, mit den mageren 4 Punkten des Beispiels eine Matrix aufspannen zu wollen? Wenn Du echte Daten posten würdest (am besten in einem VI), hättest Du eine reale Chance, die Aufgabe in Form eines VIs mundgerecht gelöst zu bekommen. Aber so...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2015, 21:07
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Oberfläche aus drei 1D-Arrays erzeugen
Wie sieht den das definierte "Raster" aus, welches du abfährst?
Die ersten Werte lassen ein "rechteckiges" Raster vermuten...

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
02.02.2015, 22:27 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2015 22:29 von cdegelmann.)
Beitrag #5

cdegelmann Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2013

2013 SP1
2013
DE


Deutschland
RE: Oberfläche aus drei 1D-Arrays erzeugen
Erstmal vielen Dank für die Antworten!

Genau, es wird eine Rechteckfläche verfahren. Dabei wird eine mäanderförmige Verfahrbewegung realisiert.
Ich habe natürlich nicht nur 4 Wertepaare, sondern meist mindestens über 1000 pro Messung.
Sollte nur als Beispiel dienen. Ich werd mir morgen mal den Befehl aus MATLAB angucken (danke dafür) und gebe dann nochmal Rückmeldung!
Außerdem werd ich nochmal in Form eines VI's reale Daten hochladen! (Stimmt natürlich, dass ich das schon eher hätte machen können Wink )

Gruß

Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2015, 00:58
Beitrag #6

teegee Offline
LVF-Grünschnabel
*


Beiträge: 49
Registriert seit: Jan 2015

2014
2003
EN


Sonstige
RE: Oberfläche aus drei 1D-Arrays erzeugen
Wenn dein Rechteck vollstaendig abgefahren wird so dass du Werte fuer alle moeglichen Kombinationen von X und Y hast, ist das alles ganz einfach. Angenommen deine Vektoren fuer X, Y und Z sehen so aus:
X: 0,1,2,2,1,0,0,1,2,2,1,0
Y: 0,0,0,1,1,1,2,2,2,3,3,3
Z: 0,1,0,5,4,2,2,4,5,0,1,0
Dann kannst du Z in einem 2D array darstellen:
Z: 0,2,2,0
1,4,4,1
0,5,5,0
Und dann X, Y und Z (2D) in einem 3D Graph darstellen:
   
Auf dem front panel sieht das so aus:
   
Hier ist das vi:

14.0 .vi  3d graph.vi (Größe: 13,23 KB / Downloads: 190)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
03.02.2015, 14:21 (Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2015 14:26 von GerdW.)
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Oberfläche aus drei 1D-Arrays erzeugen
Hallo Christian,

Zitat:So hier hab ich mal eine VI mit den drei 1D-Arrays erstellt, welche ich aus einer Testmessung erhalten habe.
Also die Vorgehensweise vom Beitrag davor klappt dabei leider nicht. Auch bei der Nutzung des Matlab-Script Nodes kam es zu Problemen. Ich denke die Anzahl der Arraywerte ist zu groß für den Speicher.
In der VI hab ich als Beispiel mal das Unterprogramm, welches eine parametrische Oberfläche erzeugen soll, mit rein gepackt (hab ich in einem anderen Forum zu dem Thema gefunden).
Der dortige Graph entspricht allerdings nicht meinen Vorstellungen einer genauen Visualisierung der Messdaten.
Vielleicht hat ja noch jemand eine Idee.

Danke im Voraus!
Es ist überhaupt nicht nett, Beiträge zurückzuziehen, während andere schon an der Antwort pfriemeln…

Außerdem: Profil_ergaenzen wenn du jetzt mit LV2013 arbeitest!

Und:
- Wenn du schon VIs anhängst, dann bitte auch mit den zugehörigen subVIs und aussagekräftigen Daten.
- "Klappt nicht" ist keine vernünftige Fehlerbeschreibung, jedenfalls habe ich die noch nie von LabVIEW präsentiert bekommen!
- Die Fehlermeldung "Es kam zu Problemen" habe ich auch noch nie von LabVIEW gesehen! (Zumindest nicht ohne weitere Erläuterung!)
- "entspricht nicht meinen Vorstellungen" ist auch nicht hilfreich, solange du deine Vorstellungen für dich behälst!
- Wenn man auf andere Threads verweist, kann man auch eine Link auf den betreffenden Quell-Beitrag einbetten!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2015, 14:48
Beitrag #8

cdegelmann Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2013

2013 SP1
2013
DE


Deutschland
RE: Oberfläche aus drei 1D-Arrays erzeugen
(03.02.2015 14:21 )GerdW schrieb:  Hallo Christian,

Zitat:So hier hab ich mal eine VI mit den drei 1D-Arrays erstellt, welche ich aus einer Testmessung erhalten habe.
Also die Vorgehensweise vom Beitrag davor klappt dabei leider nicht. Auch bei der Nutzung des Matlab-Script Nodes kam es zu Problemen. Ich denke die Anzahl der Arraywerte ist zu groß für den Speicher.
In der VI hab ich als Beispiel mal das Unterprogramm, welches eine parametrische Oberfläche erzeugen soll, mit rein gepackt (hab ich in einem anderen Forum zu dem Thema gefunden).
Der dortige Graph entspricht allerdings nicht meinen Vorstellungen einer genauen Visualisierung der Messdaten.
Vielleicht hat ja noch jemand eine Idee.

Danke im Voraus!
Es ist überhaupt nicht nett, Beiträge zurückzuziehen, während andere schon an der Antwort pfriemeln…

Außerdem: Profil_ergaenzen wenn du jetzt mit LV2013 arbeitest!

Und:
- Wenn du schon VIs anhängst, dann bitte auch mit den zugehörigen subVIs und aussagekräftigen Daten.
- "Klappt nicht" ist keine vernünftige Fehlerbeschreibung, jedenfalls habe ich die noch nie von LabVIEW präsentiert bekommen!
- Die Fehlermeldung "Es kam zu Problemen" habe ich auch noch nie von LabVIEW gesehen! (Zumindest nicht ohne weitere Erläuterung!)
- "entspricht nicht meinen Vorstellungen" ist auch nicht hilfreich, solange du deine Vorstellungen für dich behälst!
- Wenn man auf andere Threads verweist, kann man auch eine Link auf den betreffenden Quell-Beitrag einbetten!

Genau deswegen habe ich den Beitrag entfernt, da ich gesehen habe, dass die VI nicht korrekt dargestellt war. Außerdem wollte ich die Fehler nochmal genauer beschreiben.
Hätte nicht gedacht, dass da jemand so schnell ist. Deshalb SORRY von meiner Seite aus Sad
Ich stelle die Sachen gleich nocheinmal überarbeitet und in korrekter Ausführung rein.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2015, 15:36
Beitrag #9

cdegelmann Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Sep 2013

2013 SP1
2013
DE


Deutschland
RE: Oberfläche aus drei 1D-Arrays erzeugen
So nocheinmal vernünftig:

Bei der Nutzung des Math-Skript Nodes wurde mir direkt die Fehlermeldung von LabVIEW herausgegeben, dass nicht genügend freier Speicher zur Verfügung steht.
Deshalb denke ich, dass die Datenmengen einfach zu groß sind.
Das selbe Problem ereignet sich bei dem Lösungsvorschlag von teegee, denn auch dort wird mir in einer Fehlermeldung mitgeteilt, dass zu wenig Speicher vorhanden ist.

Ich habe als Beispiel mal ein Unterprogramm "Oberflächengraph drei 1d arrays" vorbereitet, in welchem drei 1D-Arrays vorhanden sind, welche ich aus einer Messung erzeugt habe.
In einem anderen Forum habe ich eine UnterVI entdeckt, welche die Bildung von parametrischen Oberflächen ermöglicht.
Diese VI "parametrische Oberfläche" habe ich mit in den Anhang gepackt, da ich diese in der BeispielVI "Oberflächengraph drei 1d arrays" nutze.
Der dort entstandene Graph interpoliert die Messdaten zu stark, deshalb hat die erzeugte Oberfläche kaum noch einen Bezug zu meinen Messdaten.

Deshalb bin ich auf der Suche nach einer Möglichkeit einen genaueren Oberflächengraph zu erstellen. Am besten wäre eine erzeugte Oberfläche, welche gar nicht interpoliert wird, da die Auflösung des Sensors 60nm beträgt.
Ich hoffe ich konnte mein Problem erläutern.

Vielen Dank im Voraus!

Gruß

Christian


Angehängte Datei(en)
13.0 .vi  parametrische Oberfläche.vi (Größe: 18,56 KB / Downloads: 178)

13.0 .vi  Oberflächengraph drei 1d arrays.vi (Größe: 729,49 KB / Downloads: 217)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.02.2015, 15:42 (Dieser Beitrag wurde zuletzt bearbeitet: 03.02.2015 15:49 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Oberfläche aus drei 1D-Arrays erzeugen
Hallo Christian,

es fehlen immer noch subVIs aus deinem "download"-Ordner...

Zitat:Am besten wäre eine erzeugte Oberfläche, welche gar nicht interpoliert wird, da die Auflösung des Sensors 60nm beträgt.
Über welchen Messbereich reden wir hier, wenn es bei dir zu "Out of Memory"-Fehlern kommt? Wie viele Messwerte hast du in einer Messreihe?

Ich sehe gerade: du hast ~29000 Elemente in deinen Arrays. Du willst also eine Fläche aus 29*29*10^6 Punkten = 841Mio Punkten erstellen? Jeder Z-Wert wird als DBL berechnet und belegt 8Byte im Speicher. Du brauchst also 8*841Mio = 6.266GiB Speicher. Hast du soviel im Rechner? Kann dein LabVIEW überhaupt mit dieser Datenmenge umgehen (Stichwort 32bit vs. 64bit)? Hmm

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  XY-Graph+Encoder zu 3D-Oberfläche Fabian123 8 5.721 09.08.2011 09:38
Letzter Beitrag: Martin Heller
  Von einzelnen 1D x-, y-, z-Arrays nach 2D X-, Y-, Z-"Grid" Arrays? bastian79 6 6.854 22.08.2009 12:07
Letzter Beitrag: schrotti
  Darstellung einer Hexadezimalzahl auf drei 7Segmentanzeigen casio 4 5.774 11.10.2008 18:10
Letzter Beitrag: IchSelbst

Gehe zu: