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

drawnow "aussetzen"

 

Zwue
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 19.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2008, 11:22     Titel: drawnow "aussetzen"
  Antworten mit Zitat      
Hallo.
Ich habe den Befehl "drawnow" in einer for-Schleife und das Problem, dass der Plot immer weiter gezeichnet wird, matlab also am Ende des ersten Plots eine Gerade zum Anfang des zweiten Plots zeichnet. Kann ich das drawnow irgendwie am Ende des jeweiligen Zyklus stoppen? (Plots sind natürlich alle in einem Graphen.)
Danke im Voraus
Gruß, Boris
_________________

black holes are where god divided by zero
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 07.11.2008, 15:45     Titel:
  Antworten mit Zitat      
Hallo Zwue,

das Problem kann in dem Fall eigentlich beim drawnow liegen. Ich denke, es liegt daran, was Du an plot übergibst. Kopiere doch mal Deine Schleife hierher (eventuell gekürzt, ohne Berechnungen).

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Zwue
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 19.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2008, 16:13     Titel:
  Antworten mit Zitat      
Hallo.
Also erst erstelle ich einen Plot, dann kommen zwei Schleifen ineinander.

Code:

%Schleife für 4 verschiedene Berechnungen
for delx = [3,10,20,40]

    %Printroutine 1
    printer(p,fid,x,y)

    %Berechnungsschleife
    for i = 1:nstep

        %Printroutine 2
    printer(p,fid,x,y);
    end
end
 


(Die Berechnungen hab ich jetzt rausgelöscht.)

Im "printer" steht folgendes:

Code:

function printer(p,myfile,x,y)

persistent xold yold

if (exist('xold','var')==0)  
xold = x;
yold = y;
end

set(p,'XData',[xold x],'YData',[yold y])

drawnow

fprintf ('%10.6f %10.6f\n',x,y);

fprintf (myfile,'%10.6f %10.6f\n',x,y);

xold = x;
yold = y;
 


Hoffe, das Problem wird deutlich.. das Aas hört am Ende der Schleife nich auf zu zeichnen.
Danke im Voraus & Gruß,
Boris

Edit: Das "p" ist der Plot-Befehl p = plot(x,y,'-b','EraseMode','none');
_________________

black holes are where god divided by zero
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 07.11.2008, 16:52     Titel:
  Antworten mit Zitat      
Hallo Boris,

vielen Dank für den Kontext, jetzt ist es klar. Du möchtest vier Plots, je einen für jeden Wert von delx. Daher muss das plot auch in die erste Schleife hinein.

Code:
p = zeros(4,1);
count = 1;
% Schleife für 4 verschiedene Berechnungen
for delx = [3,10,20,40]

    p(count) = plot(x,y,'-b','EraseMode','none');
    % Printroutine 1
    printer(p(count),fid,x,y)

    % Berechnungsschleife
    for i = 1:nstep

        % Printroutine 2
        printer(p(count),fid,x,y);
    end
    count = count + 1;
end


p ist am Ende ein Vektor mit vier Einträgen, den handles auf die vier verschiedenen plots (falls Du sie später noch mal veränderst). Wenn Du die handles später gar nicht mehr brauchst, kannst Du count weglassen und p in jedem Schritt einfach überschreiben.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Zwue
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 19.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2008, 17:31     Titel:
  Antworten mit Zitat      
Hallo!
Erstmal danke für die Mühe.
Aber irgendwie hat das skript Stress mit dem
Code:
printer(p(count),fid,x,y)

Da kommt dann "Unbalanced or unexpected paranthesis or bracket." als Fehlermeldung.
Wenn ich das mit p statt p(count) mache, gehts zwar, aber es ändert sich nix.
Ausserdem - ich weiß nicht, ob Du das so meintest - möchte ich die vier Graphen in einem Plot haben (der Vergleichbarkeit halber).
Eigentlich passiert genau das, was ich will, aber er "unterbricht" zwischen den Plots nicht, soll heissen er zeichnet mir vom letzten x-y-Wert der ersten Berechnung eine Gerade zum ersten x-y-Wert der zweiten Berechnung.
Gruß,
Boris
_________________

black holes are where god divided by zero
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.