[WS] Einführung in Matlab

Neue Frage »

Dual Space Auf diesen Beitrag antworten »
[WS] Einführung in Matlab
Übersicht:

1. Hello World

2. Grundlagen

3. Matrizen & Vektoren

4. Funktionen plotten

5. Komplexe Zahlen

Offizielle Website: http://www.mathworks.de/products/matlab/
Dual Space Auf diesen Beitrag antworten »
1. Hello World
Starten wir wie so oft auch mir einem Hello World Script:
code:
1:
2:
3:
4:
5:
6:
7:
% hello.m
function y=hello(n)
   y=[];
   for i=1:n
      y=[y;'hello world'];
   end
end

Dieser Code muss in einem so genannten m-File gespeichert werden, welcher den gleichen Namen tragen muss, wie die Funktion. Den Editor unter Matlab kann man mit Hilfe der Eingabe
code:
1:
>>edit hello

öffnen. Der Vorteil, bei dieser Methode ist, das Matlab automatisch prüft, ob der gewählte Funktionsname schon vergeben ist.

Ruft man die Funktion hello nun z.B. mit
code:
1:
>>hello(3)

auf, so erhält man
code:
1:
2:
3:
4:
ans = 
hello world
hello world
hello world

Diese Ausgabe stellt einen Spaltenvektor mit 3 Komponenten dar.
 
 
Dual Space Auf diesen Beitrag antworten »
2. Grundlagen
Matlab stellt, wie viele andere Programmiersprachen, mathematische Ausdrücke zur Verfügung. Zusätzlich können diese auch komplette Matrizen verarbeiten. Ausdrücke sind unterteilt in folgende Bestandteile
  • Variablen
  • Zahlen
  • Operatoren
  • Funktionen

VARIABLEN

Matlab benötigt keine speziellen Typdeklarationen oder Dimensionsangaben. Wenn in Matlab eine neue Variable vorkommt, wird sie automatisch deklariert und ihr wird der passende Speicher zugewiesen. Existiert die Variable bereits, so wird sie überschrieben, gegebenenfalls neu deklariert und neuer Speicher zugewiesen.

Beispiel:
code:
1:
>>registrierte_user = 9774;
erzeugt eine 1x1-Matrix mit dem Namen "registrierte_user".


Variablennamen bestehen aus beliebig vielen Buchstaben, Zahlen oder Unterstrichen, müssen aber mit einem Buchstaben beginnen. Matlab ist Case sensitive, d.h. Groß- und Kleinschreibung muss beachtet werden. Somit sind z.B. a und A zwei verschiedene Variablen.


ZAHLEN

Matlab verwendet die gewöhnliche Dezimalschreibweise (z.B. -3.1415), unterstützt aber auch die "wissenschaftliche" Schreibweise (z.B. 1.04e-13). Imaginäre Zahlen werden mit einem hintenangestelltem i oder j gekennzeichnet (z.B. 3j oder 7i). Intern speichert Matlab alle Zahlen im double-Format (Gleitpunktarithmetik). Die Zahlen haben eine Genauigkeit von 16 Dezimalstellen und können Werte zwischen und annehmen. Zusätzlich ist auch als Zahlenwert vorhanden (-inf bzw. +inf).


OPERATOREN

In Matlab gelten die folgenden arithmetischen Operationen (mit den gewöhnlichen Prioritätsregeln):
code:
1:
2:
3:
4:
5:
6:
7:
8:
+     %Addition
-     %Subtraktion
*     %Multiplikation
/     %Division
\     %Linke Division
^     %Potenzierung
'     %Transposition mit Konjugation
()    %Klammern zur Festlegung der Auswertungsreihenfolge
Einen vorangestellten Punkt (z.B. .^) interpretiert Matlab als elementweise Operation.


FUNKTIONEN

Eine große Anzahl an elementaren, sowie nicht elementaren mathematematischer Funktionen sind in Matlab bereits implementiert (Übersicht). Das Ergebnis beim ziehen der Wurzel oder beim Logarithmieren einer negativen Zahl gibnt Matlab automatisch als komplexen Wert aus.
Um die entsprechenden vordefinierten Funktionen und Matrizen aufzulisten gibt man
code:
1:
2:
3:
>>help elfun     %Liste der elementaren Funktionen
>>help specfun   %Liste der speziellen Funktionen
>>help elmat     %Liste der elementaren Matrizen
in das Command Window ein.
Dual Space Auf diesen Beitrag antworten »
3. Matrizen & Vektoren
MATRIZEN

