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

Länge eines geplotteten Vektors auslesen...?

 

Willa
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 80
Anmeldedatum: 23.05.08
Wohnort: Bremen
Version: Willa v1.0
     Beitrag Verfasst am: 05.08.2008, 18:45     Titel: Länge eines geplotteten Vektors auslesen...?
  Antworten mit Zitat      
Hallo! Ich habe da mal wieder ein Problemchen...
Ich möchte per "quiver" vektoren plotten, allerdings sollen manche vektoren eine andere Farbe bekommen. Ich habe das so gelöst:
Code:
hold on;
quiver (xtable(typevector==3),ytable(typevector==3),utable(typevector==3),vtable(typevector==3),'b','AutoScale' , 'off');
quiver (xtable(typevector==2),ytable(typevector==2),utable(typevector==2),vtable(typevector==2),'y','AutoScale' , 'off');
quiver (xtable(typevector==1),ytable(typevector==1),utable(typevector==1),vtable(typevector==1),'r','AutoScale' , 'off');
quiver (xtable(typevector==0),ytable(typevector==0),utable(typevector==0),vtable(typevector==0),'g','AutoScale' , 'off');
hold off;


Allerdings würde ich eigentlich trotzdem gerne die "AutoScale" funktion von matlab nutzen. Wenn ich die aber einschalte, dann werden die verschiedenfarbigen Vektoren total unabhängig voneinander skaliert. D.h. die gelben Vektoren sind z.B. total riesig, während die grünen alle ganz klein sind. Dabei sind aber alle Vektoren in Wirklichkeit ungefähr gleich lang.
Kann ich irgendwie erstmal die grünen Vektoren mit "AutoScale on" plotten, dann deren skalierungsfaktor auslesen, und diese auf die anderen Vektorgruppen anwenden? Wenn ich bei allen Vektoren "Autoscale" auf z.B. 0,9 setze dann bringt das nichts, da dieser Faktor leider auch noch von der Dichte der Vektoren abhängig ist...
Hat jemand von euch einen Tipp oder ein Workaround?
Vielleicht kann ich ja erstmal alle Vektoren plotten und die danach erst einfärben...?

Vielen Dank für eure Hilfe,
viele Grüße,
William


P.S.: Als eine Art Notlösung fällt mir im moment nur ein erstmal alle Vektoren zu plotten, und dann per "scatter" manche Vektoren gelb/grün/blau etc. "einzukreisen". Aber schön ist das nicht...
Private Nachricht senden Benutzer-Profile anzeigen


Willa
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 80
Anmeldedatum: 23.05.08
Wohnort: Bremen
Version: Willa v1.0
     Beitrag Verfasst am: 06.08.2008, 11:10     Titel:
  Antworten mit Zitat      
Nagut, ich könnte auch vor dem plotten jeden Vektor aus jeder Gruppe einfach mit einem Skalierungsfaktor multiplizieren... Dadurch kann ich ja dann bestimmen wie groß die Vektoren geplotted werden... Allerdings muss ich dann auch das "Data Cursor" tool anpassen, das zeigt dem Benutzer ja sonst falsche Werte an...
Alles irgendwie nicht so richtig elegant. Keine weiteren Vorschläge von euch...?

Viele Grüße,
William
Private Nachricht senden Benutzer-Profile anzeigen
 
Willa
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 80
Anmeldedatum: 23.05.08
Wohnort: Bremen
Version: Willa v1.0
     Beitrag Verfasst am: 06.08.2008, 22:02     Titel:
  Antworten mit Zitat      
Hi!
Ich habe jetzt eine Lösung für ein "manuelles AutoScale" gefunden:
(step ist der Abstand zwischen den Datenpunkten)

Code:
maxlength=max([max(max(abs(u))), max(max(abs(v)))]);
scalefactor=step/maxlength;
quiver (x(typevector==0),y(typevector==0),u(typevector==0)*scalefactor,v(typevector==0)*scalefactor,'g','AutoScale' , 'off')
quiver (x(typevector==1),y(typevector==1),u(typevector==1)*scalefactor,v(typevector==1)*scalefactor,'r','AutoScale' , 'off')
quiver (x(typevector==2),y(typevector==2),u(typevector==2)*scalefactor,v(typevector==2)*scalefactor,'y','AutoScale' , 'off')
quiver (x(typevector==3),y(typevector==3),u(typevector==3)*scalefactor,v(typevector==3)*scalefactor,'b','AutoScale' , 'off')


Der Data Cursor zeigt nun trotzdem noch die richtigen Werte an, da u und v ja nicht verändert wurden sondern nur skaliert geplotted werden...

Viele Grüße,
William
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.