Kurz: 8 9 4
Teil des Kurses MATLAB
Wichtige Befehle
| Zweck | Befehle |
|---|---|
| Hilfe | help name, doc name, lookfor stichwort |
| Arbeitsbereich | who, whos, clear, clc, close all, pwd, cd, ls |
| Erzeugen | zeros ones eye rand randn magic linspace colon repmat reshape |
| Größe | size numel length ndims isempty |
| Rechnen | sum prod mean median std var min max sort cumsum diff abs sqrt exp log |
| Suchen | find any all ismember unique |
| Lineare Algebra | inv det rank eig svd norm trace A\b |
| Analysis | polyfit polyval roots interp1 integral fzero fminsearch ode45 |
| Ein-/Ausgabe | disp fprintf sprintf input fopen fgetl fclose dlmread dlmwrite save load |
Operatoren
| Operator | Bedeutung |
|---|---|
+ - * / | Matrix-Rechnung (* Matrixprodukt) |
.* ./ .^ | elementweise |
' und .' | transponieren (konjugiert / nicht) |
\ | Gleichungssystem lösen (A\b) |
== ~= < > <= >= | Vergleiche (ungleich ist ~=) |
& | ~ && || | Logik (elementweise / kurzgeschlossen) |
: | Bereiche und “alle” |
@ | Funktions-Handle |
Typische Fehlermeldungen
| Meldung | Ursache |
|---|---|
operator *: nonconformant arguments | Dimensionen passen nicht: Größen mit size prüfen, .* statt * |
index (0): out of bound; value 0 out of bound | Indizes beginnen bei 1 |
'x' undefined | Variable nicht definiert / Tippfehler / Funktion nicht auf dem Pfad |
out of bound; value 5 out of bound 4 | Index größer als die Dimension |
Undefined function | Datei nicht im Arbeitsordner (addpath) oder Toolbox fehlt |
A(I) = X: X must have the same size as I | Zuweisung mit falscher Größe |
| Ergebnis falsch bei Division | / ist Matrixdivision, elementweise ./ nutzen |
| Schleife extrem langsam | vektorisieren, Vorallokation |
Muster und Idiome
v = [3 8 1 9 4];
v(v > 3) % logisches Indizieren
[~, idx] = sort(v, 'descend'); % Sortier-Index
v(idx(1:2)) % größte zwei
cumsum(v) ./ (1:numel(v)) % laufender Mittelwert
any(v == 9) % Existenzprüfung
x = linspace(0, 1, 5);
y = x .^ 2 - x; % vektorisierte Funktion
[wert, pos] = min(y)
isequal([1 2 3], 1:3)
mat2str([1 2; 3 4])
num2str([1 2 3])
ifelse = @(c, a, b) a * c + b * ~c;
ifelse(true, 10, 20)Ausgabe:
ans =
8 9 4
ans =
9 8
ans =
3.0000 5.5000 4.0000 5.2500 5.0000
ans = 1
wert = -0.2500
pos = 3
ans = 1
ans = [1 2;3 4]
ans = 1 2 3
ans = 10Weiterlernen
- Offizielle Dokumentation: mathworks.com/help (MATLAB), docs.octave.org (Octave)
- MATLAB Onramp (kostenloser interaktiver Einstieg), Cleve Moler: Numerical Computing with MATLAB
- Vergleichbare Sprachen: Python mit NumPy/SciPy/Matplotlib, Julia, R
- Wiki dieser Seite: Artikel zu Mathematik und Numerik
Merke
- Alles ist eine Matrix: elementweise (
.*) vs. Matrix-Operationen (*) - Indizes beginnen bei 1,
endist das letzte Element - Vektorisierung statt Schleifen, Vorallokation bei Schleifen
A \ blöst Gleichungssysteme,polyfit,ode45,integraldecken viel Numerik ab
Quiz zur Selbstkontrolle
Wofür steht der Operator \ (Backslash)?
- Lineares Gleichungssystem lösen (richtig)
- Division durch null
- Zeilenumbruch
- Kommentar
Wie lautet "ungleich"?
- ~= (richtig)
- !=
- <>
- =/=
Bei welchem Index beginnen Vektoren?
- 1 (richtig)
- 0
- -1
- 2
Weiter im Kurs
Zurück: Projekte: Simulation und Algorithmen
Alle Kapitel: MATLAB im Überblick