Im folgenden Beispiel wird die Matrix in Matlab erstellt und bearbeitet.
code:
1:
2:
3:
4:
>>A=[1 2 3; 4 5 6; 7 8 9]   %Matrix erstellen und mit A bezeichnen
>>A'                        %Matrix A transponieren
>>B=inv(A)                  %Inverse von A berechnen und diese mit B bezeichnen
>>A.*B                      %Matrizen A und B elementweise multiplizieren

Elemente einer Zeile werden mit Leerzeichen (Komma ist auch möglich) getrennt, Spalten hingegen mit Semikolon.

Mit A(1,2) kann z.B. das Element der ersten Zeile und zweiten Spalte der Matrix A direkt angesprochen werden und mit A(:,2) erhält man die zweite Spalte der Matrix A.

Nützliche Funktionen zum Erstellen elementarer Matrizen sind z.B.
- zeros(n,m) (Nullmatrix der mit n Zeilen und m Spalten),
- ones(n,m) (nxm-Matrix deren Elemente alle den Wert 1 haben),
- rand(n,m) (nxm-Matrix, deren Elemente unabhängig gleichverteilte Zufallszahlen aus [0,1) sind),
- randn(n,m) (nxm-Matrix, deren Elemente unabhängig standartnormalverteilte Zufallsgrößen sind).


VEKTOREN

code:
1:
2:
3:
4:
>>a=[1 2 3]   %Zeilenvektor erstellen und mit a bezeichnen
>>b=[1;2;3]   %Spaltenvektor erstellen und mit b bezeichnen
>>a'          %Vektor a transponieren
>>a.*b        %Vektoren a und b elementweise multiplizieren

Auch bei Vektoren, kann man z.B. die zweite Komponente mit a(2) ansprechen. Wenn man die erste Komponente des Vektors "löschen" möchte, ist dies mit
code:
1:
>>a=a(2:end)

möglich. Will man dagegen eine weitere Komponente (z.B. 17,2) am Ende des Vektors hinzufügen, geht das mit
code:
1:
2:
>>a=[a 17.2]    %falls a Zeilenvektor
>>a=[a; 17.2]   %falls a Spaltenvektor


LÖSEN LINEARER GLEICHUNGSSYSTEME

Gegeben sei das LGS mit



Das LGS lässt sich mit Matlab wie folgt lösen

code:
1:
2:
3:
4:
5:
6:
7:
8:
>>A=[1 2; 3 4];
>>b=[1;1];
>>A\b

ans =

   -1
    1


Dabei unterdrückt das Semikolon am Ende einer Eingabezeile die jeweilige Ausgabe.
Dual Space Auf diesen Beitrag antworten »
4. Funktionen plotten
Matlab kann nur Vektoren gegeneinander plotten, d.h. man muss jedes Punktepaar des Graphen bzw. Punktetripel der Fläche separat berechnen.


2-DIMENSIONALER PLOT

Hier wollen wir beispielhaft den Graphen der Funktion in dem Intervall plotten.
Dazu geben wir uns die x-Werte mit einem äquidistanten Abstand von 0,1 (dieser Abstand kann beliebig gewählt werden) in dem Intervall vor.

code:
1:
>>x=[-2:0.1:5];

Nun wollen wir die zugehörigen y-Werte berechnen.

code:
1:
>>y=x.^2;

Und schließlich erzeugen wir den Plot mit

code:
1:
>>plot(x,y)

und erhalten die folgende Grafik




3-DIMENSIONALER PLOT

Wir wollen z.B. die Funktion grafisch darstellen:

code:
1:
2:
3:
4:
>>[X,Y]=meshgrid(-10:0.2:10);
>>r=sqrt(X.^2 + Y.^2);
>>Z=sin(r)./r;
>>mesh(X,Y,Z)

Ergebis:

tigerbine Auf diesen Beitrag antworten »
5. Komplexe Zahlen
Habe das gerade gefunden, vielleicht kann es auch anderen nützlich sein. Lesen2
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »