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

plot(KomplexeMatrix,'.') und dann set(NeueKomplexeMatrix)

 

WebFritzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 16:25     Titel: plot(KomplexeMatrix,'.') und dann set(NeueKomplexeMatrix)
  Antworten mit Zitat      
Ich habe eine Reihe von Matrizen mit komplexen Werten und möchte diese Werte gerne der Reihe nach plotten. Der Einfachheit halber nehmen wir uns nur zwei Matrizen, z.B.

A = [1+i,2-i ; 3,4+i]

B = [1,2+i ; 5-i,9].

Zunächst mache ich

Code:
H = plot(A,'.b','EraseMode', 'none')


Sieht gut aus. Er plottet mir die vier Punkte. Den EraseMode setze ich auf 'none', damit die Punkte von A im Plot bleiben, wenn ich die Punkte von B hinzufüge. Aber dieses Hinzufügen ist mein Problem. Für Vektor-Plots geht das mit

Code:
set(H,'XData',x,'YData',y);


Doch leider gibt es nicht sowas wie 'MatrixData'. Wie bekomme ich die Punkte von B in meinen Plot? Wenn ich

Code:
set(H,'XData',real(B),'YData',imag(B));


eingebe, bekomme ich die Fehlermeldung

"Value must be a column or row vector",

obwohl im Hilfe-Thema "Lineseries Properties" bei XData steht: "Vector or matrix".


Ich würde mich über eine Antwort von euch freuen.


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 21.07.2011, 18:36     Titel:
  Antworten mit Zitat      
Wieso benutzt du nicht einfach

Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
WebFritzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2011, 18:47     Titel:
  Antworten mit Zitat      
Hm, und dann? Ich verstehe nicht ganz, was du mir sagen willst. Wie kriege ich mit "hold on" meine B-Daten in den Plot? Einfach wieder ein Plot?
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 21.07.2011, 18:59     Titel:
  Antworten mit Zitat      
Code:
plot(A, '-b')
hold on
plot(B, '--r')


Entweder ist das die durchaus triviale Lösung für dein Problem, oder du müsstest es nochmal präzisieren Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
WebFritzi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2011, 03:24     Titel:
  Antworten mit Zitat      
Jo, ok, das klappt. Vielen Dank! Hab aber irgendwo gelesen, dass ein neuer Aufruf von plot langsamer vonstatten geht als das Arbeiten mit set und dem Handle. Ist da was dran? Meine Matrizen sind sehr groß...

Dieses "hold on" friert also alle Eigenschaften des Plots ein, und ich darf mit einem neuen plot() neue Objekte hinzufügen ohne die alten zu ändern. Richtig?
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 22.07.2011, 09:21     Titel:
  Antworten mit Zitat      
Korrekt. Das was du vorher gemacht hast, ist eigentlich für ganz andere Zwecke geeignet.

Wenn du x-Werte hast, kannst du das übrigens auch in eine Zeile schreiben:

Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 23.07.2011, 19:43     Titel:
  Antworten mit Zitat      
wenn du mit der set-Lösung arbeiten willst, sollte das auch gehen.
Guck dir aber mal die Form der dort hinterlegten Werte an:
Code:

dann siehst du, dass die Werte recht kompliziert in einem Cellarray verbaut sind - dein neues Array, was du mit Set belegen willst, muss dann auch die Form haben.

Bei normalen plots würde das so gehen, wie du es ungefähr vorhast (auch wenn noch der get-Teil fehlt, um die alten werte wieder mitzuspeichern).
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
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: 24.07.2011, 01:48     Titel:
  Antworten mit Zitat      
Hallo Andy386,

Um genau zu sin sind die Wert nicht in einem Cell-Arrays hinterlegt, sondern zunächst in DOUBLE Arrays. Aber "H" ist ein Vector und deshalb erstellt "get(H, ...)" ein Cell-Array.
Das anfängliche "H=plot(Matrix)" erzeugt nämlich nicht einen, sondern zwei LINE-Obkjekte.

Die Geschwindigkeitsvorteile durch SET statt dem neu zeichnen per PLOT sind relevant, wenn man z.B. in einer Animation ein paar tausend Dreiecke erstellt, z.B. per SPHERE(60). Für ein paar Linien dürfte der Laufzeitunterschied nicht bemerkbar sein.

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.