Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Was ist MATLAB

.doc
Скачиваний:
2
Добавлен:
12.11.2019
Размер:
633.34 Кб
Скачать

+MATLAB

Matlab (Eigenschreibweise MATLAB in Großbuchstaben) ist eine kommerzielle Software des Unternehmens The MathWorks, Inc. zur Lösung mathematischer Probleme und zur grafischen Darstellung der Ergebnisse. Matlab ist primär für numerische Berechnungen mithilfe von Matrizen ausgelegt, woher sich auch der Name ableitet: MATrix LABoratory.

Entstehung

Matlab wurde Ende der 1970er Jahre von Cleve Moler an der Universität New Mexico entwickelt, um den Studenten die Fortran-Bibliotheken LINPACK und EISPACK für lineare Algebra von einer Kommandozeile aus ohne Programmierkenntnisse in Fortran zugänglich zu machen. Zusammen mit Jack Little und Steve Bangert gründete Moler 1984 The MathWorks und machte Matlab zu einem kommerziellen Produkt, das zusammen mit einer ersten Funktionssammlung, der Control System Toolbox, vor allem in der Regelungstechnik viele Anwender fand.

Einsatz

Matlab dient im Gegensatz zu Computeralgebrasystemen nicht der symbolischen, sondern primär der numerischen (zahlenmäßigen) Lösung von Problemen. Die Software wird in Industrie und an Hochschulen vor allem für numerische Simulation sowie Datenerfassung, Datenanalyse und -auswertung eingesetzt.

Matlab ist auch die Basis für Simulink, ein anderes Produkt des Unternehmens The MathWorks, das zur zeitgesteuerten Simulation dient, und Stateflow, das für die ereignisorientierte Simulation benutzt wird, sowie für zahlreiche anwendungs- und domänenspezifische Erweiterungen.

Alternativen

Da Matlab ab Version 6 auf den Open-Source-Bibliotheken LAPACK und BLAS basiert, existieren mittlerweile mehrere kostenlose Alternativen zu Matlab mit gleicher numerischer Qualität. Vom französischen INRIA (Institut National de Recherche en Informatique et en Automatique) stammt die Alternative Scilab/Xcos. Im Bereich der freien Software gibt es mehrere Open-Source-Projekte, welche die Funktionalität von Matlab nachbilden und in Teilaspekten verbessern. Diese Projekte streben oft keine direkte Kompatibilität an; die Unterschiede zu Matlab variieren. Im Rahmen des GNU-Projektes ist GNU Octave entstanden, das in weiten Teilen codekompatibel zu MATLAB ist. Ein anderes ist das Softwarepaket FreeMat.

Die Benutzeroberfläche von MATLAB

Beim Start von MATLAB in der Standardkonfiguration wird ein dreiteiliger Desktop angezeigt.

  • Links oben befindet sich ein Browser für das aktuelle Verzeichnis (Reiter ,,Current Directory``) bzw. die im Arbeitsspeicher definierten Variablen (Reiter ,,Workspace``). Darunter werden im Fenster ,, Command History`` die zuletzt eingegebenen Befehle angezeigt.

  • Auf der rechten Seite befindet sich das Kommandofenster. Es dient zur Eingabe von Daten und Befehlen sowie zur Ausgabe von Resultaten.

  • Eingabezeilen werden durch die Zeichen >> gekennzeichnet. Mit Hilfe der Cursortasten (Pfeil auf bzw. Pfeil ab) können die zuletzt eingegebenen Befehle angezeigt werden. Wurden zuvor einige Zeichen eingegeben, so werden nur noch jene Befehle der Befehlshistorie angezeigt, die mit diesen Zeichen beginnen. Die Tabulator-Taste ermöglicht die Vervollständigung angefangener Funktions-, Variablen- oder Verzeichnisnamen.

  • Beim Aufruf von MATLAB mittels matlab -nodesktop wird nur das Kommandofenster bzw. dessen Inhalt angezeigt. MATLAB kann durch Eingabe von exit oder quit im Kommandofenster beendet werden.

  • (Autoren: Hörner/Wipper)

  • Kurze MATLAB-Session zum Lösen eines linearen Gleichungssystems. Die Ausführung erfolgt innerhalb einer Linux-Shell:

  • user@host:~> matlab -nodesktop

  • < M A T L A B >

  • Copyright 1984-2005 The MathWorks, Inc.

  • Version 7.1.0.183 (R14) Service Pack 3

  • August 02, 2005

