Modellbildung und Simulation - Programmstrukturen
| Autor: | Prof. Dr.-Ing. Schneider |
| Termin: | 11.04.2025 |
Aufgabe 4.4 - Programmiergrundlagen - Schleifen und Bedingungen
- Schreiben Sie ein MATLAB®-Skript, das mit Hilfe einer
for-Schleife die Summe der Zahlen von 1 bis 100000 berechnet (z. B.n=n+1). - Schreiben Sie ein MATLAB®-Skript, das mit Hilfe einer
while-Schleife die Summe die Zahlen von 1 bis 100000 berechnet. - Schreiben Sie ein MATLAB®-Skript, das
- Einen Vektor X mit 10000 Zufallszahlen zwischen 0 und 1 erzeugt.
- Mit Hilfe einer
for-Schleife den Index des ersten Elementes in X berechnet, das > 0.9 ist (falls ein solches existiert) und diesen Index in der Variablen 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 speichert.
- Mit Hilfe von „ logical indexing" das erste Element findet, das echt zwischen 0.5 und 0.55 liegt (falls ein solches existiert) und diesen Index in der Variablen speichert.
Nützliche Befehle: for, if, while, break
| Musterlösung 4.4 |
%% Aufgabe 4.4 - Schleifen und Bedingungens
clear all
%(a)
Summe1 = 0;
for i=0:1:100000
Summe1 = Summe1+i;
end
%(b)
Summe2 = 0;
i = 0;
while i<=100000
Summe2 = Summe2+i;
i = i+1;
end
clear all
%(c)
VektorX = rand(1,10000);
%Element finden, welches >0.9 ist
for i=1:1:10000
if(VektorX(i)>0.9)
x1 = i;
break;
end
end
%Element finden, welches <0.1 ist
i=1;
while i<=10000
if(VektorX(i)<0.1)
x2 = i;
break;
end
i = i+1;
end
%Element finden, welches zwischen 0.5 und 0.55 liegt
%% Möglichkeit 1: Schleife
for i=1:1:10000
if(VektorX(i)>=0.50 && VektorX(i)<=0.55)
x3 = i;
break;
end
end
%% Möglichkeit 2: logical indexing
Logic_Vek = VektorX >= 0.50 & VektorX <= 0.55;
x3_new = find(Logic_Vek,1);
|
Aufgabe 4.5 - Programmiergrundlagen - Funktionen
- Recherchieren Sie den Begriff „MATLAB function" und informieren Sie sich, was man darunter versteht.
- Schreiben Sie das MATLAB®-Skript aus Aufgabe 4.4.3 zu einer MATLAB®-Function mit dem Namen
analyseum, 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 und wie in Aufgabe 4.4.3 berechnen und diese als Rückgabewerte zurückliefern.
- Machen Sie sich anhand der Funktion
analysemit dem Setzen von „Breakpoints" und dem MATLAB®-Debugger vertraut.
- Schreiben Sie ein kurzes Matlab Skript, mit dem Sie die Funktion
analyseaufrufen. Springen Sie dabei mit einem Breakpoint in die Funktion.
Nützliche Befehle: function
| Musterlösung 4.5.1 - Funktion |
%% Aufgabe 4.5 - Funktionen
function[x1 x2 x3] = analyse(n)
VektorX = rand(1,n);
%Element finden, welches >0.9 ist
for i=1:1:10000
if(VektorX(i)>0.9)
x1 = i;
break;
end
end
%Element finden, welches <0.1 ist
i=1;
while i<=10000
if(VektorX(i)<0.1)
x2 = i;
break;
end
i = i+1;
end
%Element finden, welches zwischen 0.5 und 0.55 liegt
Logic_Vek = VektorX >= 0.50 & VektorX <= 0.55;
x3 = find(Logic_Vek);
if ~isempty(x3)
x3 = x3(1);
else
x3 = 0;
end
end
|
| Musterlösung 4.5.4 - Startskript |
%% Skript testAnalyse ruft die Funktion auf.
n = 1000;
%dbstop in analyse
[x1 x2 x3] = analyse(n)
|
Aufgabe 4.6 - Programmiergrundlagen - Systematische Programmierung
Erzeugen Sie sich ein Framework für zukünftige Programmierarbeiten mit folgenden Ablauf:
- Header mit: Programmname, Autor, Änderungsdatum, Erstelldatum, Beschreibung, Input, Output
- Konsole löschen, Workspace bereinigen, Fenster schließen
- Initialisierung von Variablen etc.
- Simulationsschleife/Algorithmus
- Plots/Ausgabe etc.
Arbeiten Sie dabei mit Ausgaben vor und nach jedem Abschnitt. Bsp.: „Initialisation successful“.
Nützliche Befehle: disp, fprintf
| Musterlösung 4.6 |
%% Aufgabe 4.6 - Systematische Programmierung
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Funktion : Framework %
% %
% %
% Eingabe : / %
% %
% %
% Ausgabe : / %
% %
% %
% Autor : Erika Musterfrau %
% %
% Implementation : MATLAB R2016b %
% %
% Bemerkung : %
% %
% Änderungsdatum : 09.03.2017 %
% %
% Erstelldatum : 09.03.2017 %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Matlab initialisiern
clear all;
close all;
clc;
%% Initialisierung von Variablen/Konstanten
disp('Starte Initialisierung');
%Hier kommt die Initialisierung hin
disp('Initialisation erfolgreich');
fprintf('\n');
%% Simulationsschleife/Algorithmus
disp('Programmstart');
%Hier kommen die Berechnungen hin
disp('Berechnung beendet');
fprintf('\n');
%% Plots/Ausgabe
figure(1);
%Hier kommen die Ausgabe hin
%% Fenster schließen
close 1
|
Projekt - Programmiergrundlagen - Funktionen
- Schreiben Sie die Funktion
LeseSpannung, welche normalverteilte Spannungen (Mittelwert: 14,4 V, Standardabweichung: 4 V) simuliert. - Nutzen Sie das Startskript
startLeseSpannung, um über eine Schleife 50 Messwerte zu simulieren. - Zeigen Sie die Messwerte als rote Punkte zyklisch an.
- Werten Sie den Quelltext mit Header, Kommentaren und Hilfe auf.
→ MATLAB® Befehlsübersicht
→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe25