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

image()Plot in der While-Schleife mit hold on wird langsamer

 

derTyp
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 24.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2012, 10:05     Titel: image()Plot in der While-Schleife mit hold on wird langsamer
  Antworten mit Zitat      
Hi, habe folgendes Problem, ich definiere vor der While-Schleife die figure Parameter wie XLim usw. Damit die Parameter nach dem image() erhalten bleiben, schreibe ich ein hold on vor der While-Schleife.

Das untere Minimalbeispiel zeigt das deutlich, dazu kommt noch die CPU-Auslastung von 80-90%

Code:


clear all;
clc;

set(gca,'YLim',[0 4],'XLim',[0 16]);
set(gca,'xtick',([min(0):1:max(16)]),'ytick',([min(0):1:max(4)]))
%set(gca,'YLimMode','manual','YLim',[0 4],'XLimMode','manual','XLim',[0 16]);

set(gca,'Position',[0.05 0.15 0.9 0.8150]);
%pos=get(gca,'Position')

axis image;

hold on; hold all;

while 1
    a=rand(4,16)*100;
    pause(0.01);
    image(a);
   
end
 
 


Definiere ich die Figure-Parameter mit set-Befehl in der while schleife und lasse "hold on" weg, so läuft das ohne Probleme.

Code:


%hold on; hold all;

while 1
    a=rand(4,16)*100;
    pause(0.01);
    image(a);
   
    set(gca,'YLim',[0 4],'XLim',[0 16]);
    set(gca,'xtick',([min(0):1:max(16)]),'ytick',([min(0):1:max(4)]))
    %set(gca,'YLimMode','manual','YLim',[0 4],'XLimMode','manual','XLim',[0 16]);

    set(gca,'Position',[0.05 0.15 0.9 0.8150]);
    %pos=get(gca,'Position')

    axis image;
   
end
 


Ich würde aber gerne die figure Parameter nur einmal vorher definieren, da der Code sonst unübersichtlich wird, wie geht das ohne den hold on Befehl zu nutzen?

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


derTyp
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 24.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2012, 18:13     Titel:
  Antworten mit Zitat      
Hi weiß keiner einen Ausweg oder ist die Frage unverständlich?

Ein Grund wieso ich eine Alternative zu hold on suche ist das ich eine Art Flackern im plot im figure sehe.

Wenn ich kein hold on verwende , muss ich ja in der while-Schleife nach dem image -Befehl die Parameter mit set definieren.

Wenn Matlab mal die While nicht schnell genug durchläuft sehe ich jeden Befehl einzeln, der ausgeführt wird, dadurch entsteht so eine Art "flackern" .

Gibt es da ne Alternativlösung?
Hatte es erst versucht die Figure nach ausführen der Befehle sichtbar zu machen, aber das ist leider noch schlimmer mit dem Flackern.

Habs schon mit "set(gcf,'doublebuffer','off');" versucht zu lösen, leider ohne Erfolg

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: 17.06.2012, 21:21     Titel: Re: image()Plot in der While-Schleife mit hold on wird langs
  Antworten mit Zitat      
Hallo derTyp,

Ich verstehe die Frage noch nicht.
Bitte erkläre nochmal, welcher der beiden Codes was genau demonstriert.
Es wäre hilfreich, wenn Du nur den relevanten Code postest. Die auskommentierten Zeilen verwirren nur.

Zu "clear all" habe ich hier im Forum schon einiges geschrieben. Es ist überflüssig und raubt nur Zeit.

Dies:
'xtick', ([min(0):1:max(16)])
würde ich so schreiben:
'xtick', 0:16

Ich vermute, es wäre effizienter das IMAGE nur einmal zu erzeugen, und hinterher nur die CData zu ändern.
Code:
ImageH = image(rand(100, 100, 3));
drawnow;
newImage = rand(100, 100, 3);
set(ImageH, 'CData', newImage);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
derTyp
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 24.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2012, 21:05     Titel:
  Antworten mit Zitat      
Hi Jan, vielen Dank genau das was ich brauche !
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.