Fixed operator index
This commit is contained in:
parent
3225b28be4
commit
89af24fbd9
@ -196,6 +196,9 @@
|
||||
\newcommand{\codeterm}[2][]{\textit{#2}\ifthenelse{\equal{#1}{}}{\protect\sindex[term]{#2}}{\protect\sindex[term]{#1}}}
|
||||
\newcommand{\file}[1]{\texttt{#1}}
|
||||
|
||||
% for escaping special characters into the index:
|
||||
\newcommand{\scor}{"|}
|
||||
|
||||
%%%%% key-shortcuts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{shapes}
|
||||
|
@ -75,10 +75,14 @@ Variablen diesen Datentyp.
|
||||
\subsection{Arbeiten mit Variablen}
|
||||
|
||||
Nat\"urlich kann mit den Variablen auch gearbeitet, bzw. gerechnet
|
||||
werden. \matlab{} kennt alle normalen arithmetischen Operatoren wie
|
||||
\code{+}, \code{-}, \code{*} und \code{/}. Die Potenz wird \"uber das
|
||||
Dachsymbol \code{\^{}} dargestellt. Listing \ref{varListing3} zeigt, wie sie
|
||||
benutzt werden.
|
||||
werden. \matlab{} kennt alle normalen
|
||||
\codeterm[Operator!arithmetischer]{arithmetischen Operatoren} wie
|
||||
\code[Operator!arithmetischer!1add@+]{+},
|
||||
\code[Operator!arithmetischer!2sub@-]{-},
|
||||
\code[Operator!arithmetischer!3mul@*]{*} und
|
||||
\code[Operator!arithmetischer!4div@/]{/}. Die Potenz wird \"uber das
|
||||
Dachsymbol \code[Operator!arithmetischer!5pow@\^{}]{\^{}}
|
||||
dargestellt. Listing \ref{varListing3} zeigt, wie sie benutzt werden.
|
||||
|
||||
\begin{lstlisting}[label=varListing3, caption={Rechnen mit Variablen.}]
|
||||
>> x = 1;
|
||||
@ -112,8 +116,9 @@ Beachtenswert ist z.B. in Zeilen 3 und 6, dass mit dem Inhalt einer
|
||||
Variablen gerechnet werden kann, ohne dass dadurch ihr Wert
|
||||
ver\"andert wird. Wenn der Wert einer Variablen ver\"andert werden
|
||||
soll, dann muss der Variable der neue Wert explizit zugewiesen werden
|
||||
(mit dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25
|
||||
zeigt wie eine einzelne Variable gel\"oscht wird.
|
||||
(mit dem \code[Operator!Zuweisung!=]{=} Zuweisungsoperator,
|
||||
z.B. Zeilen 16, 20). Zeile 25 zeigt wie eine einzelne Variable
|
||||
gel\"oscht wird.
|
||||
|
||||
|
||||
\subsection{Datentypen}
|
||||
@ -244,7 +249,7 @@ erhalten werden (Listing \ref{arrayListing2}). Im Falle des Vektors
|
||||
|
||||
Diese Ausgabe zeigt, dass Vektoren im Grunde 2-dimensional sind. Bei
|
||||
einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e
|
||||
1. \code[length()]{length(a)} gibt die l\"angste Ausdehnung an. Der \code{'}-
|
||||
1. \code[length()]{length(a)} gibt die l\"angste Ausdehnung an. Der \code[Operator!Matrix!']{'}-
|
||||
Operator transponiert den Spaltenvektor zu einem Zeilenvektor (Zeilen 14 ff.).
|
||||
|
||||
|
||||
@ -304,7 +309,7 @@ mit Indexen auf die Inhalte eines Vektors zugegriffen werden kann.
|
||||
\end{lstlisting}
|
||||
|
||||
Hierbei kann auf einzelne Werte zugegriffen werden oder, analog zur
|
||||
Erzeugung von Vektoren, die \code{:} Notation verwendet werden, um auf mehrere
|
||||
Erzeugung von Vektoren, die \code[Operator!Matrix!:]{:} Notation verwendet werden, um auf mehrere
|
||||
Element gleichzeitig zuzugreifen.
|
||||
|
||||
\begin{lstlisting}[caption={Zugriff auf den Inhalt von Vektoren I}, label=arrayListing5]
|
||||
@ -365,10 +370,14 @@ problemlos m\"oglich. Bei der Multiplikation (Zeile 10), der Division
|
||||
(Zeile 14) und auch der Potenzierung mu{\ss} mit vorangestellem '.'
|
||||
klar gemacht werden, dass es sich um eine \emph{elementweise}
|
||||
Verarbeitung handeln soll. F\"ur diese elementweisen Operationen kennt
|
||||
\matlab{} die Operatoren \code{.*}, \code{./} und \code{.\^{}}. Die
|
||||
einfachen Operatoren \code{*}, \code{/} und \code{\^{}} sind mit den
|
||||
entsprechenden Matrixoperationen aus der linearen Algebrar belegt
|
||||
(Box \ref{matrixmultiplication}).
|
||||
\matlab{} die Operatoren \code[Operator!arithmetischer!3mule@.*]{.*},
|
||||
\code[Operator!arithmetischer!4dive@./]{./} und
|
||||
\code[Operator!arithmetischer!5powe@.\^{}]{.\^{}}. Die einfachen Operatoren
|
||||
\code[Operator!arithmetischer!3mul@*]{*},
|
||||
\code[Operator!arithmetischer!4div@/]{/} und
|
||||
\code[Operator!arithmetischer!5pow@\^{}]{\^{}} sind mit den entsprechenden
|
||||
Matrixoperationen aus der linearen Algebrar belegt (Box
|
||||
\ref{matrixmultiplication}).
|
||||
|
||||
Zu Beachten ist des Weiteren noch die Fehlermeldung am Schluss von
|
||||
Listing \ref{arrayListing6}. Wenn zwei Vektoren (elementweise)
|
||||
@ -378,7 +387,7 @@ Spaltenvektoren) \"ubereinstimmen.
|
||||
|
||||
|
||||
Will man Elemente aus einem Vektor entfernen, dann weist man den
|
||||
entsprechenden Zellen einen leeren Wert (\code{[]}) zu.
|
||||
entsprechenden Zellen einen leeren Wert (\code[Operator!Matrix!{[]}]{[]}) zu.
|
||||
|
||||
\begin{lstlisting}[label=arrayListing7, caption={L\"oschen von Elementen aus einem Vektor.}]
|
||||
>> a = (0:2:8);
|
||||
@ -443,8 +452,9 @@ bis 3-d Matrizen (Abbildung \ref{matrixfig} A,B).
|
||||
|
||||
Erzeugt werden Matrizen sehr \"ahnlich zu den Vektoren (Listing
|
||||
\ref{matrixListing}). Die Definition einer Matrize wird, wie beim
|
||||
Vektor, durch \code{[]} eingeschlossen. Das \code{;} trennt die
|
||||
einzelnen Zeilen der Matrize.
|
||||
Vektor, durch \code[Operator!Matrix!{[]}]{[]} eingeschlossen. Das
|
||||
\code[Operator!Matrix!;]{;} trennt die einzelnen Zeilen der
|
||||
Matrize.
|
||||
|
||||
\begin{lstlisting}[label=matrixListing, caption={Erzeugen von Matrizen.}]
|
||||
>> a = [1 2 3; 4 5 6; 7 8 9]
|
||||
@ -561,10 +571,12 @@ verrechnet werden, wie die Dimensionalit\"aten
|
||||
\"ubereinstimmen. Besondere Vorsicht sollte man immer dann walten
|
||||
lassen, wenn man Matrizen miteinander multiplizieren, dividieren oder
|
||||
potenzieren will. Hier ist es wichtig sich klarzumachen was man will:
|
||||
Eine elementweise Multiplikation (\code{.*} Operator, Listing
|
||||
Eine elementweise Multiplikation
|
||||
(\code[Operator!arithmetischer!3mule@.*]{.*} Operator, Listing
|
||||
\ref{matrixOperations} Zeile 18) oder ob eine Matrixmultiplikation
|
||||
(\code{*} Operator, Listing \ref{matrixOperations} Zeile 12, Box
|
||||
\ref{matrixmultiplication}) durchgef\"uhrt werden soll.
|
||||
(\code[Operator!arithmetischer!3mul@*]{*} Operator, Listing
|
||||
\ref{matrixOperations} Zeile 12, Box \ref{matrixmultiplication})
|
||||
durchgef\"uhrt werden soll.
|
||||
|
||||
\begin{lstlisting}[label=matrixOperations, caption={Zwei Arten von Multiplikationen auf Matrizen.}]
|
||||
>> A = randi(10, [3, 3]) % 2-D Matrix
|
||||
@ -637,19 +649,23 @@ Boolesche Ausdr\"ucke sind Anweisungen, die zu \codeterm{wahr} oder
|
||||
\codeterm{falsch} ausgewertet werden. Man kennt sie z.B. aus der
|
||||
Mengenlehre. In der Programmierung werden sie eingesetzt, um z.B. die
|
||||
Beziehung zwischen Entit\"aten zu testen. Hierzu werden die
|
||||
\codeterm{relationalen Operatoren} (\code{>}, \code{<}, \code{==},
|
||||
\code{!}, gr\"o{\ss}er als, kleiner als, gleich und nicht)
|
||||
eingesetzt. Mehrere Ausdr\"ucke werden mittels der \codeterm{logischen
|
||||
Operatoren} (\code{\&}, \code{|}, UND, ODER ) verkn\"upft. Sie sind f\"ur
|
||||
uns nicht nur wichtig um Codeabschnitte bedingt auszuf\"uhren
|
||||
(Verzweigungen, \ref{controlstructsec}) sondern auch um aus Vektoren
|
||||
und Matrizen bequem Elemente auszuw\"ahlen (logisches Indizieren,
|
||||
\codeterm{relationalen Operatoren} (\code[Operator!relationaler!>]{>},
|
||||
\code[Operator!relationaler!<]{<},
|
||||
\code[Operator!relationaler!==]{==},
|
||||
\code[Operator!relationaler!"!]{!}, gr\"o{\ss}er als, kleiner als,
|
||||
gleich und nicht) eingesetzt. Mehrere Ausdr\"ucke werden mittels der
|
||||
\codeterm[Operator!logischer]{logischen Operatoren}
|
||||
(\code[Operator!logischer!and1@\&]{\&}, \code[Operator!logischer!or1@{"|} {}]{|},
|
||||
UND, ODER ) verkn\"upft. Sie sind f\"ur uns nicht nur wichtig um
|
||||
Codeabschnitte bedingt auszuf\"uhren (Verzweigungen,
|
||||
\ref{controlstructsec}) sondern auch um aus Vektoren und Matrizen
|
||||
bequem Elemente auszuw\"ahlen (logisches Indizieren,
|
||||
\ref{logicalindexingsec}). Die Tabellen \ref{logicalandor} zeigen die
|
||||
Wahrheitstabellen f\"ur das logische UND (Tabelle \ref{logicalandor}, links)
|
||||
und das logische ODER (Tabelle \ref{logicalandor}, rechts). Es werden die
|
||||
Aussagen A und B mit dem Operator verkn\"upft. Beim logischen UND ist
|
||||
der gesamte Ausdruck nur dann wahr, wenn beide Ausdr\"ucke sich zu
|
||||
wahr auswerten lassen.
|
||||
Wahrheitstabellen f\"ur das logische UND (Tabelle \ref{logicalandor},
|
||||
links) und das logische ODER (Tabelle \ref{logicalandor}, rechts). Es
|
||||
werden die Aussagen A und B mit dem Operator verkn\"upft. Beim
|
||||
logischen UND ist der gesamte Ausdruck nur dann wahr, wenn beide
|
||||
Ausdr\"ucke sich zu wahr auswerten lassen.
|
||||
|
||||
\begin{table}[tp]
|
||||
\titlecaption{Wahrheitstabellen logisches UND (links) und logisches ODER (rechts).}{}\label{logicalandor}
|
||||
@ -675,14 +691,16 @@ Anders ist das beim logischen ODER. Hier ist der gesamte Ausdruck
|
||||
wahr, wenn sich der eine \emph{oder} der andere Ausdruck zu wahr
|
||||
auswerten l\"a{\ss}t. Tabelle \ref{logicaloperators} zeigt die
|
||||
logischen Operatoren, die in \matlab{} definiert sind. Zu bemerken
|
||||
sind hier noch die \code{\&\&} und \code{||} Operatoren. Man kann
|
||||
beliebige Ausdr\"ucke verkn\"upfen und h\"aufig kann schon anhand des
|
||||
ersten Ausdrucks entschieden werden, ob der gesamte Boolesche Ausdruck
|
||||
zu wahr oder falsch ausgewertet werden wird. Wenn zwei Aussagen mit
|
||||
einem UND verkn\"upft werden und der erste zu falsch ausgewertet wird,
|
||||
muss der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der
|
||||
``short-circuit'' Versionen spart Rechenzeit. Das auschlie{\ss}ende ODER
|
||||
(XOR) ist in \matlab{} nur als Funktion \code[xor()]{xor(A, B)} verf\"ugbar.
|
||||
sind hier noch die \code[Operator!logischer!and2@\&\&]{\&\&} und
|
||||
\code[Operator!logischer!or2@{"|}{"|} {}]{||} Operatoren. Man kann beliebige
|
||||
Ausdr\"ucke verkn\"upfen und h\"aufig kann schon anhand des ersten
|
||||
Ausdrucks entschieden werden, ob der gesamte Boolesche Ausdruck zu
|
||||
wahr oder falsch ausgewertet werden wird. Wenn zwei Aussagen mit einem
|
||||
UND verkn\"upft werden und der erste zu falsch ausgewertet wird, muss
|
||||
der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der
|
||||
\enterm{short-circuit} Versionen spart Rechenzeit. Das auschlie{\ss}ende
|
||||
ODER (XOR) ist in \matlab{} nur als Funktion \code[xor()]{xor(A, B)}
|
||||
verf\"ugbar.
|
||||
|
||||
\begin{table}[th]
|
||||
\titlecaption{\label{logicaloperators}
|
||||
@ -701,10 +719,11 @@ muss der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der
|
||||
\end{center}
|
||||
\end{table}
|
||||
|
||||
Um Werte miteinander zu vergleichen gibt es die \codeterm{relationalen
|
||||
Operatoren} (Tabelle \ref{relationaloperators}). Mit ihnen kann man
|
||||
auf Dinge wie Gleichheit (\code{==}) gr\"o{\ss}er oder kleiner als
|
||||
(\code{>}, \code{<}) testen.
|
||||
Um Werte miteinander zu vergleichen gibt es die
|
||||
\codeterm[Operator!relationaler]{relationalen Operatoren} (Tabelle
|
||||
\ref{relationaloperators}). Mit ihnen kann man auf Dinge wie
|
||||
Gleichheit (\varcode{==}) gr\"o{\ss}er oder kleiner als (\varcode{>},
|
||||
\varcode{<}) testen.
|
||||
|
||||
\begin{table}[th]
|
||||
\titlecaption{\label{relationaloperators}
|
||||
@ -734,9 +753,10 @@ Beispiele. \matlab{} kennt die Schl\"usselworte \code{true} und
|
||||
\code{logical} Werte 1 und 0.
|
||||
|
||||
\begin{important}[Zuweisungs- und Gleichheitsoperator]
|
||||
Der Zuweisungsoperator \code{=} und der logische Operator \code{==}
|
||||
sind zwei grundverschiedene Dinge. Da sie umgangsprachlich gleich
|
||||
sind k\"onnen sie leider leicht verwechselt werden.
|
||||
Der Zuweisungsoperator \code[Operator!Zuweisung!=]{=} und der
|
||||
logische Operator \code[Operator!logischer!==]{==} sind zwei
|
||||
grundverschiedene Dinge. Da sie umgangsprachlich gleich sind
|
||||
k\"onnen sie leider leicht verwechselt werden.
|
||||
\end{important}
|
||||
|
||||
\begin{lstlisting}[caption={Boolesche Ausdr\"ucke.}, label=booleanexpressions]
|
||||
|
Reference in New Issue
Block a user