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.
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