\documentclass[12pt,a4paper,pdftex]{exam}

\usepackage[german]{babel}
\usepackage{pslatex}
\usepackage[mediumspace,mediumqspace,Gray]{SIunits}      % \ohm, \micro
\usepackage{xcolor}
\usepackage{graphicx}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}

%%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\ifprintanswers
\newcommand{\stitle}{L\"osungen}
\else
\newcommand{\stitle}{\"Ubung}
\fi
\header{{\bfseries\large \stitle}}{{\bfseries\large Punktprozesse}}{{\bfseries\large 27. Oktober, 2015}}
\firstpagefooter{Prof. Dr. Jan Benda}{Phone: 29 74573}{Email:
jan.benda@uni-tuebingen.de}
\runningfooter{}{\thepage}{}

\setlength{\baselineskip}{15pt}
\setlength{\parindent}{0.0cm}
\setlength{\parskip}{0.3cm}
\renewcommand{\baselinestretch}{1.15}

%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{listings}
\lstset{
  language=Matlab,
  basicstyle=\ttfamily\footnotesize,
  numbers=left,
  numberstyle=\tiny,
  title=\lstname,
  showstringspaces=false,
  commentstyle=\itshape\color{darkgray},
  breaklines=true,
  breakautoindent=true,
  columns=flexible,
  frame=single,
  xleftmargin=1em,
  xrightmargin=1em,
  aboveskip=10pt
}

%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{bm} 
\usepackage{dsfont}
\newcommand{\naZ}{\mathds{N}}
\newcommand{\gaZ}{\mathds{Z}}
\newcommand{\raZ}{\mathds{Q}}
\newcommand{\reZ}{\mathds{R}}
\newcommand{\reZp}{\mathds{R^+}}
\newcommand{\reZpN}{\mathds{R^+_0}}
\newcommand{\koZ}{\mathds{C}}

%%%%% page breaks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\continue}{\ifprintanswers%
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\continuepage}{\ifprintanswers%
\newpage
\else
\vfill\hspace*{\fill}$\rightarrow$\newpage%
\fi}
\newcommand{\newsolutionpage}{\ifprintanswers%
\newpage%
\else
\fi}

%%%%% new commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\qt}[1]{\textbf{#1}\\}
\newcommand{\pref}[1]{(\ref{#1})}
\newcommand{\extra}{--- Zusatzaufgabe ---\ \mbox{}}
\newcommand{\code}[1]{\texttt{#1}}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\input{instructions}


\begin{questions}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  \question \qt{Statistik von Spiketrains}
  In Ilias findet ihr die Dateien \code{poisson.mat},
  \code{pifou.mat}, und \code{lifadapt.mat}.  Jede dieser Dateien
  enth\"alt mehrere Trials von Spiketrains von einer bestimmten Art
  von Neuron. Die Spikezeiten sind in Sekunden gemessen.

  Mit den folgenden Aufgaben wollen wir die Statistik der Spiketrains
  der drei Neurone miteinander vergleichen.
  \begin{parts}
    \part Lade die Spiketrains aus den drei Dateien. Achte darauf, dass sie verschiedene
    Variablen\-namen bekommen.
    \begin{solution}
      \begin{lstlisting}
        clear all
        % not so good:
        load poisson.mat
        whos
        poissonspikes = spikes;
        load pifou.mat;
        pifouspikes = spikes;
        load lifadapt.mat;
        lifadaptspikes = spikes;
        clear spikes;
        % better:
        clear all
        x = load( 'poisson.mat' );
        poissonspikes = x.spikes;
        x = load( pifou.mat' );
        pifouspikes = x.spikes;
        x = load( 'lifadapt.mat' );
        lifadaptspikes = x.spikes;
      \end{lstlisting}
    \end{solution}
    
    \part Schreibe eine Funktion, die die Spikezeiten der ersten
    $t_{max}$ Sekunden in einem Rasterplot visualisiert.  In jeder
    Zeile des Rasterplots wird ein Spiketrain dargestellt. Jeder
    einzelne Spike wird als senkrechte Linie zu der Zeit des
    Auftretens des Spikes geplottet. Benutze die Funktion, um die
    Spikeraster der ersten 1\,s der drei Neurone nebeneinander zu plotten.
    \begin{solution}
      \lstinputlisting{../code/spikeraster.m}
      \lstinputlisting{../code/plotspikeraster.m}
      \mbox{}\\[-3ex]
      \colorbox{white}{\includegraphics[width=1\textwidth]{spikeraster}}
    \end{solution}
  
    \part Schreibe eine Funktion, die einen einzigen Vektor mit den
    Interspikeintervallen aller Trials von Spikezeiten zur\"uckgibt.
    \begin{solution}
      \lstinputlisting{../code/isis.m}
    \end{solution}
    
    \part Schreibe eine Funktion, die ein normiertes Histogramm aus
    einem Vektor von Interspikeintervallen, gegeben in Sekunden,
    berechnet und dieses mit richtiger Achsenbeschriftung plottet.
    Die Interspikeintervalle sollen dabei in Millisekunden angegeben
    werden. Die Funktion soll zus\"atzlich den Mittelwert, die
    Standardabweichung, und den Variationskoeffizienten der
    Interspikeintervalle berechnen und diese im Plot mit angeben.
    
    Benutze die vorherige und diese Funktion, um die
    Interspikeintervall Verteilung der drei Neurone zu vergleichen.
    \begin{solution}
      \lstinputlisting{../code/isihist.m}
      \lstinputlisting{../code/plotisih.m}
      \mbox{}\\[-3ex]
      \colorbox{white}{\includegraphics[width=1\textwidth]{isihist}}
    \end{solution}
  
    \part Schreibe eine Funktion, die die seriellen Korrelationen der
    Interspikeintervalle f\"ur Lags bis zu \code{maxlag} berechnet und
    plottet.  Die Seriellen Korrelationen $\rho_k$ f\"ur Lag $k$ der
    Interspikeintervalle $T_i$ sind die Korrelationskoeffizienten
    zwischen den Interspikeintervallen $T_i$ und den um das Lag $k$
    verschobenen Intervallen $T_{i+k}$:
    \[ \rho_k = \frac{\langle (T_{i+k} - \langle T \rangle)(T_i -
      \langle T \rangle) \rangle}{\langle (T_i - \langle T
      \rangle)^2\rangle} = \frac{{\rm cov}(T_{i+k}, T_i)}{{\rm
        var}(T_i)} = {\rm corr}(T_{i+k}, T_i) \] 

    Benutze diese Funktion, um die Interspikeintervall-Korrelationen
    der drei Neurone zu vergleichen.
    \begin{solution}
      \lstinputlisting{../code/isiserialcorr.m}
      \lstinputlisting{../code/plotserialcorr.m}
      \colorbox{white}{\includegraphics[width=1\textwidth]{serialcorr}}
    \end{solution}
  
    \part Schreibe eine Funktion, die aus Spikezeiten
    Histogramme aus der Anzahl von Spikes, die in Fenstern gegebener L\"ange $W$
    gez\"ahlt werden, erzeugt und plottet.

    Wende diese Funktion auf die drei
    Datens\"atze an. Probiere verschiedene Fenstergr\"o{\ss}en $W$ aus.
    \begin{solution}
      \lstinputlisting{../code/counthist.m}
      \lstinputlisting{../code/plotcounthist.m}
      \colorbox{white}{\includegraphics[width=1\textwidth]{counthist}}
    \end{solution}

    
  \end{parts}
  
\end{questions}

\end{document}