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

3D Profil erstellen

 

Chack
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 10.10.08
Wohnort: Reykjavik
Version: ---
     Beitrag Verfasst am: 24.03.2009, 12:01     Titel: 3D Profil erstellen
  Antworten mit Zitat      
Ich habe x,y und z Koordinaten von einer Landschaft. Jetzt möchte ich ein grobes 3D Profil von dieser Landschaft mit mit Hilfe dieser Koordinaten erstellen. Ich dachte der surf-Befehl wuerde das fuer mich erledigen, aber surf(x,y,z) funktioniert nicht.
Wenn ich Vektoren x1 bis xn, y1 bis yn und eine Matrix mit den z-Werten diagonal von z1,1 bis zn,n erstelle, dann kann ich diese mit surf(x,y,z) zwar plotten, jedoch bekomme ich nicht das richtige Profil, da die Punkte wahrlos miteinander verbunden sind.
Hat jemand eine Idee?

Vielen Dank.
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 24.03.2009, 14:26     Titel:
  Antworten mit Zitat      
Hallo,

eine Möglichkeit wird z.B. in
http://www.mathworks.com/support/so.....A1.html?solution=1-44VXA1
dargestellt.
Eine andere erhält man durch Projektion auf ein Gitter, siehe
Code:


Ciao,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2009, 15:01     Titel:
  Antworten mit Zitat      
ich hatte das hier schonmal gepostet... aber selber mit der Forum-Suchfunktion nicht mehr gefunden :-(

deshalb hier nochmal

es gibt prinzipiell zwei Möglichkeiten beim Flächen-Plotten

1. Daten liegen in Form von Vektoren vor

Code:

x   = [1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4];
y   = [1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4];
z   = [1.9 1.8 2.4 2.7 2.9 5 3.1 2.9 2.8 2.7 2.2 1.9 1.8 2.4 2.7 2.8];

delta   = 0.1;
rangeX  = 1:delta:4;
rangeY  = 1:delta:4;

[X,Y]   = meshgrid(rangeX,rangeY);
Z       = griddata(x,y,z,X,Y,'cubic');
surf(X,Y,Z)
shading interp
view(-45,60)
zlim([0 6])
set(gca, 'CLim', [min(zlim), max(zlim)]);
colorbar
 


2. z liegt in Matrix-Form vor

Code:


x   = [1   2   3   4   1   2 3   4   1   2   3   4   1   2   3   4];
y   = [1   1   1   1   2   2 2   2   3   3   3   3   4   4   4   4];

delta   = 0.1;
rangeX  = 1:delta:4;
rangeY  = 1:delta:4;
[X,Y]   = meshgrid(rangeX,rangeY);
n       = length(x);
z_matrix    = [ 1.9 1.8 2.4 2.7;...
                2.9 5.0 3.1 2.9;...
                2.8 2.7   2.2   1.9;...
                1.8 2.4 2.7 2.8];
[n_y n_x]   = size(z_matrix);
z_interp   = interp2([1:1:n_x],1:1:n_y,z_matrix,X,Y,'cubic');


mesh(X,Y,z_interp)
grid on
title('Titel')
xlabel('x-Achse')
ylabel('y-Achse')
zlabel('z-Achse')
view(-45,60)
set(gcf,'PaperOrientation', 'landscape','PaperType', 'A4')
set(gcf,'PaperUnits', 'normalized', 'PaperPosition',[0 0 1 1])
zlim([0 6])
shading interp
set(gca, 'CLim', [min(zlim), max(zlim)]);
colorbar
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Chack
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 10.10.08
Wohnort: Reykjavik
Version: ---
     Beitrag Verfasst am: 26.03.2009, 14:02     Titel:
  Antworten mit Zitat      
Also, ich habe das mal probiert, bekomme jedoch nur "Spitzen fuer die einzelnen Werte, jedoch kein Landschaftsprofil.

Kann wollte die gespeicheren Variablen auch anhaengen, funktioniert hier aber leider nicht, kan sie aber gerne per Email, MSN oder Skype schicken, falls jemand das Programm laufen lassen will.

Test.m
 Beschreibung:

Download
 Dateiname:  Test.m
 Dateigröße:  516 Bytes
 Heruntergeladen:  661 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2009, 14:58     Titel:
  Antworten mit Zitat      
was verstehst du denn unter einem Landschaftsprofil?
und was sind Spitzen für die einzelnen Werte?

Die Lösungsansätze plotten aus einem Datensatz mit 3-Dimensionen eine Fläche im Raum

vielleicht meinst Du ja was ganz anderes...

möchtest du vielleicht einen 2D-Schnitt durch diese Fläche sehen ?

gib doch einfach mal einen kleinen Ausschnitt der Rohdaten im Forum an. Es geht ja nur ums Prinzip, muss ja nicht der ganze Datensatz sein...
Private Nachricht senden Benutzer-Profile anzeigen
 
Chack
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 10.10.08
Wohnort: Reykjavik
Version: ---
     Beitrag Verfasst am: 27.03.2009, 11:37     Titel:
  Antworten mit Zitat      
Hier ein Beispiel. Hier sieht man, was ich mit "Spitzen meine, einzelne Punkte stechen einfach heraus, anstatt dass es eine "glatte Flaeche zwischen den Werten gibt.

Code:
topx=1.0e+003 *[2.2412   -0.2623    0.3548    1.0763    0.5193    0.3047    1.3321    0.4878    0.8916    0.4885    0.1301...
    1.3449   -0.3032    0.4509    0.9365    1.2754   -0.2082    1.7446    1.6637    1.6888    2.3254    1.8997]
topy=1.0e+003 *[-0.8251   -2.1630    0.2734   -0.6245   -1.4944    0.4444   -0.9620   -2.2026   -0.6572   -1.4736   -0.2108...
    -0.9075   -2.1645   -1.4895   -0.6861   -0.9075   -2.1160    0.7286    0.6766    0.6674    0.6924    0.2456]
topz=[384.0000  404.0000  305.0000  420.0000  390.0000  309.3000  393.0000  396.5000  419.0000  280.0000  393.0000...
    303.0000  404.0000  389.0000  419.2000  396.4000  402.3000  580.0000  580.0000  573.0000  532.0000  531.0000]
delta   = 100;
rangeX  = -4000:delta:4000;
rangeY  = -4000:delta:3000;

[X,Y]   = meshgrid(rangeX,rangeY);
Z       = griddata(topx',topy',topz',X,Y);
mesh(X,Y,Z), hold
plot3(topx,topy,topz,'o'), hold off
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2009, 12:00     Titel:
  Antworten mit Zitat      
danke für das Beispiel...

aber das liegt ganz klar an den Messwerten und nicht an Matlab ;-)

sind diese Spitzen denn Fehlerhafte Messwerte ?
unter Messwerte-Ausreißer habe ich diese Thematik hier im Forum schonmal angesprochen...

man müßte dann eben diese Werte entfernen und die Fläche neu Plotten lassen...

das Problem sind also eher die Daten und nicht der Plot Befehl fürchte ich
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 - 2024 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.