caption fixes and few tiny other changes

This commit is contained in:
Jan Grewe 2015-11-14 16:09:46 +01:00
parent de92972722
commit 7e69b31e26
3 changed files with 78 additions and 68 deletions

View File

@ -177,7 +177,7 @@ Einstellungsm\"oglichkeiten. Wie schon erw\"ahnt, k\"onnen diese
\begin{minipage}[t]{0.3\columnwidth} \begin{minipage}[t]{0.3\columnwidth}
\includegraphics[width=0.9\textwidth]{property_editor} \includegraphics[width=0.9\textwidth]{property_editor}
\end{minipage} \end{minipage}
\caption{\textbf{Graphisches Interface ``Plot Editor''.} \"Uber das Menu \titlecaption{Graphisches Interface ``Plot Editor''.} {\"Uber das Menu
``Tools $\rightarrow$ Edit Plot'' erreicht man den Plot Editor. Je nachdem ``Tools $\rightarrow$ Edit Plot'' erreicht man den Plot Editor. Je nachdem
welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich
die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und
@ -291,12 +291,14 @@ die Farbe und die verschiedenen Marker.
\subsection{Ver\"andern von Linieneigenschaften} \subsection{Ver\"andern von Linieneigenschaften}
Die Eigenschaften des Linienplots k\"onnen \"uber weitere Argumente Die Eigenschaften des Linienplots k\"onnen \"uber weitere Argumente
des \code{plot} Befehls ver\"andert werden. Folgender Aufruf erzeugt des \code{plot} Befehls ver\"andert werden. Folgender Aufruf (Listing
einen roten Linienplot mit gepunkteter Linie der St\"arke 1.5 und \ref{settinglineprops})erzeugt einen roten Linienplot mit gepunkteter
Sternmarkern an den Positionen der Datenpunkte. Zus\"atzlich wird noch Linie der St\"arke 1.5 und Sternmarkern an den Positionen der
die Eigenschaft \codeterm{displayname} gesetzt, um dem Linienplot Datenpunkte. Zus\"atzlich wird noch die Eigenschaft
einen Namen zu geben, der in einer Legende verwendet werden kann. \codeterm{displayname} gesetzt, um dem Linienplot einen Namen zu
\begin{lstlisting} geben, der in einer Legende verwendet werden kann.
\begin{lstlisting}[label=settinglineprops, caption={Setzen von Linieneigenschaften beim \code{plot} Aufruf}]
x = 0:0.1:2*pi; x = 0:0.1:2*pi;
y = sin(x); y = sin(x);
plot( x, y, 'color', 'r', 'linestyle', ':', 'marker', '*', 'linewidth', 1.5, 'displayname', 'plot 1') plot( x, y, 'color', 'r', 'linestyle', ':', 'marker', '*', 'linewidth', 1.5, 'displayname', 'plot 1')
@ -404,7 +406,7 @@ saveas(gcf, 'spike_detection.pdf', 'pdf')
\begin{figure} \begin{figure}
\includegraphics[width=0.5\columnwidth]{spike_detection} \includegraphics[width=0.5\columnwidth]{spike_detection}
\caption{\textbf{Annehmbarer Plot.} Dieser Plot wurde vollst\"andig \titlecaption{Automatisch erstellter Plot.}{Dieser Plot wurde vollst\"andig
mit dem Skript in Listing \ref{niceplotlisting} erstellt und mit dem Skript in Listing \ref{niceplotlisting} erstellt und
gespeichert.}\label{spikedetectionfig} gespeichert.}\label{spikedetectionfig}
\end{figure} \end{figure}

View File

@ -38,9 +38,9 @@ befassen.
\subsection{Erzeugen von Variablen} \subsection{Erzeugen von Variablen}
In \matlab{} kann eine Variable auf der Kommandozeile, in einem Skript In \matlab{} kann eine Variable auf der Kommandozeile, in einem Skript
oder einer Funktion an beliebiger Stelle erzeugen. Das folgende oder einer Funktion an beliebiger Stelle erzeugt werden. Listing
Listing zeigt zwei M\"oglichkeiten: \ref{VarListing1} zeigt zwei M\"oglichkeiten dies zu tun:
\begin{lstlisting}[label=varListing1, caption=Erzeugen von Variablen] \begin{lstlisting}[label=varListing1, caption=Erzeugen von Variablen.]
>> y = [] >> y = []
y = y =
[] []
@ -51,11 +51,11 @@ Listing zeigt zwei M\"oglichkeiten:
\end{lstlisting} \end{lstlisting}
Die Zeile 1 kann etwa so gelesen werden:''Erzeuge eine Variable mit Die Zeile 1 kann etwa so gelesen werden:''Erzeuge eine Variable mit
dem Namen y und weise ihr einen leeren Wert zu.'' Das dem Namen y und weise ihr einen leeren Wert zu''. Das
Gleichheitszeichen ist der sogenannte Gleichheitszeichen ist der sogenannte
\codeterm{Zuweisungsoperator}. Zeile 5 definiert eine Variable x, der \codeterm{Zuweisungsoperator}. Zeile 5 definiert eine Variable x, der
nun der Zahlenwert 38 zugewiesen wird. Da \matlab{}, wenn nicht anders nun der Zahlenwert 38 zugewiesen wird. Da \matlab{}, wenn nicht anders
angegeben immer den ``double'' Datentypen benutzt, haben beide angegeben, immer den ``double'' Datentypen benutzt, haben beide
Variablen diesen Datentyp. Variablen diesen Datentyp.
\begin{lstlisting}[label=varListing2, caption={Erfragen des Datentyps einer Variable, Listen aller definierten Variablen.}] \begin{lstlisting}[label=varListing2, caption={Erfragen des Datentyps einer Variable, Listen aller definierten Variablen.}]
@ -65,18 +65,19 @@ Variablen diesen Datentyp.
>> who % oder whos um mehr Information zu bekommen >> who % oder whos um mehr Information zu bekommen
\end{lstlisting} \end{lstlisting}
Bei der Namensgebung ist zu beachten, dass \matlab{} auf Gro{\ss}- und \begin{important}
Kleinschreibung achtet und ein Variablennane mit einem alphabethischen Bei der Namensgebung ist zu beachten, dass \matlab{} auf Gro{\ss}-
Zeichen beginnen muss. Des Weiteren sind Umlaute, Sonder- und und Kleinschreibung achtet und ein Variablennane mit einem
Leerzeichen in Variablennamen nicht erlaubt. alphabetischen Zeichen beginnen muss. Des Weiteren sind Umlaute,
Sonder- und Leerzeichen in Variablennamen nicht erlaubt.
\end{important}
\subsection{Arbeiten mit Variablen} \subsection{Arbeiten mit Variablen}
Nat\"urlich kann mit den Variablen auch gearbeitet, bzw gerechnet Nat\"urlich kann mit den Variablen auch gearbeitet, bzw. gerechnet
werden. \matlab{} kennt alle normalen arithmetischen Operatoren wie werden. \matlab{} kennt alle normalen arithmetischen Operatoren wie
\code{+}, \code{-}, \code{*} und \code{/}. Die Potenz wird \"uber das \code{+}, \code{-}, \code{*} und \code{/}. Die Potenz wird \"uber das
Dachsymbol \code{\^} dargestellt. Das folgende Listing zeigt, wie sie Dachsymbol \code{\^} dargestellt. Listing \ref{varListing3} zeigt, wie sie
benutzt werden. benutzt werden.
\begin{lstlisting}[label=varListing3, caption={Rechnen mit Variablen.}] \begin{lstlisting}[label=varListing3, caption={Rechnen mit Variablen.}]
@ -107,20 +108,20 @@ benutzt werden.
>> clear z >> clear z
\end{lstlisting} \end{lstlisting}
Beachtenswert ist z.B. in Zeilen 3 und 6, dass wir mit dem Inhalt Beachtenswert ist z.B. in Zeilen 3 und 6, dass mit dem Inhalt einer
einer Variablen rechnen k\"onnen, ohne dass dadurch ihr Wert Variablen gerechnet werden kann, ohne dass dadurch ihr Wert
ver\"andert wird. Wenn der Wert einer Variablen ver\"andert werden ver\"andert wird. Wenn der Wert einer Variablen ver\"andert werden
soll, dann muss dieser der Variable explizit zugewiesen werden (mit soll, dann muss der Variable der neue Wert explizit zugewiesen werden
dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25 zeigt (mit dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25
wie eine einzelne Variable gel\"oscht wird. zeigt wie eine einzelne Variable gel\"oscht wird.
\subsection{Datentypen} \subsection{Datentypen}
Der Datentyp bestimmt, wie die im Speicher abgelegten Bitmuster Der Datentyp bestimmt, wie die im Speicher abgelegten Bitmuster
interpretiert werden. Die wichtigsten Datentpyen sind folgende: interpretiert werden. Die wichtigsten Datentpyen sind:
\begin{itemize} \begin{itemize}
\item \codetterm{integer} - Ganze Zahlen. Hier gibt es mehrere \item \codeterm{integer} - Ganze Zahlen. Hier gibt es mehrere
Unterarten, die wir in \matlab{} (meist) ignorieren k\"onnen. Unterarten, die wir in \matlab{} (meist) ignorieren k\"onnen.
\item \codeterm{double} - Flie{\ss}kommazahlen. Im Gegensatz zu den reelen Zahlen, die durch diesen Datentyp dargestellt werden, sind sie abz\"ahlbar. \item \codeterm{double} - Flie{\ss}kommazahlen. Im Gegensatz zu den reelen Zahlen, die durch diesen Datentyp dargestellt werden, sind sie abz\"ahlbar.
\item \codeterm{complex} - Komplexe Zahlen. \item \codeterm{complex} - Komplexe Zahlen.
@ -133,7 +134,7 @@ unterschiedlichem Speicherbedarf und Wertebreich.
\begin{table}[!h] \begin{table}[!h]
\centering \centering
\titlecaption{Grundlegende Datentypen und ihr Wertebereich.}{} \titlecaption{Grundlegende numerische Datentypen und ihr Wertebereich.}{}
\label{dtypestab} \label{dtypestab}
\begin{tabular}{llcl}\hline \begin{tabular}{llcl}\hline
Datentyp & Speicherbedarf & Wertebereich & Beispiel \rule{0pt}{2.5ex} \\ \hline Datentyp & Speicherbedarf & Wertebereich & Beispiel \rule{0pt}{2.5ex} \\ \hline
@ -178,40 +179,39 @@ den Datentypen auseinanderzusetzen (Box \ref{daqbox}).
Daten als ``echte'' Spannungen, also als Flie{\ss}kommawerte, Daten als ``echte'' Spannungen, also als Flie{\ss}kommawerte,
abzulegen ben\"otigt den 4-fachen Speicherplatz (8 statt 2 Bytes) abzulegen ben\"otigt den 4-fachen Speicherplatz (8 statt 2 Bytes)
und bietet keine zus\"atzliche Information. und bietet keine zus\"atzliche Information.
\end{ibox} \end{ibox}
\section{Vektoren und Matrizen} \section{Vektoren und Matrizen}
Vektoren und Matrizen sind die wichtigsten Datenstrukturen in Vektoren und Matrizen sind die wichtigsten Datenstrukturen in
\matlab{}. In anderen Programmiersprachen heissen sie ein- \matlab{}. In anderen Programmiersprachen hei{\ss}en sie ein-
bzw. mehrdimensionalen Felder. Felder sind Datenstrukturen, die bzw. mehrdimensionalen Felder. Felder sind Datenstrukturen, die
mehrere Werte des geleichen Datentyps in einer Variablen vereinen. Da mehrere Werte des gleichen Datentyps in einer Variablen vereinen. Da
\matlab{} seinen Ursprung in der Verarbeitung von mathematischen \matlab{} seinen Ursprung in der Verarbeitung von mathematischen
Vektoren und Matrizen hat, werden sie hier auch so genannt. \matlab{} Vektoren und Matrizen hat, werden sie hier auch so genannt. Dabei
macht keinen Unterschied zwischen Vektoren und Matrizen. Vektoren macht \matlab{} intern keinen Unterschied zwischen Vektoren und
sind 2--dimensionale Matrizen bei denen eine Dimension die Gr\"o{\ss}e Matrizen. Vektoren sind 2--dimensionale Matrizen, bei denen eine
1 hat. Dimension die Gr\"o{\ss}e 1 hat.
\subsection{Vektoren} \subsection{Vektoren}
Im Gegensatz zu Variablen, die einzelene Werte beinhalten Im Gegensatz zu Variablen, die einzelene Werte beinhalten
(Skalare), kann ein Vektor mehrere Werte des gleichen Datentyps (Skalare), kann ein Vektor mehrere Werte des gleichen Datentyps
beinhalten (Abbildung \ref{vectorfig} B). Die Variable ``test'' beinhalten (Abbildung \ref{vectorfig} B). Die Variable \code{a}
enth\"alt in diesem Beispiel vier ganzzahlige Werte. enth\"alt im Beispiel in Abbildung \ref{vectorfig} vier ganzzahlige Werte.
\begin{figure} \begin{figure}
\includegraphics[width=0.8\columnwidth]{scalarArray} \includegraphics[width=0.8\columnwidth]{scalarArray}
\titlecaption{Skalare und Vektoren.}{\textbf{A)} Eine skalare Variable kann \titlecaption{Skalare und Vektoren.}{\textbf{A)} Eine skalare Variable kann
genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer
Werte des gleichen Datentyps (z.B. ganzzahlige Integer Werte) Werte des gleichen Datentyps (z.B. ganzzahlige Integer Werte)
beinhalten. \matlab{} kennt den Zeilen- (row-) und Spaltenvektor beinhalten. \matlab{} kennt den Zeilen- (row-) und Spaltenvektoren
(columnvector).}\label{vectorfig} (columnvector).}\label{vectorfig}
\end{figure} \end{figure}
Das folgende Listing zeigt, wie einfache Vektoren erstellt werden Das folgende Listing \ref{arrayListing1} zeigt, wie einfache Vektoren erstellt werden
k\"onnen. k\"onnen.
\begin{lstlisting}[label=arrayListing1, caption={Erstellen einfacher Zeilenvektoren.}] \begin{lstlisting}[label=arrayListing1, caption={Erstellen einfacher Zeilenvektoren.}]
@ -228,9 +228,10 @@ k\"onnen.
0 2 4 6 8 10 0 2 4 6 8 10
\end{lstlisting} \end{lstlisting}
Die L\"ange eines Vektors, d.h. die Anzahl der Elemente des Vektors, Die L\"ange eines Vektors, d.h. die Anzahl der Elemente des Vektors,
kann mithilfe der Funktion \code{length()} bestimmt werden. \"Ahnliche kann mithilfe der Funktionen \code{length()} und \code{numel} bestimmt
Information kann \"uber die Funktion \code{size()} erhalten werden. Im werden. \"Ahnliche Information kann \"uber die Funktion \code{size()}
Falle des Vektors \code{a} von oben erh\"alt man folgende Ausgabe: erhalten werden (Listing \ref{arrayListing2}). Im Falle des Vektors
\code{a} von oben erh\"alt man folgende Ausgabe:
\begin{lstlisting}[label=arrayListing2, caption={Gr\"o{\ss}e von Vektoren.}] \begin{lstlisting}[label=arrayListing2, caption={Gr\"o{\ss}e von Vektoren.}]
>> length(a) >> length(a)
@ -243,7 +244,9 @@ Falle des Vektors \code{a} von oben erh\"alt man folgende Ausgabe:
Diese Ausgabe zeigt, dass Vektoren im Grunde 2-dimensional sind. Bei Diese Ausgabe zeigt, dass Vektoren im Grunde 2-dimensional sind. Bei
einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e
1. \code{length(a)} gibt die l\"angste Ausdehnung an. 1. \code{length(a)} gibt die l\"angste Ausdehnung an. Der \code{'}-
Operator transponiert den Spaltenvektor zu einem Zeilenvektor (Zeilen 14 ff.).
\begin{lstlisting}[label=arrayListing3, caption={Spaltenvektoren.}] \begin{lstlisting}[label=arrayListing3, caption={Spaltenvektoren.}]
>> b = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10] % Erstellen eines Spaltenvektors >> b = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10] % Erstellen eines Spaltenvektors
@ -265,8 +268,6 @@ einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e
1 10 1 10
\end{lstlisting} \end{lstlisting}
Der \code{'}- Operator transponiert den Spaltenvektor zu einem
Zeilenvektor.
\subsubsection{Zugriff auf Inhalte von Vektoren} \subsubsection{Zugriff auf Inhalte von Vektoren}
\begin{figure} \begin{figure}
@ -282,8 +283,9 @@ einen fortlaufenden \codeterm{Index}, \"uber den auf die Werte des
Vektors zugegriffen werden kann. Dabei spielt es keine Rolle, ob es Vektors zugegriffen werden kann. Dabei spielt es keine Rolle, ob es
sich um einen Zeilen- oder Spaltenvektor handelt. sich um einen Zeilen- oder Spaltenvektor handelt.
\begin{important} \begin{important}
Anders als viele andere Sprachen beginnt \matlab{} mit dem Index Anders als viele andere Sprachen beginnt \matlab{} mit dem Index
1. 1. Der Zugriff auf Inhalte eines Vektors mittels seines Indexes wird
Indizieren genannnt.
\end{important} \end{important}
Die Listings \ref{arrayListing4} und \ref{arrayListing5} zeigen wie Die Listings \ref{arrayListing4} und \ref{arrayListing5} zeigen wie
mit Indexen auf die Inhalte eines Vektors zugegriffen werden kann. mit Indexen auf die Inhalte eines Vektors zugegriffen werden kann.
@ -312,9 +314,12 @@ Element gleichzeitig zuzugreifen.
>> a(2:4) % alle Elemente von Index 2 bis einschliesslich 4 >> a(2:4) % alle Elemente von Index 2 bis einschliesslich 4
ans = ans =
12 13 14 12 13 14
>> a(1:2:end) %jedes zweite Element >> a(1:2:end) % jedes zweite Element
ans = ans =
11 13 15 17 19 11 13 15 17 19
>> a(:) % alle Elemente
ans =
11 12 13 14 15 16 17 18 19 20
\end{lstlisting} \end{lstlisting}
\begin{exercise}{vectorsize.m}{vectorsize.out} \begin{exercise}{vectorsize.m}{vectorsize.out}
@ -338,7 +343,7 @@ Mit Vektoren kann sehr einfach gerechnet werden. Listing
ans = ans =
-5 -3 -1 1 3 -5 -3 -1 1 3
>> a .* 2 % Multiplication >> a .* 2 % Multiplikation
ans = ans =
0 4 8 12 16 0 4 8 12 16
@ -363,12 +368,12 @@ Verarbeitung handeln soll. F\"ur diese elementweisen Operationen kennt
\matlab{} die Operatoren \code{.*}, \code{./} und \code{.\^}. Die \matlab{} die Operatoren \code{.*}, \code{./} und \code{.\^}. Die
einfachen Operatoren \code{*}, \code{/} und \code{\^} sind mit den einfachen Operatoren \code{*}, \code{/} und \code{\^} sind mit den
entsprechenden Matrixoperationen aus der linearen Algebrar belegt entsprechenden Matrixoperationen aus der linearen Algebrar belegt
(s.u.). (Box \ref{matrixmultiplication}).
Zu Beachten ist des Weiteren noch die Fehlermeldung am Schluss von Zu Beachten ist des Weiteren noch die Fehlermeldung am Schluss von
Listing \ref{arrayListing6}. Wenn zwei Vektoren (elementweise) Listing \ref{arrayListing6}. Wenn zwei Vektoren (elementweise)
miteinander verrechnet werden sollen, muss nicht nur die Anzahl der Elemente miteinander verrechnet werden sollen, muss nicht nur die Anzahl der Elemente
übereinstimmen, sondern es muss auch das Layout (Zeilen- oder \"ubereinstimmen, sondern es muss auch das Layout (Zeilen- oder
Spaltenvektoren) \"ubereinstimmen. Spaltenvektoren) \"ubereinstimmen.
@ -396,9 +401,8 @@ Neben dem L\"oschen von Vektorinhalten k\"onnen Vektoren auch
erweitert oder zusammengesetzt werden. Auch hier muss das Layout der Vektoren erweitert oder zusammengesetzt werden. Auch hier muss das Layout der Vektoren
\"ubereinstimmen (Listing \ref{arrayListing8}, Zeile 12). Will man \"ubereinstimmen (Listing \ref{arrayListing8}, Zeile 12). Will man
einen Vektor erweitern, kann man \"uber das Ende hinaus einen Vektor erweitern, kann man \"uber das Ende hinaus
zuweisen. \matlab{} erweitert dann die Variable. Auch hierbei muss auf zuweisen. \matlab{} erweitert dann die Variable. Dieser Vorgang ist
das Layout geachtet werden. Zudem ist dieser Vorgang ``rechenintensiv'' und sollte, soweit m\"oglich, vermieden werden.
``rechenintensiv'' und sollte soweit m\"oglich vermieden werden.
\begin{lstlisting}[caption={Zusammenf\"ugen und Erweitern von Vektoren.}, label=arrayListing8] \begin{lstlisting}[caption={Zusammenf\"ugen und Erweitern von Vektoren.}, label=arrayListing8]
>> a = (0:2:8); >> a = (0:2:8);
@ -417,6 +421,7 @@ das Layout geachtet werden. Zudem ist dieser Vorgang
Dimensions of matrices being concatenated are not consistent. Dimensions of matrices being concatenated are not consistent.
>> b(6:8) = [1 2 3 4]; >> b(6:8) = [1 2 3 4];
In an assignment A(:) = B, the number of elements in A and B must be the same.
\end{lstlisting} \end{lstlisting}
@ -490,10 +495,10 @@ Der Zugriff auf Inhalte von Matrizen erfolgt \"uber den Index
Koordinatensystem wird jede Zelle einer Matrize mit einem Index Koordinatensystem wird jede Zelle einer Matrize mit einem Index
angesprochen, der aus $n$ Zahlen besteht wobei $n$ die angesprochen, der aus $n$ Zahlen besteht wobei $n$ die
Dimensionalit\"at der Matrize ist. Diese Art des Zugriffs wird Dimensionalit\"at der Matrize ist. Diese Art des Zugriffs wird
\codeterm{subsript indexing} genannt. \codeterm{subscript indexing} genannt.
\begin{lstlisting}[caption={Zugriff auf Inhalte von Matrizen, \begin{lstlisting}[caption={Zugriff auf Inhalte von Matrizen,
Indexierung.}, label=matrixIndexing] Indizierung.}, label=matrixIndexing]
>> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen >> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen
>> size(x) >> size(x)
ans = ans =
@ -522,18 +527,18 @@ so intuitiv verst\"andlich, kann aber sehr hilfreich sein. Der
``linare'' Index einer Zelle reicht von 1 bis \code{numel(M)} ``linare'' Index einer Zelle reicht von 1 bis \code{numel(M)}
Elemente. Wobei dieser erst entlang der 1. Dimension, dann der 2., Elemente. Wobei dieser erst entlang der 1. Dimension, dann der 2.,
3. etc. Dimension ansteigt. Listing \ref{matrixLinearIndexing} zeigt 3. etc. Dimension ansteigt. Listing \ref{matrixLinearIndexing} zeigt
ein Beispiel f\"ur den Einsatz des linearen Indexierens z.B. wenn man ein Beispiel f\"ur den Einsatz des linearen Indizierens z.B. wenn man
den Minimalwert aller Elemente einer Matrize ermitteln m\"ochte. den Minimalwert aller Elemente einer Matrize ermitteln m\"ochte.
\begin{figure} \begin{figure}
\includegraphics[width=0.9\columnwidth]{matrixLinearIndexing} \includegraphics[width=0.9\columnwidth]{matrixLinearIndexing}
\titlecaption{Lineares Indexieren von Matrizen.}{Der Index steigt \titlecaption{Lineares Indizieren von Matrizen.}{Der Index steigt
linear von 1 bis zur Anzahl Elemente in der Matrize an. Dabei linear von 1 bis zur Anzahl Elemente in der Matrize an. Dabei
steigt der Index zuerst entlang der ersten, zweiten, dritten und steigt der Index zuerst entlang der ersten, zweiten, dritten und
weiterer Dimensionen an.}\label{matrixlinearindexingfig} weiterer Dimensionen an.}\label{matrixlinearindexingfig}
\end{figure} \end{figure}
\begin{lstlisting}[label=matrixLinearIndexing, caption={Lineares Indexieren in Matrizen.}] \begin{lstlisting}[label=matrixLinearIndexing, caption={Lineares Indizieren in Matrizen.}]
>> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen >> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen
>> size(x) >> size(x)
ans = ans =
@ -552,14 +557,14 @@ den Minimalwert aller Elemente einer Matrize ermitteln m\"ochte.
Beim Rechnen mit Matrizen gelten die gleichen Regeln wie bei Beim Rechnen mit Matrizen gelten die gleichen Regeln wie bei
Vektoren. Matrizen k\"onnen solange elementweise miteinander Vektoren. Matrizen k\"onnen solange elementweise miteinander
Verrechnet werden, wie die Dimensionalit\"aten verrechnet werden, wie die Dimensionalit\"aten
\"ubereinstimmen. Besondere Vorsicht sollte man immer dann walten \"ubereinstimmen. Besondere Vorsicht sollte man immer dann walten
lassen, wenn man Matrizen miteinander mulitplizieren, dividieren oder lassen, wenn man Matrizen miteinander multiplizieren, dividieren oder
potenzieren will. Hier ist es wichtig sich klarzumachen was man will: potenzieren will. Hier ist es wichtig sich klarzumachen was man will:
Eine elementweise Multiplikation (\code{.*} Operator, Listing Eine elementweise Multiplikation (\code{.*} Operator, Listing
\ref{matrixOperations} Zeile 18) oder ob eine Matrixmultiplikation \ref{matrixOperations} Zeile 18) oder ob eine Matrixmultiplikation
(\code{*} Operator, Listing \ref{matrixOperations} Zeile 12) (\code{*} Operator, Listing \ref{matrixOperations} Zeile 12, Box
durchgef\"uhrt werden soll. \ref{matrixmultiplication}) durchgef\"uhrt werden soll.
\begin{lstlisting}[label=matrixOperations, caption={Zwei Arten von Multiplikationen auf Matrizen.}] \begin{lstlisting}[label=matrixOperations, caption={Zwei Arten von Multiplikationen auf Matrizen.}]
>> A = randi(10, [3, 3]) % 2-D Matrix >> A = randi(10, [3, 3]) % 2-D Matrix
@ -583,10 +588,13 @@ durchgef\"uhrt werden soll.
ans = ans =
6 8 14 6 8 14
2 50 27 2 50 27
50 70 5 50 70 5
>>
\end{lstlisting} \end{lstlisting}
\begin{ibox}[t]{\label{matrixmultilication} Matrixmultiplikation.}
\end{ibox}
\section{Boolesche Operationen} \section{Boolesche Operationen}
Boolesche Ausdr\"ucke sind Anweisungen, die zu \codeterm{wahr} oder Boolesche Ausdr\"ucke sind Anweisungen, die zu \codeterm{wahr} oder

View File

@ -11,7 +11,7 @@ ein Optimierungsproblem, der als Kurvenfit bekannt ist
\begin{figure}[t] \begin{figure}[t]
\includegraphics[width=1\textwidth]{lin_regress}\hfill \includegraphics[width=1\textwidth]{lin_regress}\hfill
\titlecaption{.}{F\"ur eine Reihe von Eingangswerten $x$, \titlecaption{Parameter der linearen Geradengleichung.}{F\"ur eine Reihe von Eingangswerten $x$,
z.B. Stimulusintensit\"aten, wurden die Antworten $y$ eines z.B. Stimulusintensit\"aten, wurden die Antworten $y$ eines
Systems gemessen (links). Der postulierte lineare Zusammenhang hat Systems gemessen (links). Der postulierte lineare Zusammenhang hat
als freie Parameter die Steigung (mitte) und den als freie Parameter die Steigung (mitte) und den
@ -169,7 +169,7 @@ beiden Parameter und auf der $z$-Achse der Fehlerwert aufgetragen
\begin{figure}[t] \begin{figure}[t]
\includegraphics[width=0.75\columnwidth]{error_surface.pdf} \includegraphics[width=0.75\columnwidth]{error_surface.pdf}
\caption{\textbf{Fehlerfl\"ache.} Die beiden freien Parameter \titlecaption{Fehlerfl\"ache.}{Die beiden freien Parameter
unseres Modells $m$ und $b$ spannen die Grundfl\"ache des Plots unseres Modells $m$ und $b$ spannen die Grundfl\"ache des Plots
auf. F\"ur jede Kombination von Steigung $m$ und auf. F\"ur jede Kombination von Steigung $m$ und
$y$-Achsenabschnitt $b$ wird die errechnete Vorhersage des Modells $y$-Achsenabschnitt $b$ wird die errechnete Vorhersage des Modells
@ -358,7 +358,7 @@ Punkte in Abbildung \ref{gradientdescentfig} gro{\ss}.
\begin{figure}[t] \begin{figure}[t]
\includegraphics[width=0.6\columnwidth]{gradient_descent} \includegraphics[width=0.6\columnwidth]{gradient_descent}
\caption{\textbf{Gradientenabstieg.} Es wird von einer beliebigen \titlecaption{Gradientenabstieg.} {Es wird von einer beliebigen
Position aus gestartet und der Gradient berechnet und die Position Position aus gestartet und der Gradient berechnet und die Position
ver\"andert. Jeder Punkt zeigt die Position nach jedem ver\"andert. Jeder Punkt zeigt die Position nach jedem
Optimierungsschritt an.} \label{gradientdescentfig} Optimierungsschritt an.} \label{gradientdescentfig}