Navigation

Matlab-Syntax in a nutshell:


Variablen:

a=7
Generiert eine Variable a mit Wert 7

clear a
Löscht die Variable a aus dem Workspace

clear all
Löscht alle Variablen des Workspace


Vektoren:

v=[1 4 78]
Generiert einen Zeilenvektor v mit drei Elementen

v=[1; 4; 78; 15.8; 0]
Generiert einen Spaltenvektor v mit drei Elementen

l=[];
Generiert einen leeren Vektor l

zaehl=1:10;
Genriert einen Vektor zaehl mit 10 Elementen, die mit Werten von 1 bis 10 belegt werden

rueck=10:-2:1
Generiert einen Vektor mit 5 Elementen, der von 10 bis 1 in Zweierschritten rückwärts zählt

neu=[zaehl rueck]
Generiert einen Vektor mit 15 Elementen, indem die Vektoren zaehl und rueck zu einem langen Vektor aneinandergehängt werden

b=v(2)
Generiert eine Variable b, der der Wert des zweiten Elements von v zugewiesen wird

v(2)
weist der Standard-Variablen "ans" den Wert des zweiten Elements von v zu

c=v(1:3)
generiert einen Vektor mit drei Elementen, denen die ersten drei Werte von v zugewiesen werden

d=v(end)
Generiert eine Variable d, der der letzte Wert des Vektors v zugewiesen wird

alles=v(:)
Setzt die Variable alles mit Vektor v gleich. Andere Schreibweisen sind alles=v oder alles=v(1:end)

zeil=v'
generiert einen Zeilenvektor zeil, dem alle Werte des Spaltenvektors v zugewiesen werden. (funktioniert genauso für Spalte nach Zeile).

l=lenght(v)
weist der Variablen l die Anzahl der Elemente in v zu


Matrizen:

m=[1 5; 79 0.5; 17 0]
Generiert eine Matrix mit drei Zeilen und zwei Spalten

z=zeros(3,4);
Generiert eine Matrix mit drei Zeilen und vier Spalten, deren Werte alle 0 sind

o=ones(3,4);
Entsprechend, aber alle Werte sind 1

r=rand(2,5);
Generiert Matrix mit gleichverteilten Zufallszahlen zwischen 0 und 1

r=randn(2,5);
Generiert Matrix mit normalverteilten Zufallszahlen mit Mittelwert 0 und Standardabweichung 1

e=m(2,1)
Weist der Variablen e den Wert der zweiten Zeile und ersten Spalte von m zu

e=m(2)
Weist ebenfalls der Variablen e den Wert der zweiten Zeile und ersten Spalte zu. Bei der linearen Indizierung wird entlang der Spalten gezählt. (e=m(4) wäre in diesem Beispiel der Wert der ersten Zeile und zweiten Spalte.)

zeile1=m(1,:)
Erzeugt einen Vektor zeile1 mit allen Werten der ersten Zeile von m

[zeilen,spalten]=size(m)
Weist der Variable Zeilen die Anzahl der Zeilen, der Variablen spalten die Anzahl der Spalten in Matrix m zu

l=length(m(:))
Weist der Variablen l die Anzahl aller Elemente der Matrix zu.

[i,j]=find(X)
Gibt die Indizes der Matrixelemente X zurück, die ungleich 0 sind

[i,j]=find(X>10)
Gibt die Indizes der Matrixelemente X zurück, die >10 sind


Strings

s='bla'
Erzeugt einen string s mit Wert bla

b=blanks(10)
Erzeugt einen String aus 10 Leerzeichen

s(2)
Zweites Element (Buchstabe) des strings s

strcmp(s,'bla')
vergleicht string s mit string 'bla' auf Gleichheit

strncmp(s,'bla',2)
vergleicht erste 2 Buchstaben der beiden Strings auf Gleichheit

ind=strfind(str,pattern)
sucht string pattern in string str und gibt Startindex zur¸ck



Operatoren

Arithmetische Operatoren +, - *, /, ^
werden auf ganze Vektoren bzw Matrizen angewandt, für punktweise Berechnung
verwendet man .*, ./ und .^

