WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Darstellung einer 3D-Oberfläche anhand von Messdaten

 

biu

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2009, 16:57     Titel: Darstellung einer 3D-Oberfläche anhand von Messdaten
  Antworten mit Zitat      
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?

Vielen Dank


rcsapo
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 11.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2009, 11:05     Titel:
  Antworten mit Zitat      
Hallo,

Ich denke Du kommst zu einer passenden Lösung wenn Du dem Beispiel "Displaying Nonuniform Data on a Surface" auf der folgenden Seite ab Punkt 2 folgst:
http://www.mathworks.com/access/hel.....amp;ie=utf-8&oe=utf-8

Der Schlüssel liegt in der Verwendung der Funktion griddata, die Deine Messpunkte glättend interpoliert.

MfG,
Robert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Polis Tyrol
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 08.01.10
Wohnort: Leoben
Version: 7.9.0.529 (R2009b)
     Beitrag Verfasst am: 14.01.2010, 09:46     Titel: Probleme mit griddata
  Antworten mit Zitat      
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);

...erscheint folgende Fehlermeldung:

??? 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.
Private Nachricht senden Benutzer-Profile anzeigen
 
psykoman
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 01.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.02.2010, 23:09     Titel: Re: Probleme mit griddata
  Antworten mit Zitat      
Zitat:


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);
 




Du musst deine letzte Zeile erweitern mit
Code:

ZI = griddata(x,y,z,XI,YI,'v4');
 

Dann dürfte es funktionieren!



Nun zu meinem Problem Smile
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...

Code:

clear all; close all; clc;

load 'messwerte_corr_img.txt'

x = [messwerte_corr_img(:,1)]';
y = [messwerte_corr_img(:,2)]';
z = [messwerte_corr_img(:,3)]';

xi = 0:1:640;
yi = 0:1:480;

[XI,YI] = meshgrid(xi,yi);
ZI = griddata(x,y,z,XI,YI, 'v4');

xlabel('x')
ylabel('y')
zlabel('z')

mesh(XI,YI,ZI)
 


...kommt folgende Fehlermeldung:

************************************************************
??? 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?!?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.