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

> nerviges Bar3 - Problem

 

stoxxii

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2010, 15:08     Titel: > nerviges Bar3 - Problem
  Antworten mit Zitat      
halloo Matlab-Freaks,

ich hatte unten schon mal ein nerviges Bar3-Graphic-Problem gepostet...
nobody konnte antworten ...
vielleicht hat jemand einen Programmier-Tip zu meinem aktuellen ständigen Bar3 - Axis - Problem ...

zuerst mal der Code ....
Code:

bins = 50;
Rnorm = randn(10000, 1);

% > Compute Quartile :
xx = sort(Rnorm);
Medxx = median(xx)
disp(' ********************** ')
Q_1 = median(xx (find (xx < Medxx) ));               % > unteres Quartil für 25%
Q_3 = median(xx (find (xx > Medxx) ));               % > oberes Quartil für 25%
Quartile = [Q_1 Q_3];
% > Calculate 95% Quantile :
Q_95 =      find(xx < (xx*0.95)) ;
% ______________________________________
Strike1 = [ 2];
Strike2 = [-2];

figure(1)
hold on
     [N  X] = hist(Rnorm, bins);                              
     hb = bar3( X, N, 0.75, 'r');     view(-84, 4)
     xlabel('\bf XXX');
     zlabel('\bf ZZZ');
     title('\bf Test - Graphic : hist(X, bins)' , 'Fontsize', 14);    

     
     % > placing  Mesh at  special Point :
Point = Strike1;
[X, Z] = meshgrid(0: 0.5 :1.5,  0 : 20 : max(N));
 PY = Point*ones(size(X));

 mesh( X , PY, Z, 'Facecolor','none','EdgeColor','g', 'linewidth',1.5);
 rotate3D    
 



Nerviges vertauschen der X- Y Achsen ...
also
bitte vertauscht mir die Datenreihen zw. Y-X Achse ...
und wenn noch möglich, bitte plaziert mir das Mesh bei zugehörigen Quantil bei 95%.
Ich war etwas unfähig die Datenpunkte auszusortieren bei 95% mit dem Befehl "Find".
Danke vorab.

Beste Grüße
stoxxii


Titus
Forum-Meister

Forum-Meister


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

hmm, verstehe ich nicht. Warum die Achsen vertauschen? Warum nicht einfach das Bild drehen?

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
stoxxii

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2010, 19:26     Titel:
  Antworten mit Zitat      
halloo titus,

das ist der primitive Weg , das Bild drehen.

Warum bildet MATLAB die ausgegebenen Zahlen eben Seiten verkehrt ab ??, also die neg. zahlen stehen rechts auf der Y-Achse und die Pos. Zahlen stehen links auf der selbigen oder eben X-Achse...

Obwohl lt. sortieren , lt. Rechenoperation die Zahlenreihe mit den negat.
Ziffern beginnt, und diese müßten wie üblich im Koordinaten-System links beginnen auf der Achse ...

vielleicht fällt die noch ein helfender Rat ein oder etwas anderes ...
Dank vorab ...
Grüße
stoxxii
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 11.07.2010, 21:24     Titel:
  Antworten mit Zitat      
Hallo Stoxxii,

stoxxii hat Folgendes geschrieben:
Warum bildet MATLAB die ausgegebenen Zahlen eben Seiten verkehrt ab ??


Matlab bildet die Zahlen richtig ab. Du drehst die Achsen selbst in eine ungewöhnliche Richtung mit: "view(-84, 4)".
Kurzer Test:
Code:

Auch ohne jegliche Daten schaut man nun auf ein fast um -90 Grad gedrehtes Koordinatensystem. Damit sollte die Lösung greifbar sein...

Anmerkung: "xx (find (xx < Medxx) )" kann man vereinfachen und beschleunigen durch logical indexing zu "xx (xx < Medxx)".
Auch "Point*ones(size(X))" ist in den meisten Matlab-Versionen etwas langsamer als: "Point(ones(size(X)))".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
stoxxii

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2010, 20:12     Titel:
  Antworten mit Zitat      
halloo Jan,
Forum-Anfänger,

danke für den Hinweis mit der logischen Indexierung ,
aber bzgl.
bitte nimm mal den view(-84,4) bei mir raus, und dann müßtest du
sehen. was ich meine mit den verdrehten Daten an der Achse ...

Ich habe vielleicht das falsche Script gesendet ...

Es ist manchmal so, daß die neg. Daten wie üblich links auf der Koordinaten-Achse beginnen und die pos. Zahlen liegen dann eben rechts auf der selbigen X- oder Y- Achse , aber manchmal beginnt Matlab eben rechts mit den neg. Zahlen ....
Ich transponiere dann auch die Rows mit Columns, hilft aber auch nicht ...

ohne Einsatz von "view" oder soo ...

Danke nochmal für ein aus probieren ... ohne view ...

grüße
stoxxii
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.07.2010, 21:51     Titel:
  Antworten mit Zitat      
Hallo Stoxxii,

es hilft nicht, wenn ich den Befehl "view(-84, 4)" rausnehmen.
Es wäre notwendig, dass Du die richtigen Winkel in den VIEW Befehl einsetzt, um die 3D-Achsen aus dem richtigen Blickwinkel zu sehen.

Code:
axes;
view(3);
xlabel('x'); ylabel('y'), zlabel('z');

Hier werden die Y-Werte von 1 bis 0 dargestellt - was aus diesem Blickwinkel natürlich korrekt ist. Wenn Du möchtest, dass die Werte von links nach rechts aufsteigen, musst Du z.B. mittel VIEW die Achsen drehen. Es liegt nicht an den Daten, deshalb hilft TRANSPOSE nicht so richtig.

Ich hoffe, der Groschen fällt nun.
Gruß, Jan
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.