Vergleichsoperatoren <, >, <=, >=, ==
geben Wahrheitswerte zurück, 1 für wahr, 0 für falsch.
Bei Vektoren und Matrizen erfolgt der Vergleich Punktweise
z.B.: a=(2<3); b=([0.5 7]==[0.5 8]);

Logische Operatoren:
& logisches und
| logisches Oder
~ logische Negation
Punktweiser Vergleich, der Wahrheitswerte liefert


Wichtige mathematische Funktionen

abs
Absolutbetrag

sqrt
Quadratwurzel

exp
Exponentialfunktion

log
Natürlicher Logarithmus

sin, cos
Sinus und Cosinus

mean
Mittelwert (in Matrizen spaltenweise gemittelt)

std
Standardabweichung (spaltenweise)

var
Varianz (spaltenweise)

median
Median (spaltenweise)

min, max
Minimum und Maximum (spaltenweise)


Graphik

plot(v)
trägt die Werte des Vektors v gegen ihre Indizes auf

plot(x,y)
trägt die Werte des Vektors y gegen die des Vektors x auf

plot(x1,y1,x2,y2)
kombiniert die Auftragungen von y1 gegen x1 und y2 gegen x2 in einem Bild

plot(x,y,'ro-')
benutzt rote, mit Linien verbundene Kreise, um y gegen x aufzutragen (Reihenfolge der Formatierungsparameter ist egal - Parameter bitte in der Hilfe nachgucken.)

loglog(x,y)
Doppellogarithmische Auftragung von y gegen x

semilogx(x,y)
Auftragung mit logarithmischer x- und linearer y-Achse (semilogy entsprechend)

figure(2)
öffnet ein neues Graphikfenster und gibt ihm die Nummer 2

close(2)
schließt das zweite Graphikfenster

clf
Inhalt des aktuellen Graphikfensters löschen

xlabel('bla bla')
Beschriftung der x-Achse (y entsprechend)

title('Tolles Bild')
Bildüberschrift

axis([xmin xmax ymin ymax])
setzt die Granzwerte fest, zwischen denen Werte graphisch aufgetragen werden sollen



Fallunterscheidungen:

"if" für wenige unterschiedene Fälle
if Bedingung
Befehle
end

if Bedingung
Befehle1
else
Befehle2
end

if Bedingung1
Befehle1
elseif Bedingung2
Befehle2
else
Befehle3
end

z.B. if a==b
c=1;
elseif a>b
c=2;
else
c=0;
end


switch für viele Möglichkeiten, oder wenn strings getestet werden sollen
switch Ausdruck
case Fall1
Befehle1
case {Fall2, Fall3}
Befehle2
otherwise
Befehle3
end

z.B.
str='a'
switch str
case 'a'
x=1
case 'b'
x=2
otherwise
x=0
end


Schleifen

Zählschleife:

for variable=Ausdruck
Befehle
end

z.B.
o=ones(1,10)
for a=2:10
o(a)=2*o(a-1);
end

Bedingte Schleife:

while Bedingung
Befehle
end

z.B.
o=1;
a=1;
while o(a)<1000
a=a+1;
o=[o 2*o(a-1)];
end


Datenverwaltung:

save('filename')
sichert alle aktuellen Variablen im file filename.mat im aktuellen Verzeichnis

save('filename','var1','var2')
sichert nur Variablen var1 und var2 im file filename.mat

load('filename')
holt alle in filename.mat gespeicherten Variablen in den Workspace

fscanf
Mächtige Möglichkeit jegliche formatierte Daten einzulesen (viele Optionen)

antwort=input('bitte Zahl eingeben')
Liest eine Benutzereingabe von der Tastatur in Variable antwort ein



Bildschirmausgaben

;
hinter einem Befehl unterdrückt die Bildschirmausgabe

echo on
wiederholt den jeweils ausgeführten Befehl auf dem Bildschirm

echo off
stellt echo wieder ab

pause
wartet mit der Ausführung des nächsten Befehls auf einen Tastendruck

pause(10)
wartet mit der Ausführung des nächsten Befehls 10secText

Webma6coastezn7r: 3tqmxJutduta Kretzbergow5o (jutt9cxea.kr2bjboetzbergnto@uol.de) (Stand: 07.11.2019)