To get started, type one of these: helpwin, helpdesk, or demo.

  • For product information, visit www.mathworks.com.

  • >> A=[5 0 -2; 3 2 9; 6 1 4]

  • A =

  • 5 0 -2

  • 3 2 9

  • 6 1 4

  • >> A\[-3; -6; -7]

  • ans =

  • -1.0000

  • 3.0000

  • -1.0000

  • >> exit

  • Das Hilfe-System von MATLAB

  • Der Befehl help dient zur Anzeige von Hilfetexten im Kommandofenster. Mögliche Aufrufarten sind dabei:

  • help     bzw.      help Thema     bzw.      help Funktionsname

  • die eine Übersicht aller Hilfethemen bzw. die Hilfe zu einem Thema bzw. einer Funktion ausgibt.

  • Sofern der Funktionsname nicht bekannt ist, kann mittels

  • lookfor Text

  • nach den Funktionen gesucht werden, in deren Kurzbeschribung der gegebene Text enthalten ist.

  • Ebenfalls verfügbar ist eine Dokumentation in HTML-Format. Diese kann mit Hilfe des Befehls

  • helpbrowser

  • angezeigt werden. Einzelne Funktions- oder Themenbeschreibungen können analog zu help mit Hilfe des Befehle

  • doc Thema     bzw.     doc Funktionsname

  • im Helpbrowser angezeigt werden.

  • Der Helpbrowser ermöglicht über den Reiter ,,Demos`` auch den Zugang zu vielen Anwendungsbeispielen. Diese können alternativ auch durch Eingabe von demo auf der Kommandozeile aufgrufen werden.

  • Bei den Hilfe- und Dokumentationstexten ist darauf zu achten, dass Funktionsnamen zur besseren Kennzeichnung mit Großbuchstaben dargestellt sind. Beim Aufruf der Funktion oder der zugehörigen Hilfeseiten sind jedoch Kleinbuchstaben zu verwenden.

  • (Autoren: Hörner/Wipper)

  • Gesucht wird der Befehl zur Berechnung des Rangs (engl. rank) einer Matrix. Hierzu wird zunächst mit Hilfe der Funktion lookfor nach jenen Funktionen gesucht, in deren Kurzbeschreibung die Zeichenkette rank vorkommt:

  • >> lookfor rank

  • CHOLUPDATE Rank 1 update to Cholesky factorization.

  • QRUPDATE Rank 1 update to QR factorization.

  • RANK Matrix rank.

  • SPRANK Structural rank.

  • GFRANK Compute the rank of a matrix over a Galois field.

  • FITSCALINGRANK Rank based fitness scaling.

  • GANGSTR Zero out 'small' entries subject to structural rank.

  • FRANKE Franke's bivariate test function.

  • ...

  • Jede Zeile der Ausgabe von lookfor enthält den groß geschriebenen Namen und die Kurzbeschreibung einer Funktion. Die Anzeige der Hilfeseite zur Funktion rank erfolgt mit dem Befehl help (auf Kleinschreibung des Funktionsnamens achten).

  • >> help rank

  • RANK Matrix rank.

  • RANK(A) provides an estimate of the number of linearly

  • independent rows or columns of a matrix A.

  • RANK(A,tol) is the number of singular values of A

  • that are larger than tol.

  • RANK(A) uses the default tol = max(size(A)) * eps(norm(A)).

  • Class support for input A:

  • float: double, single

  • Overloaded functions or methods (ones with the same name in

  • other directories)

  • help gf/rank.m

  • help sym/rank.m

  • Reference page in Help browser

  • doc rank

  • Eine ausführliche Beschreibung der Funktion rank im Hilfe-Browser kann durch Eingabe von doc rank angezeigt werden:

  • Viele MATLAB-Funktionen sind in der Programmiersprache von MATLAB implementiert. Der Quelltext kann in diesem Fall mit type  Funktionsname angezeigt werden:

  • >> type rank

  • function r = rank(A,tol)

  • %RANK Matrix rank.

  • % RANK(A) provides an estimate of the number of linearly

  • % independent rows or columns of a matrix A.

  • % RANK(A,tol) is the number of singular values of A

  • % that are larger than tol.

  • % RANK(A) uses the default tol = max(size(A)) * eps(norm(A)).

  • %

  • % Class support for input A:

  • % float: double, single

  • % Copyright 1984-2004 The MathWorks, Inc.

  • % $Revision: 1.5 $ $Date: 2006/08/22 09:08:13 $

  • s = svd(A);

  • if nargin==1

  • tol = max(size(A)') * eps(max(s));

  • end

  • r = sum(s > tol);

  • Die mittels help ausgegebene Hilfe zur Funktion rank entspricht dabei dem ersten zusammenhängenden Block von Kommentarzeilen, die durch % gekennzeichnet sind. Die Funktion lookfor durchsucht die jeweils erste Kommentarzeile.

Zahlen

Zahlen werden in MATLAB im Gleitpunktformat gemäß dem IEEE-Standard double gespeichert. In diesem Format sind nur endlich viele rationale Zahlen darstellbar, die betragsmäßig im Intervall [2.2251e-308,1.7977e+308] liegen. Die relative Genauigkeit beträgt . Die MATLAB-Funktion eps liefert den Abstand zwischen 1 und der nächstgrößeren darstellbaren Zahl, also das doppelte der relativen Genauigkeit.

Darüber hinaus sind die folgenden speziellen Zahlen definiert:

inf (infinity): dieser vorzeichenbehaftete Wert steht für und kennzeichnet einen Überlauf

nan (not a number): entsteht als Ergebnis mathematisch nicht definierter Operationen

Die Darstellung der genannten Zahlen erfolgt mit Hilfe der folgenden Befehle:

Befehl

Ausgabe

realmin

2.2251e-308

realmax

1.7977e+308

eps

2.2204e-16

inf

Inf

-inf

-Inf

nan

NaN

Die Eingabe von Zahlen in MATLAB erfolgt im Dezimalformat. Hierbei sind die Angabe eines Vorzeichens bzw. des Dezimalpunktes optional. Durch Anhängen des Buchstabens e und Angabe eines Exponenten erfolgt eine Skalierung mit der zugehörigen Zehnerpotenz. Durch das Anhängen des Buchstabens i bzw. j werden imaginäre Zahlen gekennzeichnet.

Eingabe von (komplexen) Zahlen:

>> 123 >> 1.23 >> .000123

ans = ans = ans =

123 1.2300 1.2300e-04

>> 1.23e-4 >> 12i >> 12+3i

ans = ans = ans =

1.2300e-04 0 +12.0000i 12.0000 + 3.0000i

>> 1.23+4.56e-3i >> 4j-123

ans = ans =

1.2300 + 0.0046i -1.2300e+02 + 4.0000e+00i

Überlauf und mathematisch nicht definierte Operationen:

>> 1e400 >> 1-inf >> -1+inf >> inf+inf

ans = ans = ans = ans =

Inf -Inf Inf Inf

>> inf-inf >> 1/0 >> 0/0

ans = Warning: Divide by zero. Warning: Divide by zero.

NaN ans = ans =

Inf NaN

Ausgabeformatierung

Die Formatierung der ausgegebenen Resultate kann mit der Funktion

format Stil

gesteuert werden. Mögliche Stilparameter sind:

Stil

Beschreibung

Ausgabe von exp(-1)

short

skalierte Festpunktdarstellung mit 5 Stellen

0.3679

long

skalierte Festpunktdarstellung mit 15 Stellen

0.36787944117144

short e

Gleitpunktdarstellung mit 5 Stellen

3.6788e-01

long e

Gleitpunktdarstellung mit 15 Stellen

3.678794411714423e-01

short g

optimale Darstellung mit 5 Stellen

0.36788

long g

optimale Darstellung mit 15 Stellen

0.367879441171442

short eng

mindestens 5 Stellen und einen durch drei teilbaren Exponenten

367.8794e-003

long eng

16 signifikante Stellen und einen durch drei teilbaren Exponenten

367.879441171442e-003

rat

Näherung in Bruchdarstellung

536/1457

Die Anzeige von Leerzeilen zwischen den Ausgaben kann durch Angabe des Stils compact bzw. loose aus bzw. eingeschaltet werden.

In der Standard-Einstellung gibt MATLAB im Kommandofenster bei Eingabe eines Ausdrucks dessen Wert zurück. Sofern dies nicht erwünscht ist, kann die Ausgabe durch Anhängen des Zeichens ; unterdrückt werden.

Elementare Operatoren und Funktionen

Zahlen können mit den Operatoren

+,-,*,/,\ (a\b entspricht b/a),^ (Potenz)

verknüpft werden. Dabei können Ausdrücke mit Hilfe von ( ) geklammert werden. Die Auswertung erfolgt in der Reihenfolge Potenzen, Punktrechnungen, Strichrechnungen. Gleichrangige Ausdrücke werden von links nach rechts ausgewertet.

Ebenfalls verfügbar sind die üblichen mathematischen Funktionen, von denen nachfolgend eine Auswahl angegeben ist:

 

trigonometrische Funktionen (Winkelangaben in Bogenmaß)

 

 

cos, sin, tan

Kosinus, Sinus, Tangens,

 

 

cot, sec, csc

Cotangens, Secans, Cosecans

 

 

acos, asin, ...

zugehörige inverse Funktionen

 

 

sinh, cosh, ...

hyperbolische Funktionen

 

 

asinh, acosh, ...

inverse hyperbolische Funktionen

 

Exponentialfunktionen

 

 

exp, pow2

Exponentialfunktion mit Basis bzw. 2

 

 

log, log10, log2

Logarithmus zur Basis , 10 bzw. 2

 

 

sqrt, realsqrt

Quadratwurzel bzw. Einschränkung auf

 

Rechnen mit komplexen Zahlen

 

 

abs, angle, conj

Betrag, Argument (Winkel) und Konjugation

 

 

real, imag

Real- bzw. Imaginärteil

 

Sonstige

 

 

round, floor, ceil

runden, abrunden, aufrunden

 

 

mod, rem, sign

Modul, Divisionsrest, Vorzeichen

 

Konstanten

 

 

pi, exp(1)

,

 

 

i, j

imaginäre Einheit

Eine Übersicht der verfügbaren Operatoren bzw. elementaren Funktionen kann mit Hilfe des Befehls

help matlab/ops         bzw.         help matlab/elfun

dargestellt werden.

Beispiele zur Reihenfolge bei der Auswertung von Operatoren:

>> 3^3^3 >> (3^3)^3 >> 3^(3^3)

ans = ans = ans =

19683 19683 7.6256e+12

>> 12/3/4 >> 3\12/4 >> 16^1/2-16^(1/2)

ans = ans = ans =

1 1 4

Bei der Durchführung ist stets zu berücksichtigen, dass nur mit endlicher Präzision gerechnet wird und auch bei den einfachsten Rechnungen wie bereits Fehler auftreten können:

>> exp(1)*exp(1)/exp(2)-1

ans =

2.2204e-16

Es ist darauf zu achten, dass MATLAB stets die komplexen Erweiterungen der bekannten reellen Funktionen verwendet, d.h. komplexe Zahlen können sowohl im Argument, als auch im Resultat auftreten. Sofern dies nicht erwünscht ist kann bei ausgewählten Funktionen mit Hilfe der real-Variante eine explizite Fehlermeldung erzwungen werden:

>> i^i >> sqrt(-1) >> realsqrt(-1)

ans = ans = ??? Error using ==> realsqrt

0.2079 0 + 1.0000i Realsqrt produced complex result.

Ebenso können Rechnungen mit dem speziellen Wert bzw. Resultat inf ( ) durchgeführt werden:

>> sqrt(inf) >> sqrt(-inf) >> log(0)

ans = ans = Warning: Log of zero.

Inf 0 + Infi ans =

-Inf

Variablen

Variablennamen müssen mit einem Buchstaben beginnen. Sie dürfen nur aus Buchstaben (keine Umlaute), Ziffern und dem Zeichen _ zusammengesetzt sein. Die maximal erlaubte Länge kann mit Hilfe der MATLAB-Funktion namelengthmax abgefragt werden. Sie ergibt für die Version R14 den Wert 63. Variablen- und Funktionsnamen sind case sensitive, d.h. zwischen Groß- und Kleinschreibung wird unterschieden.

Bei der Wahl der Variablennamen ist darauf zu achten, dass gleichnamige Funktionen überdeckt werden. Besonders gefährdet sind hier die Funktionen i und j, welche die imaginäre Einheit zurückliefern.

Die Zuweisung von Werten erfolgt in der Form Variable= Ausdruck. Die Typdeklaration erfolgt dabei automatisch. Der jeweils letzte nicht zugewiesene Rückgabewert wird in der Variablen ans (answer) gespeichert.

Eine Liste der definierten Variablen bzw. deren Langform kann mit Hilfe der Befehle

who         bzw.         whos

ausgegeben werden. Variablen lassen sich mit Hilfe des Befehls

clear Variablennamen

löschen. Mehrere Variablennamen sind dabei durch Leerstellen zu trennen. Sofern keine Variablennamen angegeben sind, werden alle Variablen gelöscht.

In dem Beispiel

>> clear; Radius=4;

>> Flaeche=pi*radius^2

??? Undefined function or variable 'radius'.

>> Flaeche=pi*Radius^2;

>> Flaeche

Flaeche =

50.2655

>> who

Your variables are:

Flaeche Radius

>> sqrt(Flaeche)

ans =

7.0898

>> whos

Name Size Bytes Class

Flaeche 1x1 8 double array

Radius 1x1 8 double array

ans 1x1 8 double array

Grand total is 3 elements using 24 bytes

werden zunächst alle Variablen gelöscht und anschließend die Variable Radius mit dem Wert definiert. Die darauf folgende Zuweisung ergibt aufgrund der falschen Groß-/Kleinschreibung eine Fehlermeldung. Aufgrund der fehlenden Zuweisung des Resultats von sqrt(Flaeche) wird dieses in der Variablen ans gespeichert, wie an der Ausgabe des Befehls whos zu sehen ist.

Betrachtet wird das folgende Beispiel:

>> clear; z=3+4*i

z =

3.0000 + 4.0000i

>> i=0;

>> z=3+4*i

z =

3

>> z=3+4i

z =

3.0000 + 4.0000i

>> clear i

>> z=3+4*i

z =

3.0000 + 4.0000i

In der ersten Zeile werden zunächst alle Variablen gelöscht und anschließend die Funktion i zur Definition einer komplexen Zahl verwendet. Sie wird in der darauf folgenden Zeile durch die Zuweisung i=0 überdeckt, weshalb die nächste Zuweisung folgerichtig zu dem Wert führt. Davon unberührt bleibt die Darstellung komplexer Zahlen durch direktes Anhängen von i, da hier i nicht als Funktion bzw. Variable, sondern spezieller Kennzeichner des Imaginärteils fungiert. Durch das Löschen der Variablen i mittels clear i wird die Überlagerung aufgehoben und man erhält das ursprüngliche Ergebnis bei der Definition von z.

Speichern und Laden von Variablen

Alle Variablen des Arbeitsspeichers können mit Hilfe des Befehls

save Dateiname

unter dem gegebenen Dateinamen abgespeichert werden. Die Speicherung erfolgt im MATLAB-eigenen Binärformat, das durch die Dateiendung .mat gekennzeichnet ist. Durch Anhängen einer mittels Leerzeichen getrennten Liste von Variablennamen werden nur die angegebenen Variablen gespeichert:

save Dateiname Variablennamen

Alle in einer Datei gespeicherten Variablen können mittels

load Dateiname

bzw. ausgewählte Variablen mittels

load Dateiname Variablennamen

geladen werden. Dabei werden die Inhalte gleichnamiger Variablen im Arbeitsspeicher überschrieben.

Im folgenden Beispiel werden zunächst die drei Variablen A, B, C definiert und anschließend in der Datei daten.mat gespeichert. Nach ihrer Umdefinition werden die ursprünglichen Werte von A und C wieder geladen.

>> A=1, B=inf, C=2-3i

A =

1

B =

Inf

C =

2.0000 - 3.0000i

>> save daten

>> A=nan, B=0, C=-1

A =

NaN

B =

0

C =

-1

>> load daten A C

>> A, B, C

A =

1

B =

0

C =

2.0000 - 3.0000i

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]