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 pdflatex -interaction=scrollmode $(BASENAME).tex | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex $(BASENAME).tex || true
clean : 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 for sd in $(SUBDIRS); do $(MAKE) -C $$sd/lecture clean; done
cleanall : clean cleanall : clean

View File

@ -186,7 +186,7 @@ Bestimme die Signifikanz eines Korrelationskoeffizienten.
\item Berechne den Korrelationskoeffizient dieser Datenpaare. \item Berechne den Korrelationskoeffizient dieser Datenpaare.
\item Generiere die Verteilung der Nullhypothese ``unkorrelierte \item Generiere die Verteilung der Nullhypothese ``unkorrelierte
Daten'' indem die $x$- und $y$-Daten 1000-mal unabh\"angig 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. Korrelationskoeffizient berechnet wird.
\item Bestimme aus den Nullhypothesendaten das 95\,\%-Perzentil und \item Bestimme aus den Nullhypothesendaten das 95\,\%-Perzentil und
vergleiche es mit dem tats\"achlichen Korrelationskoeffizienten. vergleiche es mit dem tats\"achlichen Korrelationskoeffizienten.

View File

@ -86,7 +86,7 @@ sigma = 2.3;
y = randn(100, 1)*sigma + mu; y = randn(100, 1)*sigma + mu;
\end{lstlisting} \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}] \begin{lstlisting}[caption={Skalierung von zeros und ones}]
x = -1:0.01:2; % Vektor mit x-Werten x = -1:0.01:2; % Vektor mit x-Werten
plot(x, exp(-x.*x)); plot(x, exp(-x.*x));
@ -141,7 +141,7 @@ Meistens sollten Histogramme normiert werden, damit sie vergleichbar
mit anderen Histogrammen oder mit theoretischen mit anderen Histogrammen oder mit theoretischen
Wahrscheinlichkeitsverteilungen werden. 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}] \begin{lstlisting}[caption={Probability-density-function mit der histogram-Funktion}]
x = randn(100, 1); % irgendwelche reellwertige Daten x = randn(100, 1); % irgendwelche reellwertige Daten
histogram(x, 'Normalization', 'pdf'); histogram(x, 'Normalization', 'pdf');

View File

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

View File

@ -195,7 +195,7 @@ die Steigung $m$ und der y-Achsenabschnitt $b$ einer Geradengleichung
\[ y = m \cdot x +b \] \[ y = m \cdot x +b \]
oder allgemeiner die Koeffizienten $a_k$ eines Polynoms 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 \] \[ 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 Parameter, die nichtlinear in einer Funktion enthalten sind, k\"onnen
im Gegensatz dazu nicht analytisch aus den Daten berechnet 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 \; . \] \[ y = c \cdot e^{\lambda x} \quad , \quad c, \lambda \in \reZ \; . \]
F\"ur diesen Fall bleibt dann nur auf numerische Verfahren zur F\"ur diesen Fall bleibt dann nur auf numerische Verfahren zur
Optimierung der Kostenfunktion, wie z.B. der Gradientenabstieg, 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 gesuchten Wahrscheinlichkeitsdichtefunktion bei der die Log-Likelihood
\eqnref{loglikelihood} maximal wird. Das ist im allgemeinen ein \eqnref{loglikelihood} maximal wird. Das ist im allgemeinen ein
nichtlinieares Optimierungsproblem, das mit numerischen Verfahren, wie 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} \begin{exercise}{mlegammafit.m}{mlegammafit.out}
Erzeuge Gammaverteilte Zufallszahlen und benutze Maximum-Likelihood, Erzeuge Gammaverteilte Zufallszahlen und benutze Maximum-Likelihood,

View File

