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 a 1x1 8 double array b 1x1 8 double array Grand total is 2 elements using 16 bytes
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 a 1x1 8 double array b 1x1 8 double array c 1x1 8 double array d 1x1 8 double array Grand total is 4 elements using 32 bytes
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.52857142857143
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.14159265358979
format long e = exp(1) % Matlab kennt nicht e! format short
e = 2.71828182845905
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 a 1x1 8 double array ans 1x1 8 double array b 1x1 8 double array c 1x1 8 double array d 1x1 8 double array e 1x1 8 double array e_1 1x1 8 double array r_1 1x1 8 double array r_2 1x1 8 double array r_3 1x1 8 double array r_4 1x1 8 double array r_5 1x1 8 double array s_1 1x1 8 double array s_2 1x1 8 double array s_3 1x1 8 double array sin_null 1x1 8 double array sin_pi 1x1 8 double array summe 1x1 8 double array Grand total is 18 elements using 144 bytes
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.