Einfache erste Übungen - Vektoren
Dieses Skript zeigt einfache erste Schritte, die man mit Matlab machen kann. Hier wird nun Wert auf die Verwendung von Vektoren gelegt.
Vektoren sind zweidimensionale Felder, die entweder nur eine Zeile oder nur eine Spalte haben. D.h., eigentlich sind sie eindimensional, wobei es "wirklich eindimensionale" Felder in Matlab nicht gibt. Alle Felder sind mindestens zweidimensional, wobei die Ausdehnung in eine Richtung manchesmal eben nur "Eins" ist.
Contents
- Löschen des Arbeitsraumes
- Erzeugung von Variablen und Wertzuweisung
- Arbeitsraum
- Größe, Dimension, Anzahl der Elemente
- Einfachste graphische Darstellung
- Einfachste Rechnungen - Multiplikation mit einem Skalar
- Addition und Multiplikation von Feldern
- Potenzen
- Funktionen
- Bessere Auflösung
- Beschriftung und Achsenlimits
- Legende
- Arbeitsraum - revisited
- Zulässige Namen für Variablen
Löschen des Arbeitsraumes
Um mit einem leeren Arbeitsraum zu beginnen, kann man den Befehl "clear" verwenden. Das ist nicht unbedingt notwendig, wird hier aber aus didaktischen Gründen verwendet, um nur die hier erzeugten Variablen zu sehen.
clear all
Erzeugung von Variablen und Wertzuweisung
Eine einfache Art Vektoren zu erzeugen ergibt sich mit Hilfe der sogenannten Doppelpunktnotation.
x = [0:5] % oder auch ohne []: x = 1:5
x = 0 1 2 3 4 5
y = [0:2:10]
y = 0 2 4 6 8 10
Arbeitsraum
Folgende Variablen gibt es nun im Arbeitsraum:
whos
Name Size Bytes Class x 1x6 48 double array y 1x6 48 double array Grand total is 12 elements using 96 bytes
Größe, Dimension, Anzahl der Elemente
Diese Information kann man mit Hilfe der Matlab-Funktionen "size" (Größe), "ndims" (number of dimensions) und "numel" (mumber of elements) erhalten.
x_size = size(x) % 1 Zeile, 5 Spalten
x_size = 1 6
x_dim = ndims(x) % 2 Dimensionen (Zeilen,Spalten) - Minimum
x_dim = 2
x_num = numel(x) % 5 Elemente im Feld
x_num = 6
Einfachste graphische Darstellung
Eine einfache Möglichkeit zur Visualisierung bietet der Befehl "plot".
plot(x,y,'r-o')

Einfachste Rechnungen - Multiplikation mit einem Skalar
Den Operator * kann man auch zur Multiplikation eines Skalars mit einem Feld verwenden, wobei dann jedes Element des Feldes mit diesem Skalar multipliziert wird. Gleiches gilt sinngemäß auch für die Operatoren +, -, und /.
x2 = x * 2
x2 = 0 2 4 6 8 10
x3 = x * 3
x3 = 0 3 6 9 12 15
plot(x,x,'r-o',x,x2,'b:*',x,x3,'k--+')

Addition und Multiplikation von Feldern
Natürlich kann man gleichgroße Felder auch addieren, subtrahieren, multiplizieren und dividieren. Bei Addition (+) und Subtraktion (-) verwendet man die gleichen Operatoren wie bei Skalaren. Bei der Multiplikation (.*) und Division (./ oder .\) muß man Operatoren mit einem Punkt davor (.* oder ./ oder .\) verwenden. Nur damit erreicht man die sogenannte "elementweise" Wirkung der Operatoren.
Die Operatoren *, / und \ haben ihre Bedeutung im Rahmen der Linearen Algebra. Auf sie soll hier nicht eingegangen werden.
xa = x + x xm = x .* x plot(x,x,'r-o',x,xa,'b:*',x,xm,'k--+')
xa = 0 2 4 6 8 10 xm = 0 1 4 9 16 25

Potenzen
Man kann natürlich auch Potenzen von Feldern bilden, wobei nun die Variablen x2 und x3 mit den neuen Werten überschrieben werden. Beachten sie, dass durch die Verwendung des Strichpunktes am Ende einer Zuweisung keine Ausgabe erfolgt. Der Operator für elementweises Potenzieren ist wieder der Operator mit einem Punkt davor (.^).
x2 = x.^2; x3 = x.^3; plot(x,x,'r-o',x,x2,'b:*',x,x3,'k--+')

Funktionen
Natürlich kann man auch Funktionen auf ganze Felder anwenden, wobei die Auswertung (fast) immer elementweise erfolgt. Auf Grund der geringen Anzahl der Punkte erkennt man hier in der graphischen Darstellung die Funktion nicht gut wieder.
s = sin(x)
plot(x,s,'ro')
s = 0 0.8415 0.9093 0.1411 -0.7568 -0.9589

Bessere Auflösung
Durch eine größere Anzahl von Punkten erreicht man klarerweise eine bessere Darstellung der Funktion. Eine praktische Matlab-Funktion für die Erzeugung solcher Vektoren ist "linspace". Nun sieht man, dass die Punkte exakt auf den Werten der Sinus-Funktion liegen.
X = linspace(0,2*pi,200); %linspace(von,bis,Anzahl) S = sin(X); plot(x,s,'ro',X,S,'b-')

Beschriftung und Achsenlimits
Jetzt kann man den Plot noch beschriften und die Limits der Achsen verändern
xlabel('x') ylabel('sin(x)') title('Eine trigonometrische Funktion') xlim([0,2*pi]) ylim([-1.1,1.1])

Legende
Ausserdem kann man eine Legende hinzufügen.
legend({'Datenpunkte','sin(x)'},'Location','ne') % 'ne' ('northeast')

Arbeitsraum - revisited
Die jetzt vorhandenen Variablen sind folgende:
whos
Name Size Bytes Class S 1x200 1600 double array X 1x200 1600 double array s 1x6 48 double array x 1x6 48 double array x2 1x6 48 double array x3 1x6 48 double array x_dim 1x1 8 double array x_num 1x1 8 double array x_size 1x2 16 double array xa 1x6 48 double array xm 1x6 48 double array y 1x6 48 double array Grand total is 446 elements using 3568 bytes
Zulässige Namen für Variablen
In der vorigen Liste sieht man eine Reihe zulässiger Namen für Variablen. Zulässig sind nur Namen, die mit einem Buchstaben beginnen. Danach können auch Zahlen bzw. als einziges Sonderzeichen der sogenannte "Unterstrich" _ (englisch "underscore") folgen. Groß- und Kleinbuchstaben werden bei Variablen unterschieden. Großbuchstaben sollten aber für Funktionsnamen nicht verwendet werden.
size(x)
ans = 1 6
size(X)
ans = 1 200