Modellierung und Simulation - Programmiertechniken: Unterschied zwischen den Versionen
| Zeile 81: | Zeile 81: | ||
|- | |- | ||
| <syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:small">y=3.*x.^2+2.*x-5; | | <syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:small">y=3.*x.^2+2.*x-5; | ||
</syntaxhighlight> | |||
|} | |||
= 4. Logische Indizes = | |||
Der Quelltext sucht ineffizient alle Werte > 0. | |||
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:small">x = randn(1000,1); | |||
j=0; | |||
for i=1:length(x) | |||
if x>0 | |||
j=j+1; | |||
xPos(j)=i; | |||
end | |||
end | |||
</syntaxhighlight> | |||
# Optimieren Sie den Quelltext mit logischer Indizierung. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Vektorisierung.m </strong> | |||
|- | |||
| <syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:small">positive = x>0; | |||
xPos = x(positive); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
Version vom 2. Juli 2026, 17:06 Uhr
| Autor: | Prof. Dr.-Ing. Schneider |
| Lektion: | 12 |
| Termin: | 03.07.2026 |
Einleitung
MATLAB® ist eines der wichtigsten Werkzeuge für die numerische Berechnung, Datenanalyse und Simulation in den Ingenieur- und Naturwissenschaften. Neben der korrekten Umsetzung eines Algorithmus spielt dabei auch die Qualität des Programmcodes eine entscheidende Rolle. Gut strukturierter, effizienter und wartbarer Code erleichtert nicht nur die Fehlersuche und Weiterentwicklung, sondern verbessert häufig auch die Ausführungsgeschwindigkeit. In diesem Kurs lernen die Studierenden grundlegende und fortgeschrittene Programmiertechniken in MATLAB® kennen. Anhand praxisnaher Beispiele und Optimierungsaufgaben werden typische Programmierfehler identifiziert und bestehender Code schrittweise verbessert. Ziel ist es, moderne MATLAB®-Programme zu entwickeln, die übersichtlich, leistungsfähig und leicht wiederverwendbar sind.
Lernziele
Nach dem Kurs können die Teilnehmenden:
- effizienten und gut lesbaren MATLAB®-Code schreiben,
- Funktionen und Skripte sinnvoll einsetzen,
- Vektorisierung anstelle unnötiger Schleifen verwenden,
- Eingaben überprüfen,
- Code modular strukturieren,
- typische MATLAB®-Funktionen zur Datenverarbeitung anwenden,
- ihren Code dokumentieren und debuggen.
1. Programmierrichtlinien
- Analysieren Sie den nachfolgenden Quelltext unter Berücksichtigung der Programmierrichtlinien für MATLAB®.
- Optimieren Sie den Quelltext.
a=5;
b=3;
c=a*b;
disp(c)
| Lesbarkeit.m |
nLaenge = 5; % Verwenden Sie lesbare Variablennamen.
nBreite = 3;
nFlaeche = nLaenge * nBreite; % Rücken Sie Quelltext zur besseren Lesbarkeit ein.
fprintf('Fläche = %.2d\n', nFlaeche); % Verwenden Sie hilfreiche Kommentare.
|
2. Skripte und Funktionen
Ein Skript
- arbeitet im Workspace.
- ist leicht zu schreiben.
- ist schlecht wiederverwendbar.
radius = 3;
A = pi*radius^2;
Die Vorteile eine Funktion sind
- Wiederverwendbarkeit
- eigener Workspace
- einfach testbar
Wandeln Sie das Skript in die Funktion berechneKreis um und starten Sie diese mit der Funktion testBerechneKreis.
| berechneKreis.m |
function [fA,fU] = berechneKreis(fRadius)
fA = pi*fRadius.^2;
fU = 2*pi*fRadius;
end
|
3. Vektorisierung
Der folgende Code berechnet mittels einer Schleife.
x=-10:0.1:10
for i=1:length(x)
y(i)=3*x(i)^2+2*x(i)-5;
end
- Ersetzen Sie die Schleife durch eine vektorisierte Berechnung.
- Messen Sie die Zeitersparnis mittels
ticundtoc.
| Vektorisierung.m |
y=3.*x.^2+2.*x-5;
|
4. Logische Indizes
Der Quelltext sucht ineffizient alle Werte > 0.
x = randn(1000,1);
j=0;
for i=1:length(x)
if x>0
j=j+1;
xPos(j)=i;
end
end
- Optimieren Sie den Quelltext mit logischer Indizierung.
| Vektorisierung.m |
positive = x>0;
xPos = x(positive);
|
→ MATLAB® Befehlsübersicht
→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe26