EMZETT.
Login

Kurz: 8 9 4

Teil des Kurses MATLAB

Kapitel 8 von 8 im Kurs MATLAB (Abschnitt „Nachschlagen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Wichtige Befehle

ZweckBefehle
Hilfehelp name, doc name, lookfor stichwort
Arbeitsbereichwho, whos, clear, clc, close all, pwd, cd, ls
Erzeugenzeros ones eye rand randn magic linspace colon repmat reshape
Größesize numel length ndims isempty
Rechnensum prod mean median std var min max sort cumsum diff abs sqrt exp log
Suchenfind any all ismember unique
Lineare Algebrainv det rank eig svd norm trace A\b
Analysispolyfit polyval roots interp1 integral fzero fminsearch ode45
Ein-/Ausgabedisp fprintf sprintf input fopen fgetl fclose dlmread dlmwrite save load

Operatoren

OperatorBedeutung
+ - * /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

MeldungUrsache
operator *: nonconformant argumentsDimensionen passen nicht: Größen mit size prüfen, .* statt *
index (0): out of bound; value 0 out of boundIndizes beginnen bei 1
'x' undefinedVariable nicht definiert / Tippfehler / Funktion nicht auf dem Pfad
out of bound; value 5 out of bound 4Index größer als die Dimension
Undefined functionDatei nicht im Arbeitsordner (addpath) oder Toolbox fehlt
A(I) = X: X must have the same size as IZuweisung mit falscher Größe
Ergebnis falsch bei Division/ ist Matrixdivision, elementweise ./ nutzen
Schleife extrem langsamvektorisieren, 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 = 10

Weiterlernen

  • 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, end ist das letzte Element
  • Vektorisierung statt Schleifen, Vorallokation bei Schleifen
  • A \ b löst Gleichungssysteme, polyfit, ode45, integral decken viel Numerik ab

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Projekte: Simulation und Algorithmen

Alle Kapitel: MATLAB im Überblick