Problem bei dynamischer Visuallisierung mit Matlab

Hallo Leute ich brauche mal eure Hilfe in Matlab.
Ich bin absoluter Neuling auf dem Gebiet und habe folgendes Problem.
Ich habe Matlab an einen Mikrocontroller angeschlossen der mir über die serielle
Schnittstelle seine Daten liefert(Temperatur, Luftfeuchtigkeit, Licht und Reichweite).
Ich will die Daten in Matlab einlesen und halt grafisch darstellen. Ich habe das auch so weit hin bekommen,
dass Matlab die Daten statisch
mittels der Plot-Funktion grafisch darstellt.
Ich schreibe dafür die ankommenden Daten die ja laufend aktualisiert werden in ein Array
mit von mir festgelegter Grösse und lasse dann das Array plotten.
Mein Problem ist jetzt, wie ich das hin bekomme, dass ich die Daten
dynamisch darstellen kann,sprich die Werte sollen sich in der Grafik selbst fortlaufend aktualisieren.

Hätte einer da evtl einen Tipp für mich ?

clear all;
s = serial('COM1','BAUD',19200,'DataBits',8,'StopBits',1,'FlowControl','hardware');
fopen(s);
fid=fopen('test.dat','w')
i=1;
counter=1;
for counter=1:50
 if i==21
 i=i-20;
 end;
tlog=false; %Logical initialisieren
 while ~tlog
tline=fscanf(s); %naechste Zeile aus ASCII-File holen
index\_s=regexpi(tline,'Hauptboard'); %String in tline suchen
 if ~isempty(index\_s) %Treffer?
 tlog=true;
 for j=1:4
 index\_s=regexpi(tline,':frowning:');
 if isempty(index\_s)
 index\_sem=regexpi(tline,','); %Trennzeichen suchen, wird hier
 %nicht ausgewertet
 temp=strrep(tline,',',' '); %Trennzeichen durch Blank ersetzen
 string=strread(temp,'%s',6); %String-Array erzeugen, Anzahl
 %der Variablen angeben
 temperatur(i,j)=sscanf(char(string(3)),'%d'); %Array-Elemente ausgeben

 luftfeuchtigkeit(i,j)=sscanf(char(string(4)),'%d'); %Array-Elemente ausgeben
 licht(i,j)=sscanf(char(string(5)),'%d'); %Array-Elemente ausgeben
 reichweite(i,j)=sscanf(char(string(6)),'%d'); %Array-Elemente ausgeben
 board(j)=true; 
 else
 board(j)=false;
 end;%zweites if
 tline=fscanf(s);
 end %for-Schleife
 end; %erstes if

 end % while Schleife
i=i+1;


end %erstes For

fclose(s);
fclose(fid);

%--------------------------PLOT-Funktion----------------------------------


for i=1:20
x(i)=i;
end
 a1=temperatur;
 a2=luftfeuchtigkeit;
 a3=reichweite;
 a4=licht;
 for j=1:4
 if board(j)==true
 ya1=a1(:,j);
 ya2=a2(:,j);
 ya3=a3(:,j);
 ya4=a4(:,j);

 figure;
 plot(x,ya1,x,ya2,x,ya3,x,ya4);

 grid on;
 end;%if
 end

Ich schreibe dafür die ankommenden Daten die ja laufend
aktualisiert werden in ein Array
mit von mir festgelegter Grösse und lasse dann das Array
plotten.
Mein Problem ist jetzt, wie ich das hin bekomme, dass ich die
Daten
dynamisch darstellen kann,sprich die Werte sollen sich in der
Grafik selbst fortlaufend aktualisieren.

Hallo,

am einfachsten, du beschreibst das Array „auf Umschlag“, soll heissen, wenn es voll ist fängst du vorne wieder an. Dann enthält es automatisch immer die letzten n Datensätze.

Wenn du deine fortlaufend beschriebene Logdatei behalten willst, was ja einiges für sich hat, dann nimmst du einfach in bestimmten Zeitabständen die letzten n Zeilen aus der Datei, der Effekt ist derselbe.

Gruss Reinhard

Hallo Reinhard,
danke für deine Antwort. Ich habe nur ein paar Sachen nicht genau verstanden, wie du die meinst weil wie erwähnt ich bin absolut neu auf dem Gebiet. Also ich habe das mit der Log Datei nur mal zum testen gemacht, ich nehme jetzt die gesamten Daten direkt aus dem Workspace und lasse sie da rein schreiben. Nur ich bekomme das einfach nicht hin, dass der die Daten kontinuierlich in der Grafik aktuallisiert. Das Array wird ja immer neu beschrieben, dafür habe ich ja die Abfrage gemacht, wenn i>20 wird. Nur könntest du mir vielleicht noch mal helfen weil ich weiss nicht wo ich die Endlosschleife anbringen muss (was ich doch muss oder? ) damit der die Daten richtig plottet und auch die Daten aktullisiert.

Vielen lieben Dank für deine Hilfe!

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]