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

skalierung bei neuem plot behalten?

 

Anfänger 2.0
Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 04.09.2014, 13:40     Titel: skalierung bei neuem plot behalten?
  Antworten mit Zitat      
Hi leute,

folgendes Problem:

Über eine Schleife werden Messdaten ermittelt und in eine GUI geplottet.
wenn man das Ganze mit hold on macht funktioniert es zwar, allerdings wird das Ganze nach etwa 1000 Messungen stark träge.

Meine Lösung ist, ohne hold on ganze matrizen zu plotten und nicht etwa einzelne Punkte mit hold on.
Allerdings habe ich hier das Problem, dass die Skalierung sich mit jedem neuen Plot aufhebt.
Wenn ich die Skalierung nach jedem Plot aktualisiere, wird das wieder zu langsam.

Kennt jemand eine Möglichkeit die Skalierung so einzustellen, dass sie mit jedem plot erhalten bleibt?


Danke im Voraus und Grüße

euer Anfänger Wink
Private Nachricht senden Benutzer-Profile anzeigen


reichkrystofski
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 26.11.13
Wohnort: Biederitz
Version: 2006b 32bit, 2009b 64bit
     Beitrag Verfasst am: 04.09.2014, 20:38     Titel:
  Antworten mit Zitat      
Du müsstest schon etwas mehr Informationen liefern, was du da plotten willst. Wenn du hold on machst, wird das Plot Objekt ja immer größer, weil immer mehr Daten hinzukommen.

Du kannst zum Beispiel über das Plot Handle die Daten regelmäßig aktualisieren, dann bleibt der Speicherbedarf konstant:

Code:

pH=plot(rand(1,10));
ylim([0 2]);
for k=1:5,
     pause(1);
     set(pH,'xdata',k*10+1:k*10+10, 'ydata', rand(1,10));
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 05.09.2014, 10:32     Titel:
  Antworten mit Zitat      
danke für die antwort erstmal Smile
ich werde gleich mit deinem vorschlag versuchen einfach die geplotteten werte zu verändern..

was ich meinte war stark minimalisiert sowas wie:

alte lösung mit hold on
Code:

FigH = figure;
AxH = axes;
axes(AxH)
hold on
set(AxH, 'XLim', [start ende];
set(AxH, 'YLim', [start ende];
i = 1;

while bedingung == 1
    wert = Messung()
    plot(i,wert);
end
 

mit dieser Lösung habe ich wie du auch sagst einen zu hohen Speicherbedarf je nach Dauer/Anzahl der Messungen was das ganze unperformant macht.

mein "umweg" war
Code:

FigH = figure;
AxH = axes;
wert = zeros(0, 20000);
i = 1;
while bedingung == 1
    wert(i) = Messung()
    plot(wert(1:i));
%    set(AxH, 'XLim', [start ende];
%    set(AxH, 'YLim', [start ende];
    i = i+1
end
 

so ist es performanter.. allerdings verliere ich die skalierung..
und wenn ich kommentierung rausmache und jedesmal neu skaliere ist es logischerweise noch langsamer
Private Nachricht senden Benutzer-Profile anzeigen
 
huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 05.09.2014, 13:32     Titel:
  Antworten mit Zitat      
wann terminiert denn deine Schleife bzw. wann übergibst du denn den Wert für bedingung?
Das sieht nach einer endlosschleife aus, die durchaus den Speicher vollknallt!

Code:
while bedingung == 1
    wert = Messung()
    plot(i,wert);
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 05.09.2014, 16:34     Titel:
  Antworten mit Zitat      
die hab ich hier wohl vergessen Very Happy
Code:

bedingung = evalin('base','bedingung');
kommt ans ende der schleife

auf jedenfall hab ich das ganze mit set versucht..
erst dachte ich man geht das schnell.. da immer ein tic pro schleife mitläuft...
dann habe ich gemerkt dass set zu langsam ist der plot wird erst aktualisiert wenn ich aus der schleife raus bin :/
Private Nachricht senden Benutzer-Profile anzeigen
 
reichkrystofski
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 26.11.13
Wohnort: Biederitz
Version: 2006b 32bit, 2009b 64bit
     Beitrag Verfasst am: 06.09.2014, 12:41     Titel:
  Antworten mit Zitat      
Du kannst in der Schleife das Rendern des Plots erzwingen mit

Code:


Außerdem würde ich den Aufruf von
Code:
nicht kontinuierlich durchführen, sondern wenn dir eine 10 Hz refresh rate reicht, sowas wie
Code:

einfügen. Das sollte den Gesamtprozess entlasten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 07.09.2014, 14:51     Titel:
  Antworten mit Zitat      
danke für die antwort
das drawnow werde ich morgen ausprobieren

pause(0.1) würde das gegenteilige von dem erzeugen was wir erreichen wollen.

wir messen zur zeit mit etwa 0,9 sekunden pro schleife.
das wollen wir soweit wie möglich gegen 0,45 sekunden reduzieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Anfänger 2.0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 37
Anmeldedatum: 17.10.13
Wohnort: kreis Karlsruhe
Version: ---
     Beitrag Verfasst am: 08.09.2014, 10:22     Titel:
  Antworten mit Zitat      
mit drawnow funktionierts
danke für die hilfe Smile
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.