1. Messwerte importieren, plotten und bearbeiten

In dieser Übung importieren Sie Messwerte eines Schreib- und Lesevorgangs von Datenträgern. Diese Daten werden anschließend geplottet und weiterverarbeitet.

Situation

In einem Betrieb wurde die Datenübertragung zweier Speichergeräte gemessen. Dabei wurden eine Minute lang Schreib- und Lesevorgänge im 100ms-Abstand aufgezeichnet. Die im txt-Format vorliegenden Messdaten sollen nun zum Vergleich der Geräte ausgewertet werden.

Hinweis

Eine Video mit der geführten Lösung finden Sie immer unten auf der Seite. Je Übung sollten Sie 90 Minuten Bearbeitungszeit einrechnen.

1. Datenimport

Importieren Sie die Messdaten mit dem Befehl importdata. Legen Sie für die jeweiligen Schreib- und Lesemessungen eigene Variablen, z.B. Write_1 und Write_2, Read_1 und Read_2, an.

Write_1 = importdata(Dateiname.txt);

Hinweis

Wenn Sie online arbeiten: Die Dateien sind in GitHub abgelegt. Sie können auf die Dateien z.B. mit https://raw.githubusercontent.com/hbrs-cse/Modellbildung-und-Simulation/master/content/13_matlab/05_matlab_videos/files/Transferdata_Read_1.txt zugreifen. Die anderen Dateien heißen Transferdata_Read_2.txt, Transferdata_Write_1.txt und Transferdata_Write_2.txt.

Wenn Sie offline arbeiten: Kopieren Sie die Datei mit den Messdaten in den Ordner, in dem sich auch Ihr aktives m-File befindet.

Transferdata_Read_1.txt

Transferdata_Read_2.txt

Transferdata_Write_1.txt

Transferdata_Write_2.txt

2. Erste Datenauswertung

Wie viele Messwerte sind jeweils vorhanden? Prüfen Sie die Anzahl mit den Befehlen length bzw. size. Was ist der Unterschied?

length(Variablenname)
size(Variablenname)

Welchen Wert haben die Übertragungsraten bei \(t = 10s\)?

Variablenname(Zeitpunkt)

Welchen Werte haben die Übertragungsraten von \(t=10s\) bis \(t=11s\)?

Variablenname(Von:Bis)

3. Visualisierung der Daten

Lassen Sie sich die Daten als Graph mithilfe des plot-Befehls anzeigen. Erzeugen Sie anschließend ein Raster im Hintergrund mittels grid on.

plot(Variablenname)

Mit hold off und hold on vor bzw. nach dem plot-Befehl können mehrere Plots in einem Fenster angezeigt werden. Lassen Sie alle 4 Messungen in einem Fenster darstellen.

Ergänzen Sie abschließend eine Legende, Überschrift sowie Achsenbeschriftungen für x- und y-Achse.

legend(Name1,Name2)
title(‘Überschrift)
xlabel(Achsenname)

4. Weitere Datenauswertung

Ermitteln Sie jeweils die größten Messwerte sowie die Mittelwerte.

max(Variablenname)
mean(Variablenname)

Die max-Funktion kann neben dem Maximalwert auch dessen Index (=Zeitpunkt) zurückgeben. Wann wurden jeweils die größten Werte gemessen?

[Wert, Index] = max(Variablenname)

5. Gruppierung und Auswertung der Daten mittels Matrix

Gruppieren Sie die Messwerte (=Vektoren) spaltenweise in einer gemeinsamen Matrix.

M = [Variable1, Variable2, Variable3, Variable4]

Welche Werte geben die mean- und max-Funktionen zurück, wenn Sie sie auf die neu erzeugte Matrix anwenden?

6. Plotten von Matrizen

Wenden Sie den plot-Befehl auf die Matrix an. Was sehen Sie?

Plotten Sie nun nur die Spalten, in welchen Sie die Schreibvorgänge abgespeichert haben.

Hinweis

Der Zugriff auf bestimmte Matrix-Werte erfolgt ähnlich wie in Aufgabe 2:

M(2,4)    % Zeigt Element aus Zeile 2, Spalte 4 an.
M(1:3,4)  % Zeigt Elemente von Zeile 1 bis 3 aus Spalte 
          % 4 an (=Vektor).
M(:,4)    % Zeigt Elemente aus allen Zeilen der 4.
          % Spalte an (=Vektor).
M(1:2,:)  % Zeigt Elemente aus allen Spalten der Zeilen
          % 1 bis 2 an (=Matrix).

7. Subplots

Eine alternative Möglichkeit, mehrere Plots gleichzeitig anzuzeigen, sind Subplots. Dabei können in einem Fenster zwei separate plot-Befehle angezeigt werden. Vor jedem plot muss Matlab mittels subplot mitgeteilt werden, wo der Plot angezeigt werden soll.

Zeigen Sie auf diese Weise die Schreib- und Lesevorgänge durch Plotten der Matrix getrennt in 2 Subplots an.

subplot(2,1,1)
plot(Variable1)
title(‘Überschrift1)

subplot(2,1,2)
plot(Variable2)
title(‘Überschrift2)

8. Abschließende Datenauswertung

Solange die Dimensionen stimmen, können Vektoren und Matrizen in Matlab natürlich auch miteinander verrechnet werden.

% Beispiel: M ist 4x6-Matrix
M(1:3,1) - M(2:4,5)
% Subtrahiert Elemente aus Zeile 2 bis 4 der 5. Spalte von % den Elementen aus Zeile 1 bis 3 der 1. Spalte. Ergebnis % ist ein Vektor.

Berechnen Sie so durch Auswertung der Matrix die Differenzen der Schreib- und Lesegeschwindigkeiten und plotten Sie diese.

Prüfen Sie abschließend, mittels einer if-Abfrage, welches Gerät jeweils schneller schreiben bzw. lesen kann. Lassen Sie sich das Ergebnis mittels „sprintf“ ausgeben.

if a>b
    sprintf(a ist größer als b.)
elseif a<b
    sprintf(a ist kleiner als b.)
else
    sprintf(a ist genau so groß wie b.)
end

9. Bonusaufgabe: Gleitender Mittelwert

Für Datenauswertungen sind oft gleitende Mittelwerte interessant, z.B. „wie oft hat es in den letzten Wochen jeweils durchschnittlich geregnet?“. Berechnen Sie für die Messvorgänge gleitende Mittelwerte über jeweils 10 Messpunkte (= 1 Sekunde) und plotten Sie diese.

Hinweis

Der folgende Code speichert die jeweiligen Spaltensummen einer Matrix in der Variablen x (=Vektor) ab. Ein gleitender Mittelwert kann durch ähnliches Vorgehen berechnet werden.

% M ist 3x10 Matrix
for i = 1:10
     % Schleife läuft mit der Variablen “i” 10x durch
     % i == 1,2,3,...,10
     x(i) = sum(M(:,i));
end

Lösung

- Hinweis: Dieses Video ist von YouTube aus eingebunden und nicht Teil des frei lizenzierten Materials! -