{ "cells": [ { "cell_type": "markdown", "id": "a6aba49f", "metadata": {}, "source": [ "# 1. Messwerte importieren, plotten und bearbeiten\n", "\n", "In dieser Übung importieren Sie Messwerte eines Schreib- und Lesevorgangs von Datenträgern. Diese Daten werden anschließend geplottet und weiterverarbeitet.\n", "\n", "## Situation\n", "\n", "In einem Betrieb wurde die Datenübertragung zweier Speichergeräte gemessen. Dabei wurden eine Minute lang Schreib- und Lesevorgänge im 100ms-Abstand aufgezeichnet.\n", "Die im txt-Format vorliegenden Messdaten sollen nun zum Vergleich der Geräte ausgewertet werden.\n", "\n", "```{admonition} Hinweis\n", "Eine Video mit der geführten Lösung finden Sie immer unten auf der Seite. Je Übung sollten Sie 90 Minuten Bearbeitungszeit einrechnen.\n", "```" ] }, { "cell_type": "markdown", "id": "bd135fb2", "metadata": {}, "source": [ "## 1. Datenimport\n", "\n", "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." ] }, { "cell_type": "code", "execution_count": null, "id": "902c8d23", "metadata": {}, "outputs": [], "source": [ "Write_1 = importdata(‘Dateiname.txt‘);" ] }, { "cell_type": "markdown", "id": "fd9280a4", "metadata": {}, "source": [ "```{admonition} Hinweis\n", "**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`.\n", "\n", "**Wenn Sie offline arbeiten:** Kopieren Sie die Datei mit den Messdaten in den Ordner, in dem sich auch Ihr aktives m-File befindet.\n", "\n", "Transferdata_Read_1.txt\n", "\n", "Transferdata_Read_2.txt\n", "\n", "Transferdata_Write_1.txt\n", "\n", "Transferdata_Write_2.txt\n", "```" ] }, { "cell_type": "markdown", "id": "861bbbf2", "metadata": {}, "source": [ "## 2. Erste Datenauswertung\n", "\n", "Wie viele Messwerte sind jeweils vorhanden? Prüfen Sie die Anzahl mit den Befehlen `length` bzw. `size`. Was ist der Unterschied?" ] }, { "cell_type": "code", "execution_count": null, "id": "e41b919e", "metadata": {}, "outputs": [], "source": [ "length(Variablenname)\n", "size(Variablenname)" ] }, { "cell_type": "markdown", "id": "47969fad", "metadata": {}, "source": [ "Welchen Wert haben die Übertragungsraten bei $t = 10s$?" ] }, { "cell_type": "code", "execution_count": null, "id": "6198ec58", "metadata": {}, "outputs": [], "source": [ "Variablenname(Zeitpunkt)" ] }, { "cell_type": "markdown", "id": "93dd0e3d", "metadata": {}, "source": [ "Welchen Werte haben die Übertragungsraten von $t=10s$ bis $t=11s$?" ] }, { "cell_type": "code", "execution_count": null, "id": "d54c60ce", "metadata": {}, "outputs": [], "source": [ "Variablenname(Von:Bis)" ] }, { "cell_type": "markdown", "id": "f2c5dbc1", "metadata": {}, "source": [ "## 3. Visualisierung der Daten\n", "\n", "Lassen Sie sich die Daten als Graph mithilfe des `plot`-Befehls anzeigen.\n", "Erzeugen Sie anschließend ein Raster im Hintergrund mittels `grid on`." ] }, { "cell_type": "code", "execution_count": null, "id": "053bd6d3", "metadata": {}, "outputs": [], "source": [ "plot(Variablenname)" ] }, { "cell_type": "markdown", "id": "57288889", "metadata": {}, "source": [ "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.\n", "\n", "Ergänzen Sie abschließend eine Legende, Überschrift sowie Achsenbeschriftungen für x- und y-Achse." ] }, { "cell_type": "code", "execution_count": null, "id": "e3332287", "metadata": {}, "outputs": [], "source": [ "legend(‘Name1‘,‘Name2‘)\n", "title(‘Überschrift‘)\n", "xlabel(‘Achsenname‘)" ] }, { "cell_type": "markdown", "id": "ecb01fbf", "metadata": {}, "source": [ "## 4. Weitere Datenauswertung\n", "\n", "Ermitteln Sie jeweils die größten Messwerte sowie die Mittelwerte." ] }, { "cell_type": "code", "execution_count": null, "id": "21351adc", "metadata": {}, "outputs": [], "source": [ "max(Variablenname)\n", "mean(Variablenname)" ] }, { "cell_type": "markdown", "id": "cf10deef", "metadata": {}, "source": [ "Die `max`-Funktion kann neben dem Maximalwert auch dessen Index (=Zeitpunkt) zurückgeben. Wann wurden jeweils die größten Werte gemessen?" ] }, { "cell_type": "code", "execution_count": null, "id": "77bdd3a1", "metadata": {}, "outputs": [], "source": [ "[Wert, Index] = max(Variablenname)" ] }, { "cell_type": "markdown", "id": "3baffd3a", "metadata": {}, "source": [ "## 5. Gruppierung und Auswertung der Daten mittels Matrix\n", "\n", "Gruppieren Sie die Messwerte (=Vektoren) spaltenweise in einer gemeinsamen Matrix." ] }, { "cell_type": "code", "execution_count": null, "id": "bae59666", "metadata": {}, "outputs": [], "source": [ "M = [Variable1, Variable2, Variable3, Variable4]" ] }, { "cell_type": "markdown", "id": "efb707d6", "metadata": {}, "source": [ "Welche Werte geben die `mean`- und `max`-Funktionen zurück, wenn Sie sie auf die neu erzeugte Matrix anwenden?" ] }, { "cell_type": "markdown", "id": "25de4389", "metadata": {}, "source": [ "## 6. Plotten von Matrizen\n", "\n", "Wenden Sie den `plot`-Befehl auf die Matrix an. Was sehen Sie?\n", "\n", "Plotten Sie nun nur die Spalten, in welchen Sie die Schreibvorgänge abgespeichert haben.\n", "\n", "```{admonition} Hinweis\n", "Der Zugriff auf bestimmte Matrix-Werte erfolgt ähnlich wie in Aufgabe 2:\n", "```" ] }, { "cell_type": "code", "execution_count": null, "id": "1c6e8851", "metadata": {}, "outputs": [], "source": [ "M(2,4) % Zeigt Element aus Zeile 2, Spalte 4 an.\n", "M(1:3,4) % Zeigt Elemente von Zeile 1 bis 3 aus Spalte \n", " % 4 an (=Vektor).\n", "M(:,4) % Zeigt Elemente aus allen Zeilen der 4.\n", " % Spalte an (=Vektor).\n", "M(1:2,:) % Zeigt Elemente aus allen Spalten der Zeilen\n", " % 1 bis 2 an (=Matrix)." ] }, { "cell_type": "markdown", "id": "36199ebf", "metadata": {}, "source": [ "## 7. Subplots\n", "\n", "Eine alternative Möglichkeit, mehrere Plots gleichzeitig anzuzeigen, sind Subplots.\n", "Dabei können in einem Fenster zwei separate `plot`-Befehle angezeigt werden.\n", "Vor jedem `plot` muss Matlab mittels `subplot` mitgeteilt werden, wo der Plot angezeigt werden soll.\n", "\n", "Zeigen Sie auf diese Weise die Schreib- und Lesevorgänge durch Plotten der Matrix getrennt in 2 Subplots an." ] }, { "cell_type": "code", "execution_count": null, "id": "6a1e013b", "metadata": {}, "outputs": [], "source": [ "subplot(2,1,1)\n", "plot(Variable1)\n", "title(‘Überschrift1‘)\n", "\n", "subplot(2,1,2)\n", "plot(Variable2)\n", "title(‘Überschrift2‘)" ] }, { "cell_type": "markdown", "id": "b9d234c9", "metadata": {}, "source": [ "## 8. Abschließende Datenauswertung" ] }, { "cell_type": "markdown", "id": "af18dfa3", "metadata": {}, "source": [ "Solange die Dimensionen stimmen, können Vektoren und Matrizen in Matlab natürlich auch miteinander verrechnet werden." ] }, { "cell_type": "code", "execution_count": null, "id": "c6b1e1ef", "metadata": {}, "outputs": [], "source": [ "% Beispiel: M ist 4x6-Matrix\n", "M(1:3,1) - M(2:4,5)\n", "% 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." ] }, { "cell_type": "markdown", "id": "2395f592", "metadata": {}, "source": [ "Berechnen Sie so durch Auswertung der Matrix die Differenzen der Schreib- und Lesegeschwindigkeiten und plotten Sie diese.\n", "\n", "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." ] }, { "cell_type": "code", "execution_count": null, "id": "c72b95e8", "metadata": {}, "outputs": [], "source": [ "if a>b\n", " sprintf(‘a ist größer als b.‘)\n", "elseif a\n", "
- Hinweis: Dieses Video ist von YouTube aus eingebunden und nicht Teil des frei lizenzierten Materials! -

\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Octave", "language": "octave", "name": "octave" }, "language_info": { "file_extension": ".m", "help_links": [ { "text": "GNU Octave", "url": "https://www.gnu.org/software/octave/support.html" }, { "text": "Octave Kernel", "url": "https://github.com/Calysto/octave_kernel" }, { "text": "MetaKernel Magics", "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" } ], "mimetype": "text/x-octave", "name": "octave", "version": "6.3.0" } }, "nbformat": 4, "nbformat_minor": 5 }