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

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