Wie kann ich in MATLAB eine Echtzeit-Datenvisualisierung implementieren?

Melden
  1. Initialisierung der Figur und der Plot-Objekte
  2. Erzeugung und Simulation der Datenquelle
  3. Kontinuierliche Aktualisierung der Grafik
  4. Optimierung der Echtzeit-Visualisierung
  5. Zusammenfassung

Die Echtzeit-Datenvisualisierung in MATLAB ermöglicht es, Daten kontinuierlich zu erfassen, zu verarbeiten und sofort grafisch darzustellen. Damit können Veränderungen in den Daten unmittelbar beobachtet und analysiert werden. Für die Implementierung einer solchen Visualisierung sind mehrere Schritte wichtig, darunter das Einrichten der Figur und der Plot-Objekte, das kontinuierliche Aktualisieren der Daten sowie die effiziente Darstellung ohne unnötigen Overhead.

Initialisierung der Figur und der Plot-Objekte

Der erste Schritt besteht darin, eine Figur zu erstellen und ein Plot-Objekt anzulegen, das später mit neuen Daten aktualisiert wird. Dies vermeidet das wiederholte Erstellen von Figuren oder Achsen und sorgt für bessere Performance. Typischerweise wird eine leere Grafik mit plot erstellt, deren Daten dann dynamisch angepasst werden:

hFig = figure;hPlot = plot(nan, nan);xlabel(Zeit);ylabel(Messwert);title(Echtzeit-Datenvisualisierung);grid on;

Erzeugung und Simulation der Datenquelle

In vielen Fällen werden die Daten per Messgerät, Sensor oder Netzwerk empfangen. Für ein einfaches Beispiel simulieren wir die Daten durch Berechnung von Werten, z.B. durch eine Sinusfunktion mit eingebautem Rauschen. Die zeitliche Komponente kann durch eine Schleife und eine Abtastzeit realisiert werden:

Fs = 100; % Abtastrate in HzTs = 1 / Fs; % Abtastzeitduration = 10; % Gesamtdauer in SekundennSamples = Fs * duration;timeVec = zeros(1, nSamples);dataVec = zeros(1, nSamples);

Kontinuierliche Aktualisierung der Grafik

In einer Schleife wird die aktuelle Zeit berechnet, der neue Datenwert generiert und die X- sowie Y-Daten des Plots aktualisiert. Um eine flüssige und effiziente Visualisierung zu gewährleisten, wird die Grafik mit drawnow aktualisiert. Auch das Einbinden einer kurzen Pause ist häufig sinnvoll, um CPU-Ressourcen zu schonen:

for k = 1:nSamples timeVec(k) = (k-1) * Ts; dataVec(k) = sin(2 * pi * 1 * timeVec(k)) + 0.1*randn(); % 1 Hz Sinus + Rauschen % Aktualisieren der Plotdaten set(hPlot, XData, timeVec(1:k), YData, dataVec(1:k)); drawnow; pause(Ts); % sorgt für reale Zeitverzögerungend

Optimierung der Echtzeit-Visualisierung

Damit die Visualisierung auch bei vielen Datenpunkten flüssig arbeitet, sollte darauf geachtet werden, dass nicht bei jedem einzelnen Datenpunkt eine Vollaktualisierung der Grafik durchgeführt wird. Stattdessen kann man z.B. nur alle paar Iterationen updaten oder jeweils nur einen gleitenden Ausschnitt der Daten anzeigen. Für sehr große Datenmengen ist außerdem die Verwendung von animatedline in MATLAB vorteilhaft. Dieses Objekt ist speziell darauf ausgelegt, schnell und ressourcenschonend in Echtzeit Linien an eine bestehende Grafik anzufügen:

hFig = figure;hLine = animatedline(MaximumNumPoints, 1000);xlabel(Zeit );ylabel(Messwert);title(Echtzeit-Daten mit animatedline);grid on;for k = 1:nSamples t = (k-1) * Ts; y = sin(2 * pi * 1 * t) + 0.1*randn(); addpoints(hLine, t, y); drawnow limitrate; % erhöht die Performance pause(Ts);end

Zusammenfassung

Eine Echtzeit-Datenvisualisierung in MATLAB erfolgt idealerweise durch das Setzen eines Plot-Objektes, das innerhalb einer Schleife mit neuen Messwerten versorgt wird. Die Verwendung von set oder noch besser von spezialisierte Tools wie animatedline sorgt für Performance und flüssige Updates. drawnow bzw. drawnow limitrate aktualisiert die Grafik im Fenster. Zusätzlich hilft eine realistische Pausierung mittels pause, die Anzeige an den tatsächlichen Datenfluss anzupassen sowie die Prozessorauslastung gering zu halten.

Durch diese Vorgehensweise können Sie in MATLAB eine Echtzeitvisualisierung für verschiedenste Datenquellen implementieren, vom einfachen Simulationssignal bis hin zu echten Sensordaten in kontinuierlicher Nachführung.

0

Kommentare