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

Mehrere 2D-Konturplots in 3D-Plot

 

muchael
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2015, 10:23     Titel: Mehrere 2D-Konturplots in 3D-Plot
  Antworten mit Zitat      
Hallo,

ich möchte mehrere 2D-Kontourplots in einem 3D-Plot darstellen und mir fehlt leider komplett die Idee, wie ich das machen kann.

Meine Daten sehen wie folgt aus:

x - Vektor der x-Koordinaten
y - Vektor der y-Koordinaten
u - Geschwindigkeitsfeld als Matrix

in 2D sieht das dann so aus:
Code:


Es handelt sich um Geschwindigkeitsfelder, die zu verschiedenen Rotorpositionen aufgenommen wurden und nun möchte ich diese, wie in dem angehängten Bild plotten. x und y sind immer gleich und die Ebene müsste also nachträglich gedreht werden.

Bsp.:

Drehung um x-Achse bei y = 0

Daten
x=[0 1 2 3 4];
y=[10 11 12 13 14];
u1, u2, u3 - 5x5 Matrix

Nun sollen u1 um 0°, u2 um 10° und u3 um 20° gedreht werden und in einem Plot angezeigt werden (wie im Bild im Anhang).

Ich hoffe es kann mir da weitergeholfen werden. Vielen Dank.

Unbenannt.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt.PNG
 Dateigröße:  49.95 KB
 Heruntergeladen:  515 mal
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 15.09.2015, 11:09     Titel:
  Antworten mit Zitat      
ok dein beispielbild ist schon sehr konkret. aber ich würde mal folgendes versuchen. ich hab mir eine funktion C2xyz aus dem FEX geholt

Code:
[X,Y,Z]=peaks;
[C,h]=contour(X,Y,Z);

[x,y,z]=C2xyz(C);
for k=1:3
    for l=1:numel(x)
        plot3(x{l},y{l},k*ones(size(x{l})))
        hold on
    end
end
   

wie du sihst hast du nun für alle countour linien die x y und zugehörigen z werte. nach den z-werten machst du die farbe und dann kannst du ja mit koordinaten transfromtion die lininen drehen und mit plot3 darstellen. ich hab sie jetzt nur mal zur veranschaulich übereinander gepackt.
das wäre jedenfalls mein ansatz dazu
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
muchael
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2015, 11:55     Titel:
  Antworten mit Zitat      
Hi,

vielen Dank für die schnelle Antwort. Darauf lässt sich aufbauen Smile.

Nur wie kann ich die Flächen dazwischen "ausmalen"? Kann ich dazu irgendwie die Farben auslesen, die ich für die z-Werte in meinem Konturplot verwendet habe oder direkt eine colormap dafür verwenden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 15.09.2015, 12:17     Titel:
  Antworten mit Zitat      
das hört sich mehr nach etwas wie contourf and und nicht wie von dir angegeben contour und ist somit eine ganz andere problematik.
da würde ich eher ein surface plot nehmen.
Code:
X=linspace(0,10,100);
Y=X;
[XX,YY]=meshgrid(X,Y);
[CC]=peaks(XX,YY);
ZZ=zeros(size(XX));
surf(XX,YY,ZZ,CC)

wenn du jetzt XX,YY und ZZ mit eine drehmatrix bearbeites kannst du die ebene ja im raum drehen und die farbe ergibt sich aus den uhrsprünglichen Z werten, hier CC genannt.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
muchael
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2015, 12:25     Titel:
  Antworten mit Zitat      
Okay, dann probier ich das später aus. Das scheint mein Problem zu lösen. Vielen vielen Dank.

Ich habe bei contour immer ('Fill', on) verwendet. Ist es besser contourf zu verwenden?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 15.09.2015, 12:30     Titel:
  Antworten mit Zitat      
Zitat:
Ich habe bei contour immer ('Fill', on) verwendet.

Zitat:
Code:

wenn du etwas verwendest musst du es auch hinschreiben. das zu erraten "was du sonst immer machst" ist sehr schwer.
Zitat:
Ist es besser contourf zu verwenden?

kommt drauf an was man erreichen will contourf zeichnet noch schwarze umrandungslinien und füllt automatisch.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
muchael
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2015, 12:46     Titel:
  Antworten mit Zitat      
stimmt, mein Fehler. Werde in Zukunft versuchen, das besser zu beschreiben. Ich wollte es möglichst allgemein halten.

Vielen vielen Dank nochmal!
Private Nachricht senden Benutzer-Profile anzeigen
 
muchael
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.09.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2015, 23:12     Titel:
  Antworten mit Zitat      
Hallo nochmal,

es hat soweit funktioniert. Aber ich krieg es einfach nicht hin, den plot richtig zu drehen, weder manuell noch im code. Das Bild wie es im Moment aussieht habe ich angehängt.

ich möchte die y-Achse nach oben gerichtet haben, die x-Achse schräg nach rechts in die in die Bildebene rein (so wie in meinem ersten Beispielbild) und z aus dem Bild schräg nach rechts raus.

Code:

figure1 = figure;
axes1 = axes('Parent',figure1,'DataAspectRatio',[1 1 1]);
view(axes1,[-115 -18]);
hold on
axis equal;

surf(XX1,YY1D,ZZ1D,U1,'Parent',axes1,'LineStyle','none');
surf(XX2,YY2D,ZZ2D,U2,'Parent',axes1,'LineStyle','none');
surf(XX3,YY3D,ZZ3D,U3,'Parent',axes1,'LineStyle','none');
surf(XX4,YY4D,ZZ4D,U4,'Parent',axes1,'LineStyle','none');
surf(XX5,YY5D,ZZ5D,U5,'Parent',axes1,'LineStyle','none');
surf(XX6,YY6D,ZZ6D,U6,'Parent',axes1,'LineStyle','none');
 


Wie muss ich die Parameter bei "view" ändern oder gibt es da bessere Herangehensweisen? Im Fenster mit der Maus zurechtziehen funktioniert bei mir nicht.

test_drehung.jpg
 Beschreibung:

Download
 Dateiname:  test_drehung.jpg
 Dateigröße:  19.55 KB
 Heruntergeladen:  527 mal
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.