Improved indices. Added optional parameter for index to *term* macros.
This commit is contained in:
parent
3d4d778bdd
commit
993ab5d8e7
2
Makefile
2
Makefile
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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');
|
||||||
|
15
header.tex
15
header.tex
@ -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}{}
|
||||||
|
@ -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,
|
||||||
|
@ -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'} \\
|
||||||
|
@ -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}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
@ -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}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -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}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
@ -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
|
||||||
|
@ -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}
|
||||||
|
@ -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}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user