Improved indices. Added optional parameter for index to *term* macros.

This commit is contained in:
Jan Benda 2015-11-22 23:16:22 +01:00
parent 3d4d778bdd
commit 993ab5d8e7
16 changed files with 138 additions and 134 deletions

View File

@ -20,7 +20,7 @@ index :
pdflatex -interaction=scrollmode $(BASENAME).tex | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex $(BASENAME).tex || true
clean :
rm -f *~ $(BASENAME).aux $(BASENAME).log $(BASENAME).out $(BASENAME).toc $(BASENAME).lo? $(BASENAME).idx $(BASENAME)-term.i* $(BASENAME)-code.i*
rm -f *~ $(BASENAME).aux $(BASENAME).log $(BASENAME).out $(BASENAME).toc $(BASENAME).lo? $(BASENAME).idx $(BASENAME)-term.i* $(BASENAME)-enterm.i* $(BASENAME)-code.i*
for sd in $(SUBDIRS); do $(MAKE) -C $$sd/lecture clean; done
cleanall : clean

View File

@ -186,7 +186,7 @@ Bestimme die Signifikanz eines Korrelationskoeffizienten.
\item Berechne den Korrelationskoeffizient dieser Datenpaare.
\item Generiere die Verteilung der Nullhypothese ``unkorrelierte
Daten'' indem die $x$- und $y$-Daten 1000-mal unabh\"angig
permutiert werden \matlabfun{randperm} und jeweils der
permutiert werden \matlabfun{randperm()} und jeweils der
Korrelationskoeffizient berechnet wird.
\item Bestimme aus den Nullhypothesendaten das 95\,\%-Perzentil und
vergleiche es mit dem tats\"achlichen Korrelationskoeffizienten.

View File

@ -86,7 +86,7 @@ sigma = 2.3;
y = randn(100, 1)*sigma + mu;
\end{lstlisting}
Das gleiche Prinzip ist manchmal auch sinnvoll f\"ur \code{zeros} oder \code{ones}:
Das gleiche Prinzip ist manchmal auch sinnvoll f\"ur \code{zeros()} oder \code{ones()}:
\begin{lstlisting}[caption={Skalierung von zeros und ones}]
x = -1:0.01:2; % Vektor mit x-Werten
plot(x, exp(-x.*x));
@ -141,7 +141,7 @@ Meistens sollten Histogramme normiert werden, damit sie vergleichbar
mit anderen Histogrammen oder mit theoretischen
Wahrscheinlichkeitsverteilungen werden.
Die \code{histogram} Funktion macht das mit den entsprechenden Parametern automatisch:
Die \code{histogram()} Funktion macht das mit den entsprechenden Parametern automatisch:
\begin{lstlisting}[caption={Probability-density-function mit der histogram-Funktion}]
x = randn(100, 1); % irgendwelche reellwertige Daten
histogram(x, 'Normalization', 'pdf');

View File

