xlim verändern bei einem kontinuierlichem Zeitsignal
Sebasti
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.10.2015, 17:29
Titel: xlim verändern bei einem kontinuierlichem Zeitsignal
Hallo Zusammen,
ich lese aus einem Serial Port ein Zeitsignal heraus. Über eine While Schleife erstelle ich einen kontinuierlichen Plot. Leider verändert sich xlim automatisch, d.h. je länger das Signal wird desto weiter zoomt das Programm aus dem Plot heraus. Ich möchte aber, dass das Signal dauerhaft nur in einem Zeitbereich von 6 Sekunden zusehen ist.
Hier mein Code:
Code:
%% Define and open serial port delete(instrfindall);
s = serial ('COM2');
set(s, 'BaudRate', 115200);
set(s, 'DataBits', 8);
set(s, 'StopBits', 1);
time = now; %actual time
voltage = 0; %define variable for signal
while ~isequal(datestr(now,'HH:MM:SS'),stopTime)
%time
time(count) = now;
%Reading Signal from serial port
signal = fread(s);
%Mean value of signal (vector length512)
voltage(count) = mean(signal);
%real-time plot set(plotHandle,'YData',voltage,'XData',time);
set(figureHandle,'Visible','on');
xmin = now - numTimeInterval1;
xmax = now + numTimeInterval1;
xlim([xmin xmax]);
ylim([-0.5100]);
%Transformation of x-axis value in time
datetick('x','HH:MM:SS');
Wenn ich den Code so laufen lasse, hat die X_achse gar keine Achsenbeschriftung. Lasse ich xlim weg, bleibt wie beschrieben xmin immer gleich aber xmax wird, je länger das Signal dauert, immer größer.
so länglicher Code ist ohne Beispieldaten schwer zu durchblicken.
Die Optionen 'keeplimits' oder 'keepticks' sollten helfen.
Wenn du R2014b oder aktueller hast, würde ich zu datetime raten. Dort ist das Zoom-Verhalten deutlich besser.
Grüße,
Harald
Sebasti
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.10.2015, 18:07
Titel:
Hallo Harald,
vielen Dank für deine schnelle Antwort. Ich habe beide Option bereits vorher schon getestet, leider ohne Erfolg.
Beispieldaten zu Verfügung zu stellen ist ein bisschen schwierig. Ich hätte gerne, dass durchgehend wenn in der Schleife ein Signal eingelesen wird, dass Signal in einem Bereich von 6 Sekunden (aktuelle Zeit +- 3 Sekunden) dargestellt wird, da es sich um ein EKG Signal handelt. Also xlim folgendermaßen nach jedem durchlauf neu angepasst wird:
Matlab versucht jedoch das ganze Signal in einen Plot zubekommen, xmax wird also immer größer und xmin bleibt gleich. Wird die Zeitskala größer kann das EKG Signal nicht mehr vernüpftig interpretiert werden.
zunächst mal: welche Version hast du? Mit R2014b oder neuer würde ich wie gesagt datetime verwenden.
Zitat:
Ich habe beide Option bereits vorher schon getestet, leider ohne Erfolg.
Was genau hast du versucht, und was ist dabei aufgetreten?
Zitat:
Beispieldaten zu Verfügung zu stellen ist ein bisschen schwierig.
Sollten nicht zwei oder drei Ausschnitte des Signals reichen?
Ohne Daten ist das nunmal nicht nachzuvollziehen. Statt dass ich mir jetzt Daten aus den Rippen schneide, bei denen das Verhalten am Ende nicht auftritt, wäre es schon nett, wenn du das übernimmst.
Die Problematik ist an sich klar. Mit den genannten Optionen sollte aber vermieden werden können, dass sie auftritt.
Grüße,
Harald
Sebasti
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.10.2015, 09:30
Titel:
Hallo Harald,
ich habe Beispieldaten über einen Zeitraum von 30 Sekunden eingelesen und beigefügt über:
Bei keeplimits hat sich nichts verändert und bei keepticks ist die Achsenbeschriftung verschwunden (genau wie bei der dritten Variante). Zudem habe ich mir am Ende einfach mal einen Ausschnitt über 24 werte plotten lassen.
und was soll ich jetzt mit den Daten anfangen? Zumal time auch noch so abgespeichert ist, dass es sich ja gar nicht ändert, da die Dezimalstellen fehlen.
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
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.