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.1 |
%% 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);
|