Einfache erste Übungen - Skalare

Dieses Skript zeigt einfache erste Schritte, die man mit Matlab machen kann.

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

Hier werden den beiden Variablen a und b Werte zugewiesen und damit werden diese im Matlab-Workspace (Arbeitsraum) definiert. Eine extra Deklaration, wie sie in anderen Programmiersprachen üblich ist, ist nicht notwendig. Der Standard-Datentyp ist double (64 Bit Fließkommazahl).

a = 1.2
a =

    1.2000

b = 2.5
b =

    2.5000

Welche Variablen gibt es im Workspace

Mit den Befehlen who bzw. whos bekommt man Information über existierende Variablen, wobei whos mehr Information liefert. Man sieht, dass nun die beiden Variablen a und b existieren, dass sie eigentlich Felder ("arrays") sind, aber nur die Größe "1x1" (Skalar) haben. Der Speicherbedarf ist jeweis 8 Byte = 64 Bit (1 Byte = 8 Bit).

whos
  Name      Size            Bytes  Class     Attributes

  a         1x1                 8  double              
  b         1x1                 8  double              

Der Strichpunkt am Ende der Zeile

Um die Ausgabe der Werte am Bildschirm zu unterdrücken, sollte man bei allen Matlab-Programmen am Ende einer Zuweisung immer den Strichpunkt ";" verwenden. Das ändert nichts an der Zuweisung, wie man leicht sehen kann. Mit dem Befehl disp kann man sie jederzeit am Schirm anzeigen.

Hier sieht man auch schon einen Hinweis auf einen anderen Datentyp, nämlich char (Zeichenketten), die in der Deklaration durch einfache Hochkommas eingegrenzt werden, z.B. 'c ='.

c = 2;
d = 5;
whos
  Name      Size            Bytes  Class     Attributes

  a         1x1                 8  double              
  b         1x1                 8  double              
  c         1x1                 8  double              
  d         1x1                 8  double              

disp('c ='); disp(c);
c =
     2

disp(['c = ',num2str(c)]);
c = 2

Einfache Rechnungen

Mit diesen Variablen kann man nun einfache Rechnungen machen. Hier wird nun wegen der Web-Darstellung der Strichpunkt am Ende der Zeile weggelassen. Wenn man das Ergebnis keiner Variable zuweist, verwendet Matlab die Variable ans (answer = Antwort).

summe = a + b
summe =

    3.7000

c * d
ans =

    10

r_1 = a + b * (c - d)
r_1 =

   -6.3000

r_2 = (a + b) / c + d
r_2 =

    6.8500

r_3 = (a + b) / (c + d)
r_3 =

    0.5286

r_4 = d^c
r_4 =

    25

r_5 = d^(c+d)
r_5 =

       78125

Überschreiben von Variablen

Variablen können einfach überschrieben werden, wobei dann nur mehr der neue Werte existiert, die alte Bedeutung ist damit überschrieben und verschwunden.

summe = a + b + c + d
summe =

   10.7000

Das Ausgabeformat

Bei den voherigen Ausgabe am Schirm sieht man maximal vier Stellen hinter dem Komma. Das ist nur eine Beschränkung der Ausgabe und hat nichts mit der Genauigkeit der Rechnung zu tun. Mit dem Befehl format kann man dieses Verhalten ändern.

Numerische Ergebnisse können aber in vielen Fällen nicht "exakt" sein, da nur ein beschränkter Speicherplatz pro Zahl zur Verfügung steht.

format long % fixed point format
r_3
r_3 =

   0.528571428571429

format long e % floating point format, e-01 heißt 10^(-1)
r_3
r_3 =

     5.285714285714286e-01

format short % Rückkehr zum Standardfall

Einfache Funktionen

Matlab kennt natürlich eine Vielzahl von mathematischen und anderen Funktionen, wobei hier nur eine trigonometrische Funktion (sin) und die Exponentialfunktion (exp) diskutiert wird. Das Argument (oder die Argumente) stehen immer innerhalb von runden Klammern "()" nach dem Funktionsnamen.

s_1 = a * sin(b)
s_1 =

    0.7182

s_2 = sin(a + b)
s_2 =

   -0.5298

s_3 = sin(2 * pi * a) % Matlab kennt pi!
s_3 =

    0.9511

format long; pi, format short;
% Komma nach pi erlaubt Fortsetzung der Zeile
ans =

   3.141592653589793

format long
e = exp(1) % Matlab kennt nicht e!
format short
e =

   2.718281828459046

e_1 = sin(2 * pi * a) * exp(-c)
e_1 =

    0.1287

Genauigkeit

Wie schon weiter oben angesprochen sind numerische Ergebnisse nicht unbedingt exakt. Hier sieht man z.B., dass "sin(0)" noch exakt Null ergibt, dass aber "sin(pi)" nur in der Nähe von Null liegt. Dies folgt schon aus der Ungenauigkeit der numerischen Darstellung von pi und natürlich auch aus der Ungenauigkeit der Berechnung der Sinus-Funktion.

sin_null = sin(0)
sin_null =

     0

sin_pi = sin(pi)
sin_pi =

   1.2246e-16

Workspace - revisited

Matlab kennt nun folgende Variable ausgegeben als einfache Liste oder in detailierter Form.

who
Your variables are:

a         c         e_1       r_3       s_1       sin_null  
ans       d         r_1       r_4       s_2       sin_pi    
b         e         r_2       r_5       s_3       summe     

whos
  Name          Size            Bytes  Class     Attributes

  a             1x1                 8  double              
  ans           1x1                 8  double              
  b             1x1                 8  double              
  c             1x1                 8  double              
  d             1x1                 8  double              
  e             1x1                 8  double              
  e_1           1x1                 8  double              
  r_1           1x1                 8  double              
  r_2           1x1                 8  double              
  r_3           1x1                 8  double              
  r_4           1x1                 8  double              
  r_5           1x1                 8  double              
  s_1           1x1                 8  double              
  s_2           1x1                 8  double              
  s_3           1x1                 8  double              
  sin_null      1x1                 8  double              
  sin_pi        1x1                 8  double              
  summe         1x1                 8  double              

Hilfe

Hilfe zu Matlab-Funktionen erhält man mit den Befehlen help oder doc. Sowohl das Skriptum, als auch die Angaben zu den Übungsbeispielen sind ausführlich mit der Matlab-Hilfe verlinkt.

- "help sin" gibt Hilfe zur Sinus-Funktion aus

- "doc sin" started Matlab helpbrowser mit dem Topic sin

Eine interessante Übersicht über Matlab Befehle verweist auf verschiedenste Schwerpunkte, wobei vor allem "Mathematics" und "Programming and Data Types" am Anfang interessant ist.