@ -27,7 +27,8 @@
\usepackage[makeindex]{splitidx}
\makeindex
\newindex[Fachbegriffe]{term}
\newindex[Code]{code}
\newindex[Englische Fachbegriffe]{enterm}
\newindex[MATLAB Code]{code}
%%%%% units %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
@ -189,9 +190,10 @@
\newcommand{\koZ}{\mathds{C}}
%%%%% english, german, code and file terms: %%%%%%%%%%%%%%%
\newcommand{\enterm}[1]{``#1''\protect\sindex[term]{#1}}
\newcommand{\determ}[1]{\textit{#1}\protect\sindex[term]{#1}}
\newcommand{\codeterm}[1]{\textit{#1}\protect\sindex[term]{#1}}
\usepackage{ifthen}
\newcommand{\enterm}[2][]{``#2''\ifthenelse{\equal{#1}{}}{\protect\sindex[enterm]{#2}}{\protect\sindex[term]{#1}}}
\newcommand{\determ}[2][]{\textit{#2}\ifthenelse{\equal{#1}{}}{\protect\sindex[term]{#2}}{\protect\sindex[term]{#1}}}
\newcommand{\codeterm}[2][]{\textit{#2}\ifthenelse{\equal{#1}{}}{\protect\sindex[term]{#2}}{\protect\sindex[term]{#1}}}
\newcommand{\file}[1]{\texttt{#1}}
%%%%% key-shortcuts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -203,9 +205,9 @@
%%%%% code/matlab commands: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{textcomp}
\newcommand{\varcode}[1]{\setlength{\fboxsep}{0.5ex}\colorbox{codeback}{\texttt{#1}}}
\newcommand{\code}[1]{\varcode{#1}\sindex[code]{#1}}
\newcommand{\code}[2][]{\varcode{#2}\ifthenelse{\equal{#1}{}}{\protect\sindex[code]{#2}}{\protect\sindex[code]{#1}}}
\newcommand{\matlab}{\texorpdfstring{MATLAB$^{\copyright}$}{MATLAB}}
\newcommand{\matlabfun}[1]{(\tr{\matlab{}-function}{\matlab-Funktion} \setlength{\fboxsep}{0.5ex}\colorbox{codeback}{\texttt{#1}})\sindex[code]{#1}}
\newcommand{\matlabfun}[2][]{(\tr{\matlab-function}{\matlab-Funktion} \setlength{\fboxsep}{0.5ex}\colorbox{codeback}{\texttt{#1}})\ifthenelse{\equal{#1}{}}{\protect\sindex[code]{#2}}{\protect\sindex[code]{#1}}}
%%%%% exercises environment: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% usage:
@ -224,7 +226,6 @@
% content of someoutput.out
%
% Innerhalb der exercise Umgebung ist enumerate umdefiniert, um (a), (b), (c), .. zu erzeugen.
\usepackage{ifthen}
\usepackage{mdframed}
\usepackage{xstring}
\newcommand{\codepath}{}

View File

@ -195,7 +195,7 @@ die Steigung $m$ und der y-Achsenabschnitt $b$ einer Geradengleichung
\[ y = m \cdot x +b \]
oder allgemeiner die Koeffizienten $a_k$ eines Polynoms
\[ y = \sum_{k=0}^N a_k x^k = a_o + a_1x + a_2x^2 + a_3x^4 + \ldots \]
\matlabfun{polyfit}.
\matlabfun{polyfit()}.
Parameter, die nichtlinear in einer Funktion enthalten sind, k\"onnen
im Gegensatz dazu nicht analytisch aus den Daten berechnet
@ -203,7 +203,7 @@ werden. z.B. die Rate $\lambda$ eines exponentiellen Zerfalls
\[ y = c \cdot e^{\lambda x} \quad , \quad c, \lambda \in \reZ \; . \]
F\"ur diesen Fall bleibt dann nur auf numerische Verfahren zur
Optimierung der Kostenfunktion, wie z.B. der Gradientenabstieg,
zur\"uckzugreifen \matlabfun{lsqcurvefit}.
zur\"uckzugreifen \matlabfun{lsqcurvefit()}.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -243,7 +243,7 @@ Maximum Likelihood! Wir suchen einfach die Parameter $\theta$ der
gesuchten Wahrscheinlichkeitsdichtefunktion bei der die Log-Likelihood
\eqnref{loglikelihood} maximal wird. Das ist im allgemeinen ein
nichtlinieares Optimierungsproblem, das mit numerischen Verfahren, wie
z.B. dem Gradientenabstieg, gel\"ost wird \matlabfun{mle}.
z.B. dem Gradientenabstieg, gel\"ost wird \matlabfun{mle()}.
\begin{exercise}{mlegammafit.m}{mlegammafit.out}
Erzeuge Gammaverteilte Zufallszahlen und benutze Maximum-Likelihood,

View File

@ -34,13 +34,13 @@ Zwecken genutzt wird.
Ein Datenplot muss ausreichend beschriftet werden:
\begin{itemize}
\item Alle Achsen m\"ussen eine Bezeichnung und eine Einheit erhalten\\
(z.B. \code{xlabel('Geschwindigkeit [m/s]'}).
(z.B. \code[xlabel()]{xlabel('Geschwindigkeit [m/s]'}).
\item Wenn mehrere Dinge in einem Plot dargestellt werden, m\"ussen
diese mit einer Legende oder \"ahnlichem benannt werden
\matlabfun{legend()}.
\item Mehrere Plots mit den gleichen Gr\"o{\ss}en auf den Achsen,
m\"ussen den gleichen Wertebereich auf den Achsen zeigen
(z.B. \code{xlim([0 100])}.\\
(z.B. \code[xlim()]{xlim([0 100])}.\\
Ausnahmen sind m\"oglich, sollten aber in der
Abbildungsunterschrift erw\"ahnt werden.
\item Die Beschriftung mu{\ss} gro{\ss} genug sein, um lesbar zu sein.
@ -142,7 +142,7 @@ darzustellen (\figref{misleadingsymbolsfig}).
\section{Das Plottingsystem von \matlab{}}
Plotten in \matlab{} ist zun\"achst einmal einfach. Durch den Aufruf
von \code{plot(x, y)} wird ein einfacher, schlichter Linienplot
von \code[plot()]{plot(x, y)} wird ein einfacher, schlichter Linienplot
erstellt. Diesem Plot fehlen jedoch jegliche Annotationen wie
Achsbeschriftungen, Legenden, etc. Es gibt zwei M\"oglichkeiten diese
hinzuzuf\"ugen: (i) das Graphische User Interface oder (ii) die
@ -212,9 +212,9 @@ Datens\"atzen erstellt werden soll.
\subsection{Einfaches Plotten}
Einen einfachen Linienplot zu erstellen ist denkbar
einfach. Angenommen, es existiert einer Variable \code{y} im
einfach. Angenommen, es existiert einer Variable \varcode{y} im
\enterm{Workspace}, die die darzustellenden Daten enth\"alt. Es
gen\"ugt folgender Funktionsaufruf: \code{plot(y)}. Wenn bislang noch
gen\"ugt folgender Funktionsaufruf: \code[plot()]{plot(y)}. Wenn bislang noch
keine Abbildung erstellt wurde, \"offnet \matlab{} ein neues Fenster
und stellt die Daten als Linienplot dar. Dabei werden die Datenpunkte
durch eine Linie verbunden. Die Messpunkte selbst sind nicht
@ -223,14 +223,14 @@ ersetzt. Das Festhalten von bestehenden Plots kann an- oder abgestellt
werden indem \code{hold on} bzw. \code{hold off} vor dem \code{plot()}
Befehl aufgerufen wird.
Im obigen Plot Aufruf wird nur ein Argument, das \code{y}, an die
Funktion \code{plot} \"ubergeben. \code{plot} erh\"alt nur die
Im obigen Plot Aufruf wird nur ein Argument, das \varcode{y}, an die
Funktion \code{plot()} \"ubergeben. \code{plot()} erh\"alt nur die
y-Werte. \matlab{} substituiert in diesem Fall die fehlenden x-Werte,
indem eine Schrittweite von 1 angenommen wird. Die x-Achse reicht also
von 1 bis zur L\"ange des Vektors \code{y}. Diese Skalierung der
von 1 bis zur L\"ange des Vektors \varcode{y}. Diese Skalierung der
x-Achse ist nur in den wenigsten F\"allen erw\"unscht. Besser ist es,
die zugeh\"origen x-Werte explixit zu \"ubergeben und so z.B. die
y-Werte als Funktion der Zeit darzustellen (\code{plot(x, y)}).
y-Werte als Funktion der Zeit darzustellen (\code[plot()]{plot(x, y)}).
Standard\"a{\ss}ig wird der erste Lininenplot in blau, mit
durchgezogener Linie, ohne Marker und der Strichst\"arke 1
dargestellt. Der zweite Linienplot erh\"alt automatisch die Farbe
@ -291,11 +291,11 @@ 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 (Listing
der \code{plot()} Funktion 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
\code{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 \varcode{plot} Aufruf}]
@ -307,46 +307,47 @@ geben, der in einer Legende verwendet werden kann.
\subsection{Ver\"andern von Achseneigenschaften}
Das erste, was ein Plot zus\"atzlich braucht, ist eine
Achsenbeschriftung. Mithilfe der Funktionen \code{xlabel('Time [ms]')}
und \code{ylabel('Voltage [V]')} k\"onnen diese gesetzt
Achsenbeschriftung. Mithilfe der Funktionen \code[xlabel()]{xlabel('Time [ms]')}
und \code[ylabel()]{ylabel('Voltage [V]')} k\"onnen diese gesetzt
werden.
Standardm\"a{\ss}ig setzt Matlab die Grenzen der x- und y-Achse so,
dass die Daten hineinpassen. Dabei wird meist auf den n\"achsten
ganzzahligen Wert aufgerundet. Mit den Funktionen \code{xlim} und
\code{ylim} k\"onnen die Grenezen der Achsen aber auch manuell
eingestellt werden. Die Funktionen \code{xlim} und \code{ylim}
ganzzahligen Wert aufgerundet. Mit den Funktionen \code{xlim()} und
\code{ylim()} k\"onnen die Grenezen der Achsen aber auch manuell
eingestellt werden. Die Funktionen \code{xlim()} und \code{ylim()}
erwarten als Argument einen 2-elementigen Vektor mit dem Minimum und
dem Maximum der jeweiligen Achse. Tabelle \ref{plotaxisprops} listet
weitere h\"aufig genutzte Einstellungen der Achsen. Mit der \code{set}
- Funktion k\"onnen diese ver\"andert werden wie in Zeile 15 in
Listing \ref{niceplotlisting} gezeigt. Die \code{set} - Funktion
erwartet als erstes Argument ein sogenanntes Handle der Achse, dieses
wird gefolgt von einer beliebig langen Reihe von Eigenschaft-Wert
Paaren. Soll z.B. das Gitternetz der x-Achse gezeigt werden, wird die
Eigenschaft \codeterm{XGrid} auf den Wert \codeterm{'on'} gesetzt:
\code{set(gca, 'XGrid', 'on');}. Das erste Argument ist ein Aufruf der
Funktion \code{gca}, ``get-current-axis'' und ist das Achsenhandle der
gerade aktiven Achse.
weitere h\"aufig genutzte Einstellungen der Achsen. Mit der
\code{set()} - Funktion k\"onnen diese ver\"andert werden wie in Zeile
15 in Listing \ref{niceplotlisting} gezeigt. Die \code{set()} -
Funktion erwartet als erstes Argument ein sogenanntes Handle der
Achse, dieses wird gefolgt von einer beliebig langen Reihe von
Eigenschaft-Wert Paaren. Soll z.B. das Gitternetz der x-Achse gezeigt
werden, wird die Eigenschaft \code{XGrid} auf den Wert
\varcode{'on'} gesetzt: \code[set()!set(gca, 'XGrid',
'on')]{set(gca, 'XGrid', 'on');}. Das erste Argument ist ein Aufruf
der Funktion \code{gca}, \enterm{get-current-axis} und ist das Achsenhandle
der gerade aktiven Achse.
\begin{table}[tp]
\titlecaption{Ausgew\"ahlte Eigenschaften der Achse.}{ Alle Eigenschaften der Achse findet man in der Hilfe oder im \codeterm{Property Editor} (\figref{ploteditorfig}). Wenn es eine definierte Auswahl von Einstellungen gibt, z.B. bei der Eigenschaft \codeterm{Box}, dann ist die Standardeinstellungen als erstes gelistet.}\label{plotaxisprops}
\titlecaption{Ausgew\"ahlte Eigenschaften der Achse.}{ Alle Eigenschaften der Achse findet man in der Hilfe oder im \codeterm{Property Editor} (\figref{ploteditorfig}). Wenn es eine definierte Auswahl von Einstellungen gibt, z.B. bei der Eigenschaft \code{Box}, dann ist die Standardeinstellungen als erstes gelistet.}\label{plotaxisprops}
\begin{tabular*}{1\textwidth}{lp{6.3cm}p{6cm}} \hline
\textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline
\codeterm{Box} & Definiert, ob der Rahmen der Achse vollst\"andig gezeichnet wird. & $\{'on'|'off'\}$ \\
\codeterm{Color} & Hintergrundfarbe des Koordinatensystems. & Beliebige RGB, CMYK ... Werte. \\
\codeterm{Fontname} & Der Name der Schriftart. & Im System installierte Schriften. \\
\codeterm{FontSize} & Gr\"o{\ss}e der Schrift. & Skalarer Wert.\\
\codeterm{FontUnit} & Einheit, in der die Schriftgr\"o{\ss}e bestimmt wird. & $\{'points' | 'centimeters' | 'inches', ...\}$\\
\codeterm{FontWeight} & Fett- oder Normalsatz der Schrift. & $\{'normal' | 'bold'\}$\\
\code{Box} & Definiert, ob der Rahmen der Achse vollst\"andig gezeichnet wird. & $\{'on'|'off'\}$ \\
\code{Color} & Hintergrundfarbe des Koordinatensystems. & Beliebige RGB, CMYK ... Werte. \\
\code{Fontname} & Der Name der Schriftart. & Im System installierte Schriften. \\
\code{FontSize} & Gr\"o{\ss}e der Schrift. & Skalarer Wert.\\
\code{FontUnit} & Einheit, in der die Schriftgr\"o{\ss}e bestimmt wird. & $\{'points' | 'centimeters' | 'inches', ...\}$\\
\code{FontWeight} & Fett- oder Normalsatz der Schrift. & $\{'normal' | 'bold'\}$\\
% & 'd' \\ ??????
\codeterm{TickDir} & Richtung der Teilstriche auf der Achse. & $\{'in' | 'out'\}$\\
\codeterm{TickLength} & L\"ange der Haupt- und Nebenteilstriche & \\
\codeterm{X-, Y-, ZDir} & Richtung der Achsskalierung. & $\{'normal' | 'reversed'\}$\\
\codeterm{X-, Y-, ZGrid} & Sollen Gitternetzlinien gezeigt werden? & $\{'off'|'on'\}$ \\
\codeterm{X-, Y-, ZScale} & Lineare oder logarithmische Skalierung der Achse. & $\{'linear' | 'log'\}$\\
\codeterm{X-, Y-, ZTick} & Position der Teilstriche auf der Achse. & Vektor mit Positionen.\\
\codeterm{X-, Y-, ZTickLabel} & Beschriftung der Teilstriche. & Vektor mit entsprechenden Zahlen oder Cell-Array mit Strings.\\ \hline
\code{TickDir} & Richtung der Teilstriche auf der Achse. & $\{'in' | 'out'\}$\\
\code{TickLength} & L\"ange der Haupt- und Nebenteilstriche & \\
\code{X-, Y-, ZDir} & Richtung der Achsskalierung. & $\{'normal' | 'reversed'\}$\\
\code{X-, Y-, ZGrid} & Sollen Gitternetzlinien gezeigt werden? & $\{'off'|'on'\}$ \\
\code{X-, Y-, ZScale} & Lineare oder logarithmische Skalierung der Achse. & $\{'linear' | 'log'\}$\\
\code{X-, Y-, ZTick} & Position der Teilstriche auf der Achse. & Vektor mit Positionen.\\
\code{X-, Y-, ZTickLabel} & Beschriftung der Teilstriche. & Vektor mit entsprechenden Zahlen oder Cell-Array mit Strings.\\ \hline
\end{tabular*}
\end{table}
@ -357,16 +358,16 @@ gerade aktiven Achse.
\titlecaption{Ausgew\"ahlte Eigenschaften der \codeterm{Figure}.}{Alle Eigenschaften der Figure findet man in der Hilfe von \matlab{} oder im \codeterm{Property Editor} wenn die Abbildung ausgew\"ahlt wurde (\figref{ploteditorfig}).}\label{plotfigureprops}
\begin{tabular*}{1\textwidth}{lp{6.3cm}p{6cm}} \hline
\textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline
\codeterm{Color} & Hintergrundfarbe der Zeichenfl\"ache. & Beliebige RGB, CMYK ... Werte. \\
\codeterm{PaperPosition} & Position der Abbildung auf dem Papier & 4-elementiger Vektor mit den Positionen der linken-unteren, und rechten-oberen Ecke. \\
\codeterm{PaperSize} & Gr\"o{\ss}e der des Papiers. & 2-elementiger Vektor mit der Papiergr\"o{\ss}e.\\
\codeterm{PaperUnits} & Einheit, in der die Papiergr\"o{\ss}e bestimmt wird. & $\{'inches' | 'centimeters' | 'normalized' | 'points'\}$\\
\codeterm{Visible} & Hilfreich, wenn ein Plot aus Performanzgr\"unden nicht auf dem Bildschirm gezeigt, sondern direkt gespeichert werden soll. & $\{'on' | 'off'\}$\\ \hline
\code{Color} & Hintergrundfarbe der Zeichenfl\"ache. & Beliebige RGB, CMYK ... Werte. \\
\code{PaperPosition} & Position der Abbildung auf dem Papier & 4-elementiger Vektor mit den Positionen der linken-unteren, und rechten-oberen Ecke. \\
\code{PaperSize} & Gr\"o{\ss}e der des Papiers. & 2-elementiger Vektor mit der Papiergr\"o{\ss}e.\\
\code{PaperUnits} & Einheit, in der die Papiergr\"o{\ss}e bestimmt wird. & $\{'inches' | 'centimeters' | 'normalized' | 'points'\}$\\
\code{Visible} & Hilfreich, wenn ein Plot aus Performanzgr\"unden nicht auf dem Bildschirm gezeigt, sondern direkt gespeichert werden soll. & $\{'on' | 'off'\}$\\ \hline
\end{tabular*}
\end{table}
Wie die Achse, hat auch das \codeterm{Figure} Element eine Reihe von
Eigenschaften, die nach Bedarf mit der \code{set} - Funktion gesetzt
Eigenschaften, die nach Bedarf mit der \code{set()} - Funktion gesetzt
werden k\"onnen (Tabelle \ref{plotfigureprops} listet die
meistverwendeten). Das erste Argument f\"ur \code{set()} ist jetzt
aber eine Handle f\"ur die Abbildung, nicht das
@ -380,7 +381,7 @@ Aufruf des Skripts wird exakt der gleiche Plot (Abbildung
sind hier vor allem die Zeilen 2 und 3 in denen die Gr\"o{\ss}e der
Abbildung in Zentimetern definiert wird. In Zeile 16 wird die
Abbildung dann in genau der angegebenen Gr\"o{\ss}e im ``pdf'' Format
gespeichert. Dazu wird die Funktion \code{saveas} verwendet, die als
gespeichert. Dazu wird die Funktion \code{saveas()} verwendet, die als
erstes Argument wieder ein Handle auf die Figure erwartet. Das zweite
Argument ist der Dateiname, und zuletzt muss das gew\"unschte Format
(Box \ref{graphicsformatbox}) angegeben werden.
@ -423,10 +424,10 @@ Homepage viele Beispiele mit zugeh\"origem Code
\end{minipage}
\hfill
\begin{minipage}[t]{0.5\textwidth}
Von \matlab{} unterst\"utzte Formate\footnote{Auswahl, mehr Information in der Hilfe zu \code{saveas}}:\\[2ex]
Von \matlab{} unterst\"utzte Formate\footnote{Auswahl, mehr Information in der Hilfe zu \code{saveas()}}:\\[2ex]
\begin{tabular}{|l|c|l|}
\hline
\textbf{Format} & \textbf{Typ} & \code{saveas} Argument \rule[-1.2ex]{0pt}{3.5ex} \\ \hline
\textbf{Format} & \textbf{Typ} & \code{saveas()} Argument \rule[-1.2ex]{0pt}{3.5ex} \\ \hline
pdf & Vektor & \varcode{'pdf'} \rule{0pt}{2.5ex} \\
eps & Vektor & \varcode{'eps'}, \varcode{'epsc'} \\
SVG & Vektor & \varcode{'svg'} \\

View File

@ -5,8 +5,8 @@
\lstset{inputpath=../code}
\graphicspath{{figures/}}
\setcounter{page}{}
\setcounter{chapter}{-1}
\setcounter{page}{111}
\setcounter{chapter}{7}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -2,7 +2,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Analyse von Spiketrains}
\determ{Aktionspotentiale} (\enterm{Spikes}) sind die Tr\"ager der
\determ[Aktionspotential]{Aktionspotentiale} (\enterm{Spikes}) sind die Tr\"ager der
Information in Nervensystemen. Dabei ist in erster Linie nur der
Zeitpunkt des Auftretens eines Aktionspotentials von Bedeutung. Die
genaue Form des Aktionspotentials spielt keine oder nur eine
@ -16,7 +16,7 @@ es ergeben sich mehrere \enterm{trials} von Spiketrains
Spiketrains sind Zeitpunkte von Ereignissen --- den Aktionspotentialen
--- und deren Analyse f\"allt daher in das Gebiet der Statistik von
sogenannten \determ{Punktprozessen}.
sogenannten \determ[Punktprozess]{Punktprozessen}.
\begin{figure}[ht]
\includegraphics[width=1\textwidth]{rasterexamples}
@ -345,9 +345,10 @@ generiert wurden.
W\"ahrend die Instantane Rate den Kehrwert der Zeit von einem bis zum
n\"achsten Aktionspotential misst, sch\"atzt das sogenannte
\determ{Peri-Stimulus-Zeit-Histogramm} (\enterm{peri stimulus time
histogram}, PSTH) die Wahrscheinlichkeit ab, zu einem Zeitpunkt
Aktionspotentiale anzutreffen. Es wird versucht die mittlere Rate \eqnref{firingrate}
im Grenzwert kleiner Beobachtungszeiten abzusch\"atzen:
histogram}, \determ[PSTH|see{Peri-Stimulus-Zeit-Histogramm}]{PSTH})
die Wahrscheinlichkeit ab, zu einem Zeitpunkt Aktionspotentiale
anzutreffen. Es wird versucht die mittlere Rate \eqnref{firingrate} im
Grenzwert kleiner Beobachtungszeiten abzusch\"atzen:
\begin{equation}
\label{psthrate}
r(t) = \lim_{W \to 0} \frac{\langle n \rangle}{W} \; ,
@ -378,7 +379,7 @@ Abschnitte (Bins) eingeteilt und die Anzahl Aktionspotentiale, die in
die jeweiligen Bins fallen, gez\"ahlt (\figref{binpsth} A). Um diese
Z\"ahlungen in die Feuerrate umzurechnen muss noch mit der Binweite
normiert werden. Das ist fast so, wie beim Absch\"atzen einer
Wahrscheinlichkeitsdichte. Es kann auch die \code{hist} Funktion zur
Wahrscheinlichkeitsdichte. Es kann auch die \code{hist()} Funktion zur
Bestimmung des PSTHs verwendet werden.
Die bestimmte Feuerrate gilt f\"ur das gesamte Bin (\figref{binpsth}
@ -439,7 +440,7 @@ Spiketrains.
Die graphischer Darstellung der Feuerrate allein reicht nicht aus um
den Zusammenhang zwischen neuronaler Antwort und einem Stimulus zu
analysieren. Eine Methode um mehr \"uber diesen Zusammenhang zu erfahren,
ist der \enterm{Spike-triggered average} (STA). Der STA
ist der \enterm{Spike-triggered average} (\enterm[STA|see{Spike-triggered average}]{STA}). Der STA
\begin{equation}
STA(\tau) = \langle s(t - \tau) \rangle = \frac{1}{N} \sum_{i=1}^{N} s(t_i - \tau)
\end{equation}
@ -477,12 +478,12 @@ antworten.
Der STA kann auch dazu benutzt werden, aus den Antworten der Zelle den
Stimulus zu rekonstruieren (\figref{stafig} B). Bei der
\determ{invertierten Rekonstruktion} wird die Zellantwort mit dem STA
verfaltet.
\determ[invertierte Rekonstruktion]{invertierten Rekonstruktion} wird
die Zellantwort mit dem STA verfaltet.
\begin{exercise}{spikeTriggeredAverage.m}{}
Implementiere eine Funktion, die den STA ermittelt. Verwende dazu
den Datensatz \codeterm{sta\_data.mat}. Die Funktion sollte folgende
den Datensatz \file{sta\_data.mat}. Die Funktion sollte folgende
R\"uckgabewerte haben:
\begin{itemize}
\item den Spike-Triggered-Average.
@ -495,7 +496,7 @@ verfaltet.
Rekonstruiere den Stimulus mithilfe des STA und der Spike
Zeiten. Die Funktion soll Vektor als R\"uckgabewert haben, der
genauso gro{\ss} ist wie der Originalstimulus aus der Datei
\codeterm{sta\_data.mat}.
\file{sta\_data.mat}.
\end{exercise}

View File

@ -199,7 +199,7 @@ Dimension die Gr\"o{\ss}e 1 hat.
Im Gegensatz zu Variablen, die einzelene Werte beinhalten
(Skalare), kann ein Vektor mehrere Werte des gleichen Datentyps
beinhalten (Abbildung \ref{vectorfig} B). Die Variable \code{a}
beinhalten (Abbildung \ref{vectorfig} B). Die Variable \varcode{a}
enth\"alt im Beispiel in Abbildung \ref{vectorfig} vier ganzzahlige Werte.
\begin{figure}
@ -228,10 +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 Funktionen \code{length()} und \code{numel} bestimmt
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:
\varcode{a} von oben erh\"alt man folgende Ausgabe:
\begin{lstlisting}[label=arrayListing2, caption={Gr\"o{\ss}e von Vektoren.}]
>> length(a)
@ -244,7 +244,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(a)} gibt die l\"angste Ausdehnung an. Der \code{'}-
1. \code[length()]{length(a)} gibt die l\"angste Ausdehnung an. Der \code{'}-
Operator transponiert den Spaltenvektor zu einem Zeilenvektor (Zeilen 14 ff.).
@ -323,7 +323,7 @@ Element gleichzeitig zuzugreifen.
\end{lstlisting}
\begin{exercise}{vectorsize.m}{vectorsize.out}
Der R\"uckgabewert von \code{size(a)} ist wieder ein Vektor der
Der R\"uckgabewert von \code[size()]{size(a)} ist wieder ein Vektor der
L\"ange 2. Wie k\"onnte man also die Gr\"o{\ss}e von \varcode{a} in der
zweiten Dimension herausfinden?
\end{exercise}
@ -470,14 +470,14 @@ einzelnen Zeilen der Matrize.
Zur Defintion von mehr-dimensionalen Matrizen ist die Notation in
Zeile 1 nicht geeignet. Es gibt allerdings eine Reihe von
Helferfunktionen, die n-dimensionale Matrizen erstellen k\"onnen
(z.B. \code{ones}, Zeile 7). Sollte sich die Notwendigkeit ergeben
mehrdimensionale Matrizen zusammenzuf\"ugen hilft die \code{cat}
(z.B. \code{ones()}, Zeile 7). Sollte sich die Notwendigkeit ergeben
mehrdimensionale Matrizen zusammenzuf\"ugen hilft die \code{cat()}
Funktion.
Um Informationen \"uber die Gr\"o{\ss}e einer Matrize zu bekommen ist
die Funktion \code{length} nicht geeignet. Wie oben erw\"ahnt gibt sie
die Funktion \code{length()} nicht geeignet. Wie oben erw\"ahnt gibt sie
die Gr\"o{\ss}e der l\"angsten Dimension aus. Wann immer es um
Matrizen geht, wird \code{size} benutzt.
Matrizen geht, wird \code{size()} benutzt.
\begin{figure}
\includegraphics[width=0.9\columnwidth]{matrixIndexing}
@ -524,7 +524,7 @@ Alternativ zum \codeterm{subscript indexing} k\"onnen die Zellen einer
Matrize auch \emph{linear} angesprochen werden (Abbildung
\ref{matrixlinearindexingfig}). Diese Art der Adressierung ist nicht
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()]{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 Indizierens z.B. wenn man
@ -682,7 +682,7 @@ 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(A, B)} verf\"ugbar.
(XOR) ist in \matlab{} nur als Funktion \code[xor()]{xor(A, B)} verf\"ugbar.
\begin{table}[th]
\titlecaption{\label{logicaloperators}
@ -935,7 +935,7 @@ end
\begin{exercise}{facultyLoop.m}{facultyLoop.out}
Wie k\"onnte Fakult\"at mit einer Schleife implementiert werden?
Implementiere eine \code{for} Schleife, die die Fakul\"at von einer
Zahl \code{n} berechnet.
Zahl \varcode{n} berechnet.
\end{exercise}
@ -1254,18 +1254,18 @@ hei{\ss}en soll, (ii) welche Information sie ben\"otigt und (iii)
welche Daten sie zur\"uckliefern soll.
\begin{enumerate}
\item \codeterm{Name:} der Name sollte beschreiben, was die Funktion
\item \codeterm{Name}: der Name sollte beschreiben, was die Funktion
tut. In diesem Fall berechnet sie einen Sinus. Ein geeigneter Name
w\"are also \code{calculate\_sinewave}.
\item \codeterm{Argumente:} die zu brechnende Sinusschwingung sei durch
w\"are also \code{calculate\_sinewave()}.
\item \codeterm{Argumente}: die zu brechnende Sinusschwingung sei durch
ihre Frequenz und die Amplitude bestimmt. Des Weiteren soll noch
festgelegt werden, wie lang der Sinus sein soll und mit welcher
zeitlichen Aufl\"osung gerechnet werden soll. Es werden also vier
Argumente ben\"otigt, sie k\"onnten hei{\ss}en: \code{amplitude},
\code{frequency}, \code{t\_max}, \code{t\_step}.
\item \codeterm{R\"uckgabewerte:} Um den Sinus korrekt darstellen zu k\"onnen brauchen wir die
Argumente ben\"otigt, sie k\"onnten hei{\ss}en: \varcode{varamplitude},
\varcode{frequency}, \varcode{t\_max}, \varcode{t\_step}.
\item \codeterm{R\"uckgabewerte}: Um den Sinus korrekt darstellen zu k\"onnen brauchen wir die
Zeitachse und die entsprechenden Werte. Es werden also zwei
Variablen zur\"uckgegeben: \code{time, sine}
Variablen zur\"uckgegeben: \varcode{time}, \varcode{sine}
\end{enumerate}
Mit dieser Information ist es nun gut m\"oglich die Funktion zu
implementieren (Listing \ref{sinefunctionlisting}).
@ -1289,7 +1289,7 @@ function [time, sine] = calculate_sinewave(frequency, amplitude, t_max, t_step)
Diese Aufgabe kann auch von einer Funktion \"ubernommen werden. Diese
Funktion hat keine andere Aufgabe, als die Daten zu plotten. Ihr Name
sollte sich an dieser Aufgabe orientieren
(z.B. \code{plot\_sinewave}). Um einen einzelnen Sinus zu plotten
(z.B. \code{plot\_sinewave()}). Um einen einzelnen Sinus zu plotten
werden im Wesentlichen die x-Werte und die zugeh\"origen y-Werte
ben\"otigt. Da mehrere Sinus geplottet werden sollen ist es auch
sinnvoll eine Zeichenkette f\"ur die Legende an die Funktion zu

View File

@ -5,7 +5,7 @@
\lstset{inputpath=../code}
\graphicspath{{figures/}}
\setcounter{page}{55}
\setcounter{page}{57}
\setcounter{chapter}{2}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -136,10 +136,10 @@ die Namensgebung selbst keine weiteren Vorgaben. Allerdings folgt die
Benennung der in \matlab{} vordefinierten Funktionen gewissen Mustern:
\begin{itemize}
\item Namen werden immer klein geschrieben.
\item Es werden gerne Abk\"urzungen eingesetzt (z.B. \code{xcorr}
f\"ur die Kreuzkorrelation oder \code{repmat} f\"ur ``repeat matrix'')
\item Es werden gerne Abk\"urzungen eingesetzt (z.B. \code{xcorr()}
f\"ur die Kreuzkorrelation oder \code{repmat()} f\"ur ``repeat matrix'')
\item Funktionen, die zwischen Formaten konvertieren sind immer nach
dem Muster ``format2format'' (z.B. \code{num2str} f\"ur die
dem Muster ``format2format'' (z.B. \code{num2str()} f\"ur die
Konvertierung ``number to string'', Umwandlung eines numerischen
Wertes in einen Text) benannt.
\end{itemize}
@ -165,9 +165,9 @@ W\"ahrend die Namen von Funktionen und Skripten ihren Zweck
beschreiben, sollten die Namen von Variablen ihren Inhalt
beschreiben. Eine Variable, die die mittlere Anzahl von
Aktionspotentialen speichert, k\"onnte also
\codeterm{average\_spike\_count} hei{\ss}en. Wenn die Variable nicht
\varcode{average\_spike\_count} hei{\ss}en. Wenn die Variable nicht
nur einen sondern mehrere Werte aufnimmt, dann ist der Plural
angebracht (\codeterm{average\_spike\_counts}).
angebracht (\varcode{average\_spike\_counts}).
Die Laufvariablen von \code{for}-Schleifen werden oft nur \varcode{i},
\varcode{j} oder \varcode{k} benannt und sollten aber die einzige Ausnahme
@ -175,7 +175,7 @@ bzgl. ausdrucksstarker Namensgebung bleiben.
\begin{important}[Benennung von Variablen]
Die Namen von Variablen sollten m\"oglichst viel \"uber ihren Inhalt
aussagen (\code{spike\_count} statt \code{x}). Gute Namen
aussagen (\varcode{spike\_count} statt \varcode{x}). Gute Namen
f\"ur Variablen sind die beste Dokumentation.
\end{important}
@ -248,7 +248,7 @@ Kommentarzeilen werden in \matlab{} mit dem Prozentzeichen \code{\%}
gekennzeichnet. Gezielt und sparsam eingesetzte Kommentare sind f\"ur
das Verst\"andnis eines Programms sehr n\"utzlich. Am wichtigsten
sind kurze Kommentare, die den Zweck und das Ziel eines Abschnitts im
Programm erl\"autern (z.B. \code{\% compute mean firing rate over all
Programm erl\"autern (z.B. \varcode{\% compute mean firing rate over all
trials}).
Viele und h\"aufige Kommentare k\"onnen in der Entwicklungsphase eines
@ -259,7 +259,7 @@ Zeilen sowieso weitestgehend selbsterkl\"arend sein.
Die beste Dokumentation ist der Code selbst. Gut geschriebener Code
mit ausdrucksstarken Variablen- und Funktionsnamen ben\"otigt keine
Kommentare, um den Zweck einzelner Zeilen zu erkl\"aren. z.B. ist\\
\code{ x = x + 2; \% add two to x}\\
\varcode{ x = x + 2; \% add two to x}\\
ein v\"ollig unn\"otiger Kommentar.
\begin{important}[Verwendung von Kommentaren]
@ -333,10 +333,10 @@ lokale Funktion.
Lokale Funktionen existieren in der gleichen Datei und sind nur dort
verf\"ugbar. Jede Funktion hat ihren eigenen G\"ultigkeitsbereich, das
hei{\ss}t, dass Variablen aus den aufrufenden Funktionen nicht
sichtbar sind. Bei sogenannten \codeterm{geschachtelten Funktionen}
sichtbar sind. Bei sogenannten \codeterm[geschachtelte Funktionen]{geschachtelten Funktionen}
ist das anders. Diese werden innerhalb eines Funktionsk\"orpers
(zwischen den Schl\"usselworten \codeterm{function} und dem
\codeterm{end} definiert und k\"onnen auf alle Variablen der
(zwischen den Schl\"usselworten \code{function} und dem
\code{end} definiert und k\"onnen auf alle Variablen der
``Mutterfunktion'' zugreifen und diese auch ver\"andern. Folglich
sollten sie nur mit Bedacht eingesetzt werden.

View File

@ -5,7 +5,7 @@
\lstset{inputpath=../code}
\graphicspath{{figures/}}
\setcounter{page}{85}
\setcounter{page}{89}
\setcounter{chapter}{5}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -81,7 +81,7 @@ quadratischen Abst\"ande immer positiv, unabh\"angig ob die Datenwerte
zus\"atzlich gro{\ss}e Abst\"ande st\"arker gewichtet.
\begin{exercise}{meanSquareError.m}{}\label{mseexercise}%
Schreibe eine Funktion \code{meanSquareError}, die die mittlere
Schreibe eine Funktion \code{meanSquareError()}, die die mittlere
quadratische Abweichung zwischen einem Vektor mit den beobachteten
Werten $y$ und einem Vektor mit den entsprechenden Vorhersagen
$y^{est}$ berechnet.\newpage
@ -134,16 +134,16 @@ der Fehler \eqnref{mseline} minimal wird.
\begin{exercise}{lsqError.m}{}
Implementiere die Zielfunktion f\"ur die Optimierung mit der
linearen Geradengleichung als Funktion \code{lsqError}.
linearen Geradengleichung als Funktion \code{lsqError()}.
\begin{itemize}
\item Die Funktion \"ubernimmt drei Argumente: Das erste Argument
ist ein 2-elementiger Vektor, der die Parameter \code{m} und
\code{b} enth\"alt. Das zweite ist ein Vektor mit den $x$-Werten,
ist ein 2-elementiger Vektor, der die Parameter \varcode{m} und
\varcode{b} enth\"alt. Das zweite ist ein Vektor mit den $x$-Werten,
an denen gemessen wurde, und das dritte ein Vektor mit den
zugeh\"origen $y$-Werten.
\item Die Funktion gibt als Ergebniss den Fehler als mittleren
quadratischen Abstand \eqnref{mseline} zur\"uck.
\item Die Funktion soll die Funktion \code{meanSquareError} der
\item Die Funktion soll die Funktion \code{meanSquareError()} der
vorherigen \"Ubung benutzen.
\end{itemize}
\end{exercise}
@ -181,12 +181,12 @@ beiden Parameter und auf der $z$-Achse der Fehlerwert aufgetragen
\begin{exercise}{errorSurface.m}{}\label{errorsurfaceexercise}%
Lade den Datensatz \textit{lin\_regression.mat} in den Workspace (20
Datenpaare in den Vektoren \code{x} und \code{y}). Schreibe ein Skript
Datenpaare in den Vektoren \varcode{x} und \varcode{y}). Schreibe ein Skript
\file{errorSurface.m}, dass den Fehler, berechnet als mittleren
quadratischen Abstand zwischen den Daten und einer Geraden mit
Steigung $m$ und $y$-Achsenabschnitt $b$, in Abh\"angigkeit von $m$
und $b$ als surface plot darstellt (siehe Hilfe f\"ur die
\code{surf} Funktion).
\code{surf()} Funktion).
\end{exercise}
An der Fehlerfl\"ache kann direkt erkannt werden, bei welcher
@ -310,7 +310,7 @@ partielle Ableitung nach $m$ durch
\end{figure}
\begin{exercise}{lsqGradient.m}{}\label{gradientexercise}%
Implementiere eine Funktion \code{lsqGradient}, die den
Implementiere eine Funktion \code{lsqGradient()}, die den
Parametersatz $(m, b)$ der Geradengleichung als 2-elementigen Vektor
sowie die $x$- und $y$-Werte der Messdaten als Argumente
entgegennimmt und den Gradienten an dieser Stelle zur\"uckgibt.
@ -321,7 +321,7 @@ partielle Ableitung nach $m$ durch
um f\"ur jede Parameterkombination aus der Fehlerfl\"ache
(\"Ubung \ref{errorsurfaceexercise}) auch den Gradienten zu
berechnen und darzustellen. Vektoren im Raum k\"onnen mithilfe der
Funktion \code{quiver} geplottet werden.
Funktion \code{quiver()} geplottet werden.
\end{exercise}
@ -330,8 +330,8 @@ partielle Ableitung nach $m$ durch
Zu guter Letzt muss nur noch der Gradientenabstieg implementiert
werden. Die daf\"ur ben\"otigten Zutaten haben wir aus den
vorangegangenen \"Ubungen bereits vorbereitet. Wir brauchen: 1. Die Fehlerfunktion
(\code{meanSquareError.m}), 2. die Zielfunktion (\code{lsqError.m})
und 3. den Gradienten (\code{lsqGradient.m}). Der Algorithmus
(\code{meanSquareError()}), 2. die Zielfunktion (\code{lsqError()})
und 3. den Gradienten (\code{lsqGradient()}). Der Algorithmus
f\"ur den Abstieg lautet:
\begin{enumerate}
\item Starte mit einer beliebigen Parameterkombination $p_0 = (m_0,
@ -342,7 +342,7 @@ f\"ur den Abstieg lautet:
abbrechen. Wir suchen ja das Minimum, bei dem der Gradient gleich
Null ist. Da aus numerischen Gr\"unden der Gradient nie exakt Null
werden wird, k\"onnen wir nur fordern, dass er hinreichend klein
wird (z.B. \code{norm(gradient) < 0.1}).
wird (z.B. \varcode{norm(gradient) < 0.1}).
\item \label{gradientstep} Gehe einen kleinen Schritt ($\epsilon =
0.01$) in die entgegensetzte Richtung des Gradienten:
\[p_{i+1} = p_i - \epsilon \cdot \nabla f_{cost}(m_i, b_i)\]
@ -367,7 +367,7 @@ Punkte in Abbildung \ref{gradientdescentfig} gro{\ss}.
\begin{exercise}{gradientDescent.m}{}
Implementiere den Gradientenabstieg f\"ur das Problem der
Parameteranpassung der linearen Geradengleichung an die Messdaten in
der Datei \code{lin\_regression.mat}.
der Datei \file{lin\_regression.mat}.
\begin{enumerate}
\item Merke Dir f\"ur jeden Schritt den Fehler zwischen
Modellvorhersage und Daten.
@ -388,7 +388,7 @@ mittlere quadratische Abstand als Kostenfunktion in der Tat ein
einziges klar definiertes Minimum. Wie wir im n\"achsten Kapitel
sehen werden, kann die Position des Minimums bei Geradengleichungen
sogar analytisch bestimmt werden, der Gradientenabstieg w\"are also
gar nicht n\"otig \matlabfun{polyfit}.
gar nicht n\"otig \matlabfun{polyfit()}.
F\"ur Parameter, die nichtlinear in einer Funktion
enthalten sind, wie z.B. die Rate $\lambda$ als Parameter in der
@ -401,9 +401,9 @@ Gradientenabstiegs auf vielf\"altige Weise verbessert
werden. z.B. kann die Schrittweite an die St\"arke des Gradienten
angepasst werden. Diese numerischen Tricks sind in bereits vorhandenen
Funktionen implementiert. Allgemeine Funktionen sind f\"ur beliebige
Kostenfunktionen gemacht \matlabfun{fminsearch}, w\"ahrend spezielle
Kostenfunktionen gemacht \matlabfun{fminsearch()}, w\"ahrend spezielle
Funktionen z.B. f\"ur die Minimierung des quadratischen Abstands bei
einem Kurvenfit angeboten werden \matlabfun{lsqcurvefit}.
einem Kurvenfit angeboten werden \matlabfun{lsqcurvefit()}.
\begin{important}[Achtung Nebenminima!]
Das Finden des globalen Minimums ist leider nur selten so leicht wie

View File

@ -17,7 +17,6 @@
\lstlistoflistings
\listofexercisefs
\listofiboxfs
%\listofimportantfs
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\part{Grundlagen des Programmierens}
@ -71,7 +70,9 @@
\addcontentsline{toc}{chapter}{Fachbegriffe}
\printindex[term]
\addcontentsline{toc}{chapter}{Code}
\addcontentsline{toc}{chapter}{Englische Fachbegriffe}
\printindex[enterm]
\addcontentsline{toc}{chapter}{MATLAB Code}
\printindex[code]
\end{document}

View File

@ -5,7 +5,7 @@
\lstset{inputpath=../code}
\graphicspath{{figures/}}
\setcounter{page}{67}
\setcounter{page}{69}
\setcounter{chapter}{3}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -43,8 +43,8 @@ nicht kleiner als der Median ist (\figref{medianfig}).
\newpage
\begin{exercise}{mymedian.m}{}
\tr{Write a function \code{mymedian} that computes the median of a vector.}
{Schreibe eine Funktion \code{mymedian}, die den Median eines Vektors zur\"uckgibt.}
\tr{Write a function \code{mymedian()} that computes the median of a vector.}
{Schreibe eine Funktion \code{mymedian()}, die den Median eines Vektors zur\"uckgibt.}
\end{exercise}
\matlab{} stellt die Funktion \code{median()} zur Berechnung des Medians bereit.
@ -55,7 +55,7 @@ nicht kleiner als der Median ist (\figref{medianfig}).
returns a median above which are the same number of data than
below. In particular the script should test data vectors of
different length.} {Schreibe ein Skript, das testet ob die
\code{mymedian} Funktion wirklich die Zahl zur\"uckgibt, \"uber
\code{mymedian()} Funktion wirklich die Zahl zur\"uckgibt, \"uber
der genauso viele Datenwerte liegen wie darunter. Das Skript sollte
insbesondere verschieden lange Datenvektoren testen.}
\end{exercise}
@ -126,8 +126,8 @@ Wahrscheinlichkeitsverteilung der Messwerte abzusch\"atzen.
\tr{Plot histograms from rolling the die 20, 100, 1000 times. Use
the plain hist(x) function, force 6 bins via hist( x, 6 ), and set
meaningfull bins positions.} {Plotte Histogramme von 20, 100, und
1000-mal w\"urfeln. Benutze \code{hist(x)}, erzwinge sechs Bins
mit \code{hist(x,6)}, oder setze selbst sinnvolle Bins. Normiere
1000-mal w\"urfeln. Benutze \code[hist()]{hist(x)}, erzwinge sechs Bins
mit \code[hist()]{hist(x,6)}, oder setze selbst sinnvolle Bins. Normiere
anschliessend das Histogram auf geeignete Weise.}
\end{exercise}
@ -271,7 +271,7 @@ Korrelations\-koeffizient
(x-\langle x \rangle)(y-\langle y \rangle) \rangle}{\sqrt{\langle
(x-\langle x \rangle)^2} \rangle \sqrt{\langle (y-\langle y
\rangle)^2} \rangle} \]
quantifiziert einfache lineare Zusammenh\"ange \matlabfun{corr}. Der
quantifiziert einfache lineare Zusammenh\"ange \matlabfun{corr()}. Der
Korrelationskoeffizient ist die Covarianz normiert durch die
Standardabweichungen. Perfekt korrelierte Variablen ergeben einen
Korrelationskoeffizienten von $+1$, antikorrelierte Daten einen