From 7e69b31e26e0c06f15a47d73abe97c7d9d4fa75d Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Sat, 14 Nov 2015 16:09:46 +0100 Subject: [PATCH] caption fixes and few tiny other changes --- plotting/lecture/plotting.tex | 18 ++-- programming/lecture/programming.tex | 122 +++++++++++++++------------- regression/lecture/regression.tex | 6 +- 3 files changed, 78 insertions(+), 68 deletions(-) diff --git a/plotting/lecture/plotting.tex b/plotting/lecture/plotting.tex index d4bd207..daf1d23 100644 --- a/plotting/lecture/plotting.tex +++ b/plotting/lecture/plotting.tex @@ -177,7 +177,7 @@ Einstellungsm\"oglichkeiten. Wie schon erw\"ahnt, k\"onnen diese \begin{minipage}[t]{0.3\columnwidth} \includegraphics[width=0.9\textwidth]{property_editor} \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 welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und @@ -291,12 +291,14 @@ die Farbe und die verschiedenen Marker. \subsection{Ver\"andern von Linieneigenschaften} Die Eigenschaften des Linienplots k\"onnen \"uber weitere Argumente -des \code{plot} Befehls ver\"andert werden. Folgender Aufruf erzeugt -einen roten Linienplot mit gepunkteter Linie der St\"arke 1.5 und -Sternmarkern an den Positionen der Datenpunkte. Zus\"atzlich wird noch -die Eigenschaft \codeterm{displayname} gesetzt, um dem Linienplot -einen Namen zu geben, der in einer Legende verwendet werden kann. -\begin{lstlisting} +des \code{plot} Befehls ver\"andert werden. Folgender Aufruf (Listing +\ref{settinglineprops})erzeugt einen roten Linienplot mit gepunkteter +Linie der St\"arke 1.5 und Sternmarkern an den Positionen der +Datenpunkte. Zus\"atzlich wird noch die Eigenschaft +\codeterm{displayname} gesetzt, um dem Linienplot einen Namen zu +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; y = sin(x); 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} \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 gespeichert.}\label{spikedetectionfig} \end{figure} diff --git a/programming/lecture/programming.tex b/programming/lecture/programming.tex index 2aa6219..aa5ef45 100644 --- a/programming/lecture/programming.tex +++ b/programming/lecture/programming.tex @@ -38,9 +38,9 @@ befassen. \subsection{Erzeugen von Variablen} In \matlab{} kann eine Variable auf der Kommandozeile, in einem Skript -oder einer Funktion an beliebiger Stelle erzeugen. Das folgende -Listing zeigt zwei M\"oglichkeiten: -\begin{lstlisting}[label=varListing1, caption=Erzeugen von Variablen] +oder einer Funktion an beliebiger Stelle erzeugt werden. Listing +\ref{VarListing1} zeigt zwei M\"oglichkeiten dies zu tun: +\begin{lstlisting}[label=varListing1, caption=Erzeugen von Variablen.] >> y = [] y = [] @@ -51,11 +51,11 @@ Listing zeigt zwei M\"oglichkeiten: \end{lstlisting} 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 \codeterm{Zuweisungsoperator}. Zeile 5 definiert eine Variable x, der 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. \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 \end{lstlisting} -Bei der Namensgebung ist zu beachten, dass \matlab{} auf Gro{\ss}- und -Kleinschreibung achtet und ein Variablennane mit einem alphabethischen -Zeichen beginnen muss. Des Weiteren sind Umlaute, Sonder- und -Leerzeichen in Variablennamen nicht erlaubt. - +\begin{important} + Bei der Namensgebung ist zu beachten, dass \matlab{} auf Gro{\ss}- + und Kleinschreibung achtet und ein Variablennane mit einem + alphabetischen Zeichen beginnen muss. Des Weiteren sind Umlaute, + Sonder- und Leerzeichen in Variablennamen nicht erlaubt. +\end{important} \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 \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. \begin{lstlisting}[label=varListing3, caption={Rechnen mit Variablen.}] @@ -107,20 +108,20 @@ benutzt werden. >> clear z \end{lstlisting} -Beachtenswert ist z.B. in Zeilen 3 und 6, dass wir mit dem Inhalt -einer Variablen rechnen k\"onnen, ohne dass dadurch ihr Wert +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 dieser der Variable explizit zugewiesen werden (mit -dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25 zeigt -wie eine einzelne Variable gel\"oscht wird. +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. \subsection{Datentypen} Der Datentyp bestimmt, wie die im Speicher abgelegten Bitmuster -interpretiert werden. Die wichtigsten Datentpyen sind folgende: +interpretiert werden. Die wichtigsten Datentpyen sind: \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. \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. @@ -133,7 +134,7 @@ unterschiedlichem Speicherbedarf und Wertebreich. \begin{table}[!h] \centering - \titlecaption{Grundlegende Datentypen und ihr Wertebereich.}{} + \titlecaption{Grundlegende numerische Datentypen und ihr Wertebereich.}{} \label{dtypestab} \begin{tabular}{llcl}\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, abzulegen ben\"otigt den 4-fachen Speicherplatz (8 statt 2 Bytes) und bietet keine zus\"atzliche Information. - \end{ibox} \section{Vektoren und Matrizen} 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 -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 -Vektoren und Matrizen hat, werden sie hier auch so genannt. \matlab{} -macht keinen Unterschied zwischen Vektoren und Matrizen. Vektoren -sind 2--dimensionale Matrizen bei denen eine Dimension die Gr\"o{\ss}e -1 hat. +Vektoren und Matrizen hat, werden sie hier auch so genannt. Dabei +macht \matlab{} intern keinen Unterschied zwischen Vektoren und +Matrizen. Vektoren sind 2--dimensionale Matrizen, bei denen eine +Dimension die Gr\"o{\ss}e 1 hat. \subsection{Vektoren} Im Gegensatz zu Variablen, die einzelene Werte beinhalten (Skalare), kann ein Vektor mehrere Werte des gleichen Datentyps -beinhalten (Abbildung \ref{vectorfig} B). Die Variable ``test'' -enth\"alt in diesem Beispiel vier ganzzahlige Werte. +beinhalten (Abbildung \ref{vectorfig} B). Die Variable \code{a} +enth\"alt im Beispiel in Abbildung \ref{vectorfig} vier ganzzahlige Werte. \begin{figure} \includegraphics[width=0.8\columnwidth]{scalarArray} \titlecaption{Skalare und Vektoren.}{\textbf{A)} Eine skalare Variable kann genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer 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} \end{figure} -Das folgende Listing zeigt, wie einfache Vektoren erstellt werden +Das folgende Listing \ref{arrayListing1} zeigt, wie einfache Vektoren erstellt werden k\"onnen. \begin{lstlisting}[label=arrayListing1, caption={Erstellen einfacher Zeilenvektoren.}] @@ -228,9 +228,10 @@ k\"onnen. 0 2 4 6 8 10 \end{lstlisting} Die L\"ange eines Vektors, d.h. die Anzahl der Elemente des Vektors, -kann mithilfe der Funktion \code{length()} bestimmt werden. \"Ahnliche -Information kann \"uber die Funktion \code{size()} erhalten werden. Im -Falle des Vektors \code{a} von oben erh\"alt man folgende Ausgabe: +kann mithilfe der Funktionen \code{length()} und \code{numel} bestimmt +werden. \"Ahnliche Information kann \"uber die Funktion \code{size()} +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.}] >> 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 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.}] >> 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 \end{lstlisting} -Der \code{'}- Operator transponiert den Spaltenvektor zu einem -Zeilenvektor. \subsubsection{Zugriff auf Inhalte von Vektoren} \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 sich um einen Zeilen- oder Spaltenvektor handelt. \begin{important} -Anders als viele andere Sprachen beginnt \matlab{} mit dem Index -1. + Anders als viele andere Sprachen beginnt \matlab{} mit dem Index + 1. Der Zugriff auf Inhalte eines Vektors mittels seines Indexes wird + Indizieren genannnt. \end{important} Die Listings \ref{arrayListing4} und \ref{arrayListing5} zeigen wie 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 ans = 12 13 14 - >> a(1:2:end) %jedes zweite Element + >> a(1:2:end) % jedes zweite Element ans = 11 13 15 17 19 + >> a(:) % alle Elemente + ans = + 11 12 13 14 15 16 17 18 19 20 \end{lstlisting} \begin{exercise}{vectorsize.m}{vectorsize.out} @@ -338,7 +343,7 @@ Mit Vektoren kann sehr einfach gerechnet werden. Listing ans = -5 -3 -1 1 3 - >> a .* 2 % Multiplication + >> a .* 2 % Multiplikation ans = 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 einfachen Operatoren \code{*}, \code{/} und \code{\^} sind mit den entsprechenden Matrixoperationen aus der linearen Algebrar belegt -(s.u.). +(Box \ref{matrixmultiplication}). Zu Beachten ist des Weiteren noch die Fehlermeldung am Schluss von Listing \ref{arrayListing6}. Wenn zwei Vektoren (elementweise) 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. @@ -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 \"ubereinstimmen (Listing \ref{arrayListing8}, Zeile 12). Will man einen Vektor erweitern, kann man \"uber das Ende hinaus -zuweisen. \matlab{} erweitert dann die Variable. Auch hierbei muss auf -das Layout geachtet werden. Zudem ist dieser Vorgang -``rechenintensiv'' und sollte soweit m\"oglich vermieden werden. +zuweisen. \matlab{} erweitert dann die Variable. Dieser Vorgang ist +``rechenintensiv'' und sollte, soweit m\"oglich, vermieden werden. \begin{lstlisting}[caption={Zusammenf\"ugen und Erweitern von Vektoren.}, label=arrayListing8] >> a = (0:2:8); @@ -417,6 +421,7 @@ das Layout geachtet werden. Zudem ist dieser Vorgang Dimensions of matrices being concatenated are not consistent. >> 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} @@ -490,10 +495,10 @@ Der Zugriff auf Inhalte von Matrizen erfolgt \"uber den Index Koordinatensystem wird jede Zelle einer Matrize mit einem Index angesprochen, der aus $n$ Zahlen besteht wobei $n$ die 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, - Indexierung.}, label=matrixIndexing] + Indizierung.}, label=matrixIndexing] >> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen >> size(x) 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)} Elemente. Wobei dieser erst entlang der 1. Dimension, dann der 2., 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. \begin{figure} \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 steigt der Index zuerst entlang der ersten, zweiten, dritten und weiterer Dimensionen an.}\label{matrixlinearindexingfig} \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 >> size(x) ans = @@ -552,14 +557,14 @@ den Minimalwert aller Elemente einer Matrize ermitteln m\"ochte. Beim Rechnen mit Matrizen gelten die gleichen Regeln wie bei 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 -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: Eine elementweise Multiplikation (\code{.*} Operator, Listing \ref{matrixOperations} Zeile 18) oder ob eine Matrixmultiplikation -(\code{*} Operator, Listing \ref{matrixOperations} Zeile 12) -durchgef\"uhrt werden soll. +(\code{*} 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 @@ -583,10 +588,13 @@ durchgef\"uhrt werden soll. ans = 6 8 14 2 50 27 - 50 70 5 - >> + 50 70 5 \end{lstlisting} +\begin{ibox}[t]{\label{matrixmultilication} Matrixmultiplikation.} + +\end{ibox} + \section{Boolesche Operationen} Boolesche Ausdr\"ucke sind Anweisungen, die zu \codeterm{wahr} oder diff --git a/regression/lecture/regression.tex b/regression/lecture/regression.tex index 061f979..733abed 100644 --- a/regression/lecture/regression.tex +++ b/regression/lecture/regression.tex @@ -11,7 +11,7 @@ ein Optimierungsproblem, der als Kurvenfit bekannt ist \begin{figure}[t] \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 Systems gemessen (links). Der postulierte lineare Zusammenhang hat 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] \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 auf. F\"ur jede Kombination von Steigung $m$ und $y$-Achsenabschnitt $b$ wird die errechnete Vorhersage des Modells @@ -358,7 +358,7 @@ Punkte in Abbildung \ref{gradientdescentfig} gro{\ss}. \begin{figure}[t] \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 ver\"andert. Jeder Punkt zeigt die Position nach jedem Optimierungsschritt an.} \label{gradientdescentfig}