@ -34,13 +34,13 @@ Zwecken genutzt wird.
Ein Datenplot muss ausreichend beschriftet werden: Ein Datenplot muss ausreichend beschriftet werden:
\begin{itemize} \begin{itemize}
\item Alle Achsen m\"ussen eine Bezeichnung und eine Einheit erhalten\\ \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 \item Wenn mehrere Dinge in einem Plot dargestellt werden, m\"ussen
diese mit einer Legende oder \"ahnlichem benannt werden diese mit einer Legende oder \"ahnlichem benannt werden
\matlabfun{legend()}. \matlabfun{legend()}.
\item Mehrere Plots mit den gleichen Gr\"o{\ss}en auf den Achsen, \item Mehrere Plots mit den gleichen Gr\"o{\ss}en auf den Achsen,
m\"ussen den gleichen Wertebereich auf den Achsen zeigen 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 Ausnahmen sind m\"oglich, sollten aber in der
Abbildungsunterschrift erw\"ahnt werden. Abbildungsunterschrift erw\"ahnt werden.
\item Die Beschriftung mu{\ss} gro{\ss} genug sein, um lesbar zu sein. \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{}} \section{Das Plottingsystem von \matlab{}}
Plotten in \matlab{} ist zun\"achst einmal einfach. Durch den Aufruf 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 erstellt. Diesem Plot fehlen jedoch jegliche Annotationen wie
Achsbeschriftungen, Legenden, etc. Es gibt zwei M\"oglichkeiten diese Achsbeschriftungen, Legenden, etc. Es gibt zwei M\"oglichkeiten diese
hinzuzuf\"ugen: (i) das Graphische User Interface oder (ii) die hinzuzuf\"ugen: (i) das Graphische User Interface oder (ii) die
@ -212,9 +212,9 @@ Datens\"atzen erstellt werden soll.
\subsection{Einfaches Plotten} \subsection{Einfaches Plotten}
Einen einfachen Linienplot zu erstellen ist denkbar 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 \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 keine Abbildung erstellt wurde, \"offnet \matlab{} ein neues Fenster
und stellt die Daten als Linienplot dar. Dabei werden die Datenpunkte und stellt die Daten als Linienplot dar. Dabei werden die Datenpunkte
durch eine Linie verbunden. Die Messpunkte selbst sind nicht 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()} werden indem \code{hold on} bzw. \code{hold off} vor dem \code{plot()}
Befehl aufgerufen wird. Befehl aufgerufen wird.
Im obigen Plot Aufruf wird nur ein Argument, das \code{y}, an die Im obigen Plot Aufruf wird nur ein Argument, das \varcode{y}, an die
Funktion \code{plot} \"ubergeben. \code{plot} erh\"alt nur die Funktion \code{plot()} \"ubergeben. \code{plot()} erh\"alt nur die
y-Werte. \matlab{} substituiert in diesem Fall die fehlenden x-Werte, y-Werte. \matlab{} substituiert in diesem Fall die fehlenden x-Werte,
indem eine Schrittweite von 1 angenommen wird. Die x-Achse reicht also 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, 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 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 Standard\"a{\ss}ig wird der erste Lininenplot in blau, mit
durchgezogener Linie, ohne Marker und der Strichst\"arke 1 durchgezogener Linie, ohne Marker und der Strichst\"arke 1
dargestellt. Der zweite Linienplot erh\"alt automatisch die Farbe dargestellt. Der zweite Linienplot erh\"alt automatisch die Farbe
@ -291,11 +291,11 @@ 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 (Listing der \code{plot()} Funktion ver\"andert werden. Folgender Aufruf (Listing
\ref{settinglineprops})erzeugt einen roten Linienplot mit gepunkteter \ref{settinglineprops})erzeugt einen roten Linienplot mit gepunkteter
Linie der St\"arke 1.5 und Sternmarkern an den Positionen der Linie der St\"arke 1.5 und Sternmarkern an den Positionen der
Datenpunkte. Zus\"atzlich wird noch die Eigenschaft 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. geben, der in einer Legende verwendet werden kann.
\begin{lstlisting}[label=settinglineprops, caption={Setzen von Linieneigenschaften beim \varcode{plot} Aufruf}] \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} \subsection{Ver\"andern von Achseneigenschaften}
Das erste, was ein Plot zus\"atzlich braucht, ist eine Das erste, was ein Plot zus\"atzlich braucht, ist eine
Achsenbeschriftung. Mithilfe der Funktionen \code{xlabel('Time [ms]')} Achsenbeschriftung. Mithilfe der Funktionen \code[xlabel()]{xlabel('Time [ms]')}
und \code{ylabel('Voltage [V]')} k\"onnen diese gesetzt und \code[ylabel()]{ylabel('Voltage [V]')} k\"onnen diese gesetzt
werden. werden.
Standardm\"a{\ss}ig setzt Matlab die Grenzen der x- und y-Achse so, 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 dass die Daten hineinpassen. Dabei wird meist auf den n\"achsten
ganzzahligen Wert aufgerundet. Mit den Funktionen \code{xlim} und ganzzahligen Wert aufgerundet. Mit den Funktionen \code{xlim()} und
\code{ylim} k\"onnen die Grenezen der Achsen aber auch manuell \code{ylim()} k\"onnen die Grenezen der Achsen aber auch manuell
eingestellt werden. Die Funktionen \code{xlim} und \code{ylim} eingestellt werden. Die Funktionen \code{xlim()} und \code{ylim()}
erwarten als Argument einen 2-elementigen Vektor mit dem Minimum und erwarten als Argument einen 2-elementigen Vektor mit dem Minimum und
dem Maximum der jeweiligen Achse. Tabelle \ref{plotaxisprops} listet dem Maximum der jeweiligen Achse. Tabelle \ref{plotaxisprops} listet
weitere h\"aufig genutzte Einstellungen der Achsen. Mit der \code{set} weitere h\"aufig genutzte Einstellungen der Achsen. Mit der
- Funktion k\"onnen diese ver\"andert werden wie in Zeile 15 in \code{set()} - Funktion k\"onnen diese ver\"andert werden wie in Zeile
Listing \ref{niceplotlisting} gezeigt. Die \code{set} - Funktion 15 in Listing \ref{niceplotlisting} gezeigt. Die \code{set()} -
erwartet als erstes Argument ein sogenanntes Handle der Achse, dieses Funktion erwartet als erstes Argument ein sogenanntes Handle der
wird gefolgt von einer beliebig langen Reihe von Eigenschaft-Wert Achse, dieses wird gefolgt von einer beliebig langen Reihe von
Paaren. Soll z.B. das Gitternetz der x-Achse gezeigt werden, wird die Eigenschaft-Wert Paaren. Soll z.B. das Gitternetz der x-Achse gezeigt
Eigenschaft \codeterm{XGrid} auf den Wert \codeterm{'on'} gesetzt: werden, wird die Eigenschaft \code{XGrid} auf den Wert
\code{set(gca, 'XGrid', 'on');}. Das erste Argument ist ein Aufruf der \varcode{'on'} gesetzt: \code[set()!set(gca, 'XGrid',
Funktion \code{gca}, ``get-current-axis'' und ist das Achsenhandle der 'on')]{set(gca, 'XGrid', 'on');}. Das erste Argument ist ein Aufruf
gerade aktiven Achse. der Funktion \code{gca}, \enterm{get-current-axis} und ist das Achsenhandle
der gerade aktiven Achse.
\begin{table}[tp] \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 \begin{tabular*}{1\textwidth}{lp{6.3cm}p{6cm}} \hline
\textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline \textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline
\codeterm{Box} & Definiert, ob der Rahmen der Achse vollst\"andig gezeichnet wird. & $\{'on'|'off'\}$ \\ \code{Box} & Definiert, ob der Rahmen der Achse vollst\"andig gezeichnet wird. & $\{'on'|'off'\}$ \\
\codeterm{Color} & Hintergrundfarbe des Koordinatensystems. & Beliebige RGB, CMYK ... Werte. \\ \code{Color} & Hintergrundfarbe des Koordinatensystems. & Beliebige RGB, CMYK ... Werte. \\
\codeterm{Fontname} & Der Name der Schriftart. & Im System installierte Schriften. \\ \code{Fontname} & Der Name der Schriftart. & Im System installierte Schriften. \\
\codeterm{FontSize} & Gr\"o{\ss}e der Schrift. & Skalarer Wert.\\ \code{FontSize} & Gr\"o{\ss}e der Schrift. & Skalarer Wert.\\
\codeterm{FontUnit} & Einheit, in der die Schriftgr\"o{\ss}e bestimmt wird. & $\{'points' | 'centimeters' | 'inches', ...\}$\\ \code{FontUnit} & Einheit, in der die Schriftgr\"o{\ss}e bestimmt wird. & $\{'points' | 'centimeters' | 'inches', ...\}$\\
\codeterm{FontWeight} & Fett- oder Normalsatz der Schrift. & $\{'normal' | 'bold'\}$\\ \code{FontWeight} & Fett- oder Normalsatz der Schrift. & $\{'normal' | 'bold'\}$\\
% & 'd' \\ ?????? % & 'd' \\ ??????
\codeterm{TickDir} & Richtung der Teilstriche auf der Achse. & $\{'in' | 'out'\}$\\ \code{TickDir} & Richtung der Teilstriche auf der Achse. & $\{'in' | 'out'\}$\\
\codeterm{TickLength} & L\"ange der Haupt- und Nebenteilstriche & \\ \code{TickLength} & L\"ange der Haupt- und Nebenteilstriche & \\
\codeterm{X-, Y-, ZDir} & Richtung der Achsskalierung. & $\{'normal' | 'reversed'\}$\\ \code{X-, Y-, ZDir} & Richtung der Achsskalierung. & $\{'normal' | 'reversed'\}$\\
\codeterm{X-, Y-, ZGrid} & Sollen Gitternetzlinien gezeigt werden? & $\{'off'|'on'\}$ \\ \code{X-, Y-, ZGrid} & Sollen Gitternetzlinien gezeigt werden? & $\{'off'|'on'\}$ \\
\codeterm{X-, Y-, ZScale} & Lineare oder logarithmische Skalierung der Achse. & $\{'linear' | 'log'\}$\\ \code{X-, Y-, ZScale} & Lineare oder logarithmische Skalierung der Achse. & $\{'linear' | 'log'\}$\\
\codeterm{X-, Y-, ZTick} & Position der Teilstriche auf der Achse. & Vektor mit Positionen.\\ \code{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{X-, Y-, ZTickLabel} & Beschriftung der Teilstriche. & Vektor mit entsprechenden Zahlen oder Cell-Array mit Strings.\\ \hline
\end{tabular*} \end{tabular*}
\end{table} \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} \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 \begin{tabular*}{1\textwidth}{lp{6.3cm}p{6cm}} \hline
\textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline \textbf{Eigenschaft} & \textbf{Beschreibung} & \textbf{Optionen} \\ \hline
\codeterm{Color} & Hintergrundfarbe der Zeichenfl\"ache. & Beliebige RGB, CMYK ... Werte. \\ \code{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. \\ \code{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.\\ \code{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'\}$\\ \code{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{Visible} & Hilfreich, wenn ein Plot aus Performanzgr\"unden nicht auf dem Bildschirm gezeigt, sondern direkt gespeichert werden soll. & $\{'on' | 'off'\}$\\ \hline
\end{tabular*} \end{tabular*}
\end{table} \end{table}
Wie die Achse, hat auch das \codeterm{Figure} Element eine Reihe von 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 werden k\"onnen (Tabelle \ref{plotfigureprops} listet die
meistverwendeten). Das erste Argument f\"ur \code{set()} ist jetzt meistverwendeten). Das erste Argument f\"ur \code{set()} ist jetzt
aber eine Handle f\"ur die Abbildung, nicht das 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 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 in Zentimetern definiert wird. In Zeile 16 wird die
Abbildung dann in genau der angegebenen Gr\"o{\ss}e im ``pdf'' Format 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 erstes Argument wieder ein Handle auf die Figure erwartet. Das zweite
Argument ist der Dateiname, und zuletzt muss das gew\"unschte Format Argument ist der Dateiname, und zuletzt muss das gew\"unschte Format
(Box \ref{graphicsformatbox}) angegeben werden. (Box \ref{graphicsformatbox}) angegeben werden.
@ -423,10 +424,10 @@ Homepage viele Beispiele mit zugeh\"origem Code
\end{minipage} \end{minipage}
\hfill \hfill
\begin{minipage}[t]{0.5\textwidth} \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|} \begin{tabular}{|l|c|l|}
\hline \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} \\ pdf & Vektor & \varcode{'pdf'} \rule{0pt}{2.5ex} \\
eps & Vektor & \varcode{'eps'}, \varcode{'epsc'} \\ eps & Vektor & \varcode{'eps'}, \varcode{'epsc'} \\
SVG & Vektor & \varcode{'svg'} \\ SVG & Vektor & \varcode{'svg'} \\

