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-Plot 2 Achsen gleiche Richtung

 

max3.2
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 26.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 09:48     Titel: 3D-Plot 2 Achsen gleiche Richtung
  Antworten mit Zitat      
Hallo Leute,

habe ein Problem: Und zwar habe ich einen Datensatz, der zu vielen x-Werten einen z-Wert hat (wie XY Plot-linie). Das ganze wurde nun an wenigen (6) diskreten y-Werten aufgenommen, so dass sich also 6 Kurven ergeben, die in einem 3d-plot dargestellt werden sollen.

Das geht soweit mit

Code:
plot3(x-array,y-array-z-array)


ganz gut, die Dinger sind soweit geordnet und er stellt die 6 Kurven korrekt dar.

Das spezielle ist jedoch, dass die z-Werte Geschwindigkeiten darstellen, die physikalisch in y-Richtung sind. Gibt es also eine Möglichkeit das ganze zu drehen (die z-Achse) - sprich die 0-linie eines jeden x-z-plots kommt aus dem y-wert, ab da wird dann wieder in y geplottet mit dem wert aus z...
Dann sähe das ganze deutlicher aus..

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.10.2013, 12:59     Titel: Re: 3D-Plot 2 Achsen gleiche Richtung
  Antworten mit Zitat      
Hallo max3.2,

Ich kann Dir nicht folgen.
Hat der Datensatz zu vielen x- und z-Werten jeweils einen z-Wert oder genau einen z-Wert?

Mir ist nicht klar, wieso PLOT3 hier mit 2 Inputs aufgerufen wird und was genau z.B. "z-array" bedeutet - ist das ein Minus-Zeichen?

Selbstverständlich kannst Du die darstellung drehen, indem Du die Reihenfolge und Vorzeichen der Komponenten änderst.
Was genau bedeutet "das ganze zu drehen (die z-Achse)"?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
max3.2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 26.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2013, 17:53     Titel:
  Antworten mit Zitat      
Also ich versuchs noch mal Wink

Ich habe Messdaten. Diese waren mal 2D (xy) + eben den Variablenwert an dem Punkt. Zur bessren Anschauung wurden dann an 6 bestimmten X-Werten die Messdaten extarhiert, so dass ein Liniendiagramm ensteht (Y über Wert)

Diese sollen nun aber hintereinander in einem plot liegen. also meine idee

Code:
for j = 1:length(zlist)
figure
hold on
for i = 1:length(thetalist)
   
    plot3(drehzahl.(thetalist{i}).(zlist{j}).theta,drehzahl.(thetalist{i}).(zlist{j}).r,drehzahl.(thetalist{i}).(zlist{j}).cu);

end
end
 


zlist ist erst mal egal, das ist für verschieden Höhenebenen. Geht um die 6 (das ist die anzahl in thetalist, der Theta-Wert liegt auf der x-Achse) Kurven der inneren Schleife.

Die plotted er mir auch gut (siehe Bild). Das Problem: Der z-Wert der hier benutzt wird ist eine Geschwindigkeit. Diese geht aber "in echt" in Richtung X (theta +). Schön wäre es also, wenn die Kurven (und die Achse) um 90° gekippt wären, dann würde die Kurve direkt das Geschwindigkeitsfeld zeigen. Hilft das?

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  70.03 KB
 Heruntergeladen:  562 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.10.2013, 08:28     Titel:
  Antworten mit Zitat      
Hallo max3.2,

Ich zumindest verstehe das Problem noch nicht.
Zitat:
Diese waren mal 2D (xy) + eben den Variablenwert an dem Punkt.

Bei diesem ersten Satz kann ich bereits nicht mehr folgen.

Was die einzelnen Zahlenreihen bedeuten ist für das Problem nicht relevant, sondern etwas wie dies würde wohl auch helfen:
Code:
x = 1:10;
y = repmat(6, 1, 10);
z = rand(1, 10);

Nun möchtest Du eine der Komponenten irgendwie kippen. Also versuche mal das naheliegende:
Code:
figure;
hold('on');
plot3(x,y,z, 'r');
plot3(x,z,y, 'g');
plot3(z,x,y, 'b');
% etc

Vielleicht meinst Du auch etwas wie "z - z(1)". Aber ich vermute, das solche einfachen Umsortierungen das Problem lösen sollten.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
max3.2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 26.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2013, 11:34     Titel:
  Antworten mit Zitat      
Hm nein, umsortieren klappt hier leider nicht, außer ich verdenke mich.

Wie bekomme ich das gescheit erklärt...?

