Darstellung einer 3D-Oberfläche anhand von Messdaten
biu
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.09.2009, 16:57
Titel: Darstellung einer 3D-Oberfläche anhand von Messdaten
Hallo zusammen,
wie der Titel schon besagt, will ich anhand von Messdaten, welche ich aus Simulationen gewonnen habe, eine schöne 3-dimensionale Darstellung erzeugen.
Hierbei handelt es sich um folgende Messwerte:
x = Fehlergröße
y = Fehlertiefe
z = resultierende Temperatur
Kurze Erläuterung:
Ich erzeuge in einer Physiksimulation Bauteile mit Fehlern unter der Oberfläche. Abhängig von der Größe und der Tiefe des Fehlers messe ich eine Temperatur an der Oberfläche des Körpers. Da diese Simulationen recht zeitaufwändig und meine Zeit ehr beschränkt ist, ist es mir nicht möglich mehr Messdaten als ich jetzt schon besitzte aus Simulationen zu gewinnen.
Mein Ziel ist, in einem 3D Diagramm eine optisch schöne Oberfläche zu erzeugen, wobei die Achsen x,y,z die oben beschriebenen Größen (Fehlergröße,Fehlertiefe,Temperatur) darstellen sollen. Dies gelingt mir nur teilweise.
Mein bisheriges Vorgehen:
a(x1,y1)=z1;
a(x2,y2)=z2;
.
.
usw.
surf(a)
Das Ergebnis ergibt zwar eine 3D-Fläche, allerdings ist diese sehr grob strukturiert und besteht aus einigen Rechtecken. Dies ist optisch nicht wirklich ansprechend. Grund hierfür ist wohl, dass ich zu wenige Messdaten für eine schöne Oberfläche habe.
Nun meine Frage:
Ist es möglich, dass Matlab mir aus den vorhandenen Messdaten eine schöne, optisch ansprechende 3D-Oberfläche zaubert?
Verfasst am: 14.01.2010, 09:46
Titel: Probleme mit griddata
Ich habe ein ähnliches Problem und versuche bereits mit griddata an eine Lösung zu kommen. Das in der "help griddata" angegebene Beispiel habe ich ohne Probleme berechnen können:
Code:
rand('seed',0)
x = rand(100,1)*4-2;
y = rand(100,1)*4-2;
z = x.*exp(-x.^2-y.^2);
ti = -2:.25:2;
[xi,yi] = meshgrid(ti,ti);
zi = griddata(x,y,z,xi,yi);
mesh(xi,yi,zi), hold on, plot3(x,y,z,'o'), hold off
Es generiert 100 zufällige Werte für x & y zwischen -2 und 2, berechnet daraus ein z nach einer bestimmten Formel und berechnet dann eine 3D-Darstellung des ganzen.
Danach wollte ich anstand zufällig verteilter x- und y-Werte linear steigende nehmen (was im Endeffekt wenig Unterschied machen sollte), dabei erscheint allerdings eine ewig lange Fehlermeldung:
Auf den Befehl...
Code:
x = -2:0.04:2;
y = -2:0.04:2;
z = x.*exp(-x.^2-y.^2);
ti = -2:.25:2;
[XI,YI] = meshgrid(ti,ti);
ZI = griddata(x,y,z,XI,YI);
??? Error using ==> qhullmx
qhull precision error: initial facet 1 is coplanar with the interior point
...
...
...
Error in ==> delaunayn at 117
t = qhullmx(x', 'd ', opt);
Error in ==> griddata>linear at 151
tri = delaunayn([x y]);
Error in ==> griddata at 120
zi = linear(x,y,z,xi,yi,opt);
Ich verstehe nicht wirklich, warum eigentlich. Hat jemand eine Idee? Ich hab keinen Plan, warum mein Code nicht so gut funktionieren sollte.
Nun zu meinem Problem
Ich habe die Pixelwerte eines Bildes (VGA-Auflösung 640x480) in eine txt-Datei geschrieben. Matlab soll nun diese Datei lesen und mir das ganze dreidimensional darstellen, wobei die x- und y-Achse die jeweiligen Koordinaten und die z-Achse den Pixelwert darstellt. In der txt-Datei gibts es 3 Spalten (1. Spalte: x, 2. Spalte: y, 3. Spalte: z) und (640 * 480) Zeilen. Wenn ich folgendes Programm laufen lasse...
************************************************************
??? Maximum variable size allowed by the program is exceeded.
Error in ==> griddata>gdatav4 at 263
d = xy(:,ones(1,length(xy)));
Error in ==> griddata at 130
zi = gdatav4(x,y,z,xi,yi);
************************************************************
Wenn ich viel kleinere Bilder nehme gehts. Bei VGA-Bildern gehts nicht. Mir ist schon klar, dass ich das ganze auch mit "imread" machen könnte. Ich will die Daten aber aus einer txt-Datei lesen.
Wer kann helfen?!?
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.