View File

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

View File

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

View File

@ -199,7 +199,7 @@ Dimension die Gr\"o{\ss}e 1 hat.
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 \code{a} beinhalten (Abbildung \ref{vectorfig} B). Die Variable \varcode{a}
enth\"alt im Beispiel in Abbildung \ref{vectorfig} vier ganzzahlige Werte. enth\"alt im Beispiel in Abbildung \ref{vectorfig} vier ganzzahlige Werte.
\begin{figure} \begin{figure}
@ -228,10 +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 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()} werden. \"Ahnliche Information kann \"uber die Funktion \code{size()}
erhalten werden (Listing \ref{arrayListing2}). Im Falle des Vektors 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.}] \begin{lstlisting}[label=arrayListing2, caption={Gr\"o{\ss}e von Vektoren.}]
>> length(a) >> 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 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. 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.). Operator transponiert den Spaltenvektor zu einem Zeilenvektor (Zeilen 14 ff.).
@ -323,7 +323,7 @@ Element gleichzeitig zuzugreifen.
\end{lstlisting} \end{lstlisting}
\begin{exercise}{vectorsize.m}{vectorsize.out} \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 L\"ange 2. Wie k\"onnte man also die Gr\"o{\ss}e von \varcode{a} in der
zweiten Dimension herausfinden? zweiten Dimension herausfinden?
\end{exercise} \end{exercise}
@ -470,14 +470,14 @@ einzelnen Zeilen der Matrize.
Zur Defintion von mehr-dimensionalen Matrizen ist die Notation in Zur Defintion von mehr-dimensionalen Matrizen ist die Notation in
Zeile 1 nicht geeignet. Es gibt allerdings eine Reihe von Zeile 1 nicht geeignet. Es gibt allerdings eine Reihe von
Helferfunktionen, die n-dimensionale Matrizen erstellen k\"onnen Helferfunktionen, die n-dimensionale Matrizen erstellen k\"onnen
(z.B. \code{ones}, Zeile 7). Sollte sich die Notwendigkeit ergeben (z.B. \code{ones()}, Zeile 7). Sollte sich die Notwendigkeit ergeben
mehrdimensionale Matrizen zusammenzuf\"ugen hilft die \code{cat} mehrdimensionale Matrizen zusammenzuf\"ugen hilft die \code{cat()}
Funktion. Funktion.
Um Informationen \"uber die Gr\"o{\ss}e einer Matrize zu bekommen ist 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 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} \begin{figure}
\includegraphics[width=0.9\columnwidth]{matrixIndexing} \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 Matrize auch \emph{linear} angesprochen werden (Abbildung
\ref{matrixlinearindexingfig}). Diese Art der Adressierung ist nicht \ref{matrixlinearindexingfig}). Diese Art der Adressierung ist nicht
so intuitiv verst\"andlich, kann aber sehr hilfreich sein. Der 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., 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 Indizierens z.B. wenn man 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, einem UND verkn\"upft werden und der erste zu falsch ausgewertet wird,
muss der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der muss der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der
``short-circuit'' Versionen spart Rechenzeit. Das auschlie{\ss}ende ODER ``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] \begin{table}[th]
\titlecaption{\label{logicaloperators} \titlecaption{\label{logicaloperators}
@ -935,7 +935,7 @@ end
\begin{exercise}{facultyLoop.m}{facultyLoop.out} \begin{exercise}{facultyLoop.m}{facultyLoop.out}
Wie k\"onnte Fakult\"at mit einer Schleife implementiert werden? Wie k\"onnte Fakult\"at mit einer Schleife implementiert werden?
Implementiere eine \code{for} Schleife, die die Fakul\"at von einer Implementiere eine \code{for} Schleife, die die Fakul\"at von einer
Zahl \code{n} berechnet. Zahl \varcode{n} berechnet.
\end{exercise} \end{exercise}
@ -1254,18 +1254,18 @@ hei{\ss}en soll, (ii) welche Information sie ben\"otigt und (iii)
welche Daten sie zur\"uckliefern soll. welche Daten sie zur\"uckliefern soll.
\begin{enumerate} \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 tut. In diesem Fall berechnet sie einen Sinus. Ein geeigneter Name
w\"are also \code{calculate\_sinewave}. w\"are also \code{calculate\_sinewave()}.
\item \codeterm{Argumente:} die zu brechnende Sinusschwingung sei durch \item \codeterm{Argumente}: die zu brechnende Sinusschwingung sei durch
ihre Frequenz und die Amplitude bestimmt. Des Weiteren soll noch ihre Frequenz und die Amplitude bestimmt. Des Weiteren soll noch
festgelegt werden, wie lang der Sinus sein soll und mit welcher festgelegt werden, wie lang der Sinus sein soll und mit welcher
zeitlichen Aufl\"osung gerechnet werden soll. Es werden also vier zeitlichen Aufl\"osung gerechnet werden soll. Es werden also vier
Argumente ben\"otigt, sie k\"onnten hei{\ss}en: \code{amplitude}, Argumente ben\"otigt, sie k\"onnten hei{\ss}en: \varcode{varamplitude},
\code{frequency}, \code{t\_max}, \code{t\_step}. \varcode{frequency}, \varcode{t\_max}, \varcode{t\_step}.
\item \codeterm{R\"uckgabewerte:} Um den Sinus korrekt darstellen zu k\"onnen brauchen wir die \item \codeterm{R\"uckgabewerte}: Um den Sinus korrekt darstellen zu k\"onnen brauchen wir die
Zeitachse und die entsprechenden Werte. Es werden also zwei Zeitachse und die entsprechenden Werte. Es werden also zwei
Variablen zur\"uckgegeben: \code{time, sine} Variablen zur\"uckgegeben: \varcode{time}, \varcode{sine}
\end{enumerate} \end{enumerate}
Mit dieser Information ist es nun gut m\"oglich die Funktion zu Mit dieser Information ist es nun gut m\"oglich die Funktion zu
implementieren (Listing \ref{sinefunctionlisting}). 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 Diese Aufgabe kann auch von einer Funktion \"ubernommen werden. Diese
Funktion hat keine andere Aufgabe, als die Daten zu plotten. Ihr Name Funktion hat keine andere Aufgabe, als die Daten zu plotten. Ihr Name
sollte sich an dieser Aufgabe orientieren 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 werden im Wesentlichen die x-Werte und die zugeh\"origen y-Werte
ben\"otigt. Da mehrere Sinus geplottet werden sollen ist es auch ben\"otigt. Da mehrere Sinus geplottet werden sollen ist es auch
sinnvoll eine Zeichenkette f\"ur die Legende an die Funktion zu sinnvoll eine Zeichenkette f\"ur die Legende an die Funktion zu

View File

@ -5,7 +5,7 @@
\lstset{inputpath=../code} \lstset{inputpath=../code}
\graphicspath{{figures/}} \graphicspath{{figures/}}
\setcounter{page}{55} \setcounter{page}{57}
\setcounter{chapter}{2} \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: Benennung der in \matlab{} vordefinierten Funktionen gewissen Mustern:
\begin{itemize} \begin{itemize}
\item Namen werden immer klein geschrieben. \item Namen werden immer klein geschrieben.
\item Es werden gerne Abk\"urzungen eingesetzt (z.B. \code{xcorr} \item Es werden gerne Abk\"urzungen eingesetzt (z.B. \code{xcorr()}
f\"ur die Kreuzkorrelation oder \code{repmat} f\"ur ``repeat matrix'') f\"ur die Kreuzkorrelation oder \code{repmat()} f\"ur ``repeat matrix'')
\item Funktionen, die zwischen Formaten konvertieren sind immer nach \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 Konvertierung ``number to string'', Umwandlung eines numerischen
Wertes in einen Text) benannt. Wertes in einen Text) benannt.
\end{itemize} \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, sollten die Namen von Variablen ihren Inhalt
beschreiben. Eine Variable, die die mittlere Anzahl von beschreiben. Eine Variable, die die mittlere Anzahl von
Aktionspotentialen speichert, k\"onnte also 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 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}, Die Laufvariablen von \code{for}-Schleifen werden oft nur \varcode{i},
\varcode{j} oder \varcode{k} benannt und sollten aber die einzige Ausnahme \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] \begin{important}[Benennung von Variablen]
Die Namen von Variablen sollten m\"oglichst viel \"uber ihren Inhalt 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. f\"ur Variablen sind die beste Dokumentation.
\end{important} \end{important}
@ -248,7 +248,7 @@ Kommentarzeilen werden in \matlab{} mit dem Prozentzeichen \code{\%}
gekennzeichnet. Gezielt und sparsam eingesetzte Kommentare sind f\"ur gekennzeichnet. Gezielt und sparsam eingesetzte Kommentare sind f\"ur
das Verst\"andnis eines Programms sehr n\"utzlich. Am wichtigsten das Verst\"andnis eines Programms sehr n\"utzlich. Am wichtigsten
sind kurze Kommentare, die den Zweck und das Ziel eines Abschnitts im 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}). trials}).
Viele und h\"aufige Kommentare k\"onnen in der Entwicklungsphase eines 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 Die beste Dokumentation ist der Code selbst. Gut geschriebener Code
mit ausdrucksstarken Variablen- und Funktionsnamen ben\"otigt keine mit ausdrucksstarken Variablen- und Funktionsnamen ben\"otigt keine
Kommentare, um den Zweck einzelner Zeilen zu erkl\"aren. z.B. ist\\ 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. ein v\"ollig unn\"otiger Kommentar.
\begin{important}[Verwendung von Kommentaren] \begin{important}[Verwendung von Kommentaren]
@ -333,10 +333,10 @@ lokale Funktion.
Lokale Funktionen existieren in der gleichen Datei und sind nur dort Lokale Funktionen existieren in der gleichen Datei und sind nur dort
verf\"ugbar. Jede Funktion hat ihren eigenen G\"ultigkeitsbereich, das verf\"ugbar. Jede Funktion hat ihren eigenen G\"ultigkeitsbereich, das
hei{\ss}t, dass Variablen aus den aufrufenden Funktionen nicht 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 ist das anders. Diese werden innerhalb eines Funktionsk\"orpers
(zwischen den Schl\"usselworten \codeterm{function} und dem (zwischen den Schl\"usselworten \code{function} und dem
\codeterm{end} definiert und k\"onnen auf alle Variablen der \code{end} definiert und k\"onnen auf alle Variablen der
``Mutterfunktion'' zugreifen und diese auch ver\"andern. Folglich ``Mutterfunktion'' zugreifen und diese auch ver\"andern. Folglich
sollten sie nur mit Bedacht eingesetzt werden. sollten sie nur mit Bedacht eingesetzt werden.

View File

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

View File

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

View File

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

View File

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