Also ursprünglich habe ich einen ebenen Polar-Datensatz, also eine "sortierte Matrix" mit den Koordinaten r,theta (in Grad) und dann eben den Werten (wie Geschwindigkeiten etc.)

Daraus werden nun zur besseren Darstellung (Von einem Contour-Plot zu einem Linienplot, die Contour ist zu unübersichtlich) frei gewählte Linien mit theta = const ausgeschnitten. Also zu dedizierten (#6) theta-Werten alle Funktionswerte über r, sprich z.B. Geschwindigkeit = f(r).

Nun will ich diese Kurven in ein Diagramm packen, dass man also die Entwicklung der Funktion f(r) an verschiedenen theta-Werten sieht.

Da theta ja nun immer noch vorhanden ist, dachte ich an einen 3d-plot. eben über 2 Achsen die Funktion selbst (Geschwindigkeit über r) und die 3. Achse sorgt durch den theta-wert für die Positionierung der Kurven im Raum.
Das funktioniert auch gut, wenn die Geschwindigkeit physikalisch senkrecht auf r und theta steht, den Fall habe ich in einem anderen Diagramm, da klappt es mit vertauschen.
Hier steht die geplottete Gescheindigkeit (also f(r)) aber nur senkrecht auf r, geht aber in Richtung theta.
Deshalb wäre es schön, wenn die Kurven auch die Erhöhung in Richtung theta hätten.

Noch ein anderen Versuch: Ein Geschw.Vektor zeigt mit Ursprung r,theta dann in theta, dann bleibt es 2D in einer r-theta-Ebene, mit aber 6 "ursprungslinien" an versch. theta Werten. Die Kurven sollen sozusagen "Hüllkurven" auf den Spitzen dieser Vektoren sein..

Besser?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.10.2013, 15:24     Titel:
  Antworten mit Zitat      
Hallo max3.2,

Die Erklärungen sind für mich viel zu kompliziert. Ich habe immer nur ein paar Minuten Zeit zum Anwtorten, während die Computer vor sich hinarbeiten.

Was die Daten bedeuten spielt doch keine Rolle. Poste einfach mal Beispiel Daten mit ein paar Punkten. Ob das dann ein "ebener Polar-Datensatz" ist, "in Grad" oder €, lenkt nut ab. Hauptsache es sind Zahlen, denn damit kann Matlab arbeiten.

Zitat:
Daraus werden nun zur besseren Darstellung (Von einem Contour-Plot zu einem Linienplot, die Contour ist zu unübersichtlich) frei gewählte Linien mit theta = const ausgeschnitten.

Lasse Erklärungen darüber, was du nicht machst, einfach weg. "Bessere" Darstellung ist unverständlich, wenn Du nicht ausführlich erklärst, wie "besser" definiert ist und wie genau die vorherige Version aussieht. Aber diese vorherige Version gehört ja gar nicht zum Problem.

Zitat:
Nun will ich diese Kurven in ein Diagramm packen, dass man also die Entwicklung der Funktion f(r) an verschiedenen theta-Werten sieht.

Ja, das trifft den Punkt.

Zitat:
Noch ein anderen Versuch: Ein Geschw.Vektor zeigt mit Ursprung r,theta dann in theta, dann bleibt es 2D in einer r-theta-Ebene, mit aber 6 "ursprungslinien" an versch. theta Werten.

Hm, das verstahe ich wieder nicht. Kannst Du das aufmalen und abfotografieren?

Nicht aufgeben! Die Beschreibung eines Problems ist immer kompliziert, bevor man die Lösung kennt. Gerade in einem Forum ist eine Diskussion dann nicht ungewöhnlich, im Gegenteil, das ist ja der Sinn eines Forums!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
max3.2
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 26.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2013, 16:42     Titel:
  Antworten mit Zitat      
Also im Endeffekt ist der Funktionswert f(r) skalar hinterlegt. Hat aber physikalisch eine Richtung (die Richtung verschwindet aber im post-processing / daten-management zwingendermaßen)

Im Anhang der Vektorplot durch andere Software. Da sieht man wesentlich weniger als mit den kurven, aber ist eigentlich das gleiche. Nur eben gekippt. also r,theta Ebene und dann der Wert durch den Vektor und nicht durch den z-wert dargestellt.
Ich möchte die Linie, die für ein theta-wert alle vektorspitzen verbindet. eben genau das aus 1. Bild, nur in die Ebene gekippt. Muss auch kein 3dplot sein, war nur eine Idee von mir...

bsp.jpeg
 Beschreibung:

Download
 Dateiname:  bsp.jpeg
 Dateigröße:  178.38 KB
 Heruntergeladen:  515 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.