MATLAB Repetitorium - Programmstrukturen
Autor: | Prof. Dr.-Ing. Schneider |
Termin: | 10.05.2024 |
Aufgabe 4.1 - Erzeugen und Lesen von mat-Dateien
- Schreiben Sie ein Skript, in welchem Sie eine Einheitsmatrix, eine Nullmatrix und ein String mit dem Inhalt „test“ erzeugen.
- Erstellen Sie in Matlab einen Ordner mit dem Namen: „Daten“ (Befehle: mkdir()).
- Speichern Sie alle vorher erzeugten Variablen in eine mat-Datei im erzeugten Ordner (Befehle: save())
- Speichern Sie nur die Matrizen in einer neuen mat-Datei mit den Namen des vorher erzeugten Strings im erzeugten Ordner.
- Löschen Sie die an Teilaufgabe a) erzeugten Variablen aus dem Workspace und laden Sie die vorher erzeugte „test.mat“ Datei aus dem Ordner (Befehle: load())
- Nutzen Sie die Benutzeroberfläche (uigetfile), um Daten zu laden.
Nützliche Befehle: clear
, close, clc, mkdir, save, load, uigetfile
Musterlösung 4.1 |
%% Musterlösung Aufgabe 4.1 - Erzeugen und Lesen von mat-Dateien
clear all; close all; clc;
4.1.1)
A = eye(10);
B = zeros(20);
name = 'test';
%4.1.2)
foldername = 'Daten';
mkdir(foldername);
%4.1.3)
filename = 'c)';
save([foldername '\' filename]);
%4.1.4)
filename = name;
save([foldername '\' filename],'A','B');
%4.1.5)
clear A B name
load([foldername '\' filename]);
% 4.1.6
[file,path] = uigetfile({'*.mat'});
selectedfile = fullfile(path,file);
load(selectedfile);
|
Aufgabe 4.2 - Erzeugen und Lesen von txt-Dateien
- Schreiben Sie ein Skript, in welchem Sie zunächst eine 5x5 Matrix erzeugen, welche zeilenweise aufsteigend die Werte von π bis 25π enthält.
- Schreiben Sie diese Matrix in eine Textdatei mit den Anforderungen (Befehl: dlmwrite()):
- Zahlen in einer Zeile sollen mit einem Tabstopp getrennt werden.
- Zeilen sollen mit Zeilenumbrüchen getrennt werden.
- Zahlen sollen auf 6 Stellen genau gespeichert werden
- Laden Sie den Inhalt der Textdatei in eine neue Matrix (Befehl: dlmread())
Nützliche Befehle: dlmwrite(), dlmread()
Musterlösung 4.2 |
%% Musterlösung 4.2 - Erzeugen und Lesen von txt-Dateien
clear all;
close all;
clc;
A = ones(5,5);
B = 1:25;
for i=1:25
A(i) = B(i)*pi;
end
A = A';
filename = 'TextDatei.txt';
dlmwrite(filename,A,'delimiter','\t','precision',6,'newline','pc');
C = dlmread(filename)
|
Aufgabe 4.3 - Cell Arrays
- Erzeugen Sie Tabelle 1 als Cell-Array in MATLAB® (Befehle: cell(), num2cell()).
- Wandeln Sie das Cell-Array in eine Tabelle um (Befehle: cell2table()).
- Erzeugen Sie eine Textdatei und speichern Sie dort das erstellte Cell -Array (Befehle: fopen(), fprintf(), fclose()).
Tutorial: MATLAB®: Export Cell Array to Text File
Name | Alter | Beruf |
---|---|---|
Walter White | 50 | Lehrer |
Saul Goodman | 45 | Anwalt |
Skyler White | 47 | Einzelhandelskauffrau |
Jesse Pinkman | 26 | arbeitssuchend |
Nützliche Befehle: cell, num2cell, cell2table, fopen, fclose, fprintf
Musterlösung 4.3 |
%% Musterlösung Aufgabe 4.3 - Cell Arrays
clear all;
close all;
clc;
%4.3.1)
Header = {'Name','Alter','Beruf'};
Names = {'Walter White';'Saul Goodman';'Skyler White';'Jesse Pinkman'};
Alter = [50; 45; 47; 26];
Beruf = {'Lehrer';'Anwalt';'Einzelhandelskauffrau';'Arbeitslos'};
cellarray = cell(5,3);
cellarray(1,:) = Header;
cellarray(2:5,1) = Names;
cellarray(2:5,2) = num2cell(Alter);
cellarray(2:5,3) = Beruf;
%4.3.2)
table = cell2table(cellarray);
%4.3.3)
filename = 'Teil_3_CellArray.txt';
fileID = fopen(filename,'w');
formatSpecHeader = '%s %s %s\r\n';
formatSpec = '%s %d %s\r\n';
[nrows,ncols] = size(cellarray);
for row = 1:nrows
if row==1
fprintf(fileID,formatSpecHeader,cellarray{row,:});
else
fprintf(fileID,formatSpec,cellarray{row,:});
end
end
fclose(fileID);
|
Aufgabe 4.4 - Programmiergrundlagen - Schleifen und Bedingungen
- Schreiben Sie ein MATLAB Script, das mit Hilfe einer
for
-Schleife die Summe die Zahlen von 1 bis 100000 berechnet. - Schreiben Sie ein MATLAB Script, das mit Hilfe einer while-Schleife die Summe die Zahlen von 1 bis 100000
berechnet. (c) Schreiben Sie ein MATLAB Script, das • Einen Vektor X mit 10000 Zufallszahlen zwischen 0 und 1 erzeugt. • Mit Hilfe einer f o r -Schleife den Index des ersten Elementes in X berechnet, das > 0.9 ist (fa lls ein solches existiert) und diesen Index in der Variablen xl speichert. • Mit Hilfe einer while-Schleife den Index des ersten Elementes in X berechnet, das< 0.1 ist (falls ein solches existiert) und diesen Index in der Variablen x2 speichert. • Mit Hi lfe von „ logical indexing" das erste Element findet, das echt zwischen 0.5 und 0.55 liegt {falls ein so lches existiert) und diesen Index in der Variablen x3 speichert.
Aufgabe 4.3 - Programmiergrundlagen - Funktionen
Recherchieren Sie den Begriff „ MATLAB function" und informieren Sie sich, was man darunter versteht. (b) Schreiben Sie das MATLAB Script aus Aufgabe 1 (c) zu einer MATLAB Function mit dem Namen analyse um, die • als Eingabeargument die Zahl n bekommt und dann • einen Vektor mit n Zufallszahlen zwischen 0 und 1 erzeugt • Anschließend soll die Funktion genau die Werte xl, x2 und x3 wie in Aufgabe 1 (c) berechnen und diese als Rückgabewerte zurückliefern. (c) Machen Sie sich anhand der Funktion anal yse mit dem Setzen von „ Breakpoints" und dem MATLAB Debugger vertraut. Schreiben Sie ein kleines Matlab Skript, von wo aus sie die geschriebene Funktion aufrufen. Springen Sie dabei mit einem Breakpoint in die Funktion rein
Aufgabe 4.3 - Programmiergrundlagen - Systematische Programmierung
Erzeugen Sie sich ein Framework für zukünftige Programmierarbeiten mit folgenden Ablauf: 1) Header mit: Programmname, Autor, Änderungsdatum, Erstelldatum, Beschreibung, Input, Output 2) Konsole löschen, Workspace bereinigen, Fenster schließen 3) Initialisierung von Variablen etc. 4) Simulationsschleife/Algorithmus 5) Plots/Ausgabe etc. Arbeiten Sie dabei mit Ausgaben vor und nach jedem Abschnitt. Bsp.: „Initialisation successful“