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

\usepackage[german]{babel}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage[small]{caption}
\usepackage{sidecap}
\usepackage{pslatex}
\usepackage{amsmath}
\usepackage{amssymb}
\setlength{\marginparwidth}{2cm}
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}

%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
\pagestyle{headandfoot}
\header{{\bfseries\large Exercise 5}}{{\bfseries\large Control Flow}}{{\bfseries\large 05. November, 2019}}
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
  jan.grewe@uni-tuebingen.de}
\runningfooter{}{\thepage}{}

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

\newcommand{\code}[1]{\texttt{#1}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
\begin{document}
\vspace*{-6.5ex}

\begin{center}
  \textbf{\Large Introduction to scientific computing}\\[1ex]
  {\large Jan Grewe, Jan Benda}\\[-3ex]
  Neuroethologie \hfill --- \hfill Institute for Neurobiology \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
\end{center}

The exercises are meant for self-monitoring and revision of the
lecture. You should try to solve them on your own. Your solution
should be submitted as a single script (m-file) in the Ilias
system. Each task should be solved in its own ``cell''. Each cell must
be executable on its own. The file should be named according to the
following pattern: ``variables\_datatypes\_\{lastname\}.m''
(e.g. variables\_datentypes\_mueller.m).

\begin{questions}
  \question Implement \code{for} loops in which the  \emph{running variable}:
  \begin{parts}
    \part ... assumes values from 0 to 10. Print (\code{disp}) the value of the running variable for each iteration step.
    \begin{solution}
      for i = 1:10 disp(i); end;
    \end{solution}
    \part ... assumes values from 10 to 0. Print out the value for each iteration.
    \part ... assumes values from 0 to 1 in steps of 0.1. Print out the value for each iteration.
  \end{parts}

  \question Indexing in vectors:
  \begin{parts}
    \part Define a vector \code{x} that contains values ranging from 101 to 200 in steps of 1.
    \part Use a \code{for} loop to print each element of \code{x}. Use the running variable for the indexing.
    \begin{solution}
      \code{for i = 1:length(x); disp(x(i)); end}
    \end{solution}
    \part Do the same without using the running variable directly (not for indexing).
    \begin{solution}
      \code{for i : x; disp(i); end;}
    \end{solution}
  \end{parts}

  \question Create a vector \verb+x+ that contains 50 random numbers in the value range 0 - 10.
  \begin{parts}
    \part Use a loop to calculate the arithmetic mean. The mean is defined as:
    $\overline{x}=\frac{1}{n}\sum\limits_{i=0}^{n}x_i $.
    \part Use a loop to estimate the standard deviation:
    $\sigma=\sqrt{\frac{1}{n}\sum\limits_{i=0}^{n}(x_i-\overline{x})^2}$).
    \part Search the MATLAB help for functions that do the calculations for you :-).
  \end{parts}

  \question Implement a \code{while} loop
  \begin{parts}
    \part ... that iterates 100 times. Print out the current iteration number.
    \part ... iterates endlessly. You can interrupt the execution with the command \code{Strg + C}.
  \end{parts}

  \question Use an endless \code{while} loop to individually display the elements of a vector that contains 10 elements. Stop the execution after all elements have been displayed on the command line.

  \question Use the endless \verb+while+ loop to draw random numbers
  (\verb+randn+) until you hit one that is larger than 1.33.
  \begin{parts}
    \part Count the number of required iterations.
    \part Use a \code{for} loop to run the previous test 1000 times. Store all counts and calculate the mean of it.
    \part Create a plot that shows for each of the 1000 trials, how often you had to draw.
    \part Play around with the threshold. What happens?
  \end{parts}

  \question Create a vector \verb+x+ that contains 10 random numbers in the range 0:10.
  \begin{parts}
    \part Use a \code{for} loop to delete all those elements 
    (\code{x(index) = [];}) that are smaller than 5.
    \part Delete all elements that are smaller than  5 and larger than 2.
    \part Can you do the same without a loop?
  \end{parts}

  \question Test the random number generator! To do so count the
  number of elements that fall into the classes defined by the edges
  [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]. Store the results in a vector. Use a
  loop to draw 1000 random numbers with \verb+rand()+ (see help). What
  would be the expectation? What is the result?

  \question String parsing: It is quite common to use the names of datasets to encode the conditions under which they were recorded. To find out the required information we have to \emph{parse} the name.
  \begin{parts}
    \part Create a variable
    \verb+filename = '2015-10-12_100Hz_1.25V.dat'+. Obviously, the
    underscore was used as a delimiter.
    \part Use a \verb+for+ loop to find the positions of the underscores and store these in a vector.
    \part Use a second loop to iterate over the previously filled `position' vector and use this information to
    cut \verb+filename+ appropriately.
    \part Print out the individual parts.
  \end{parts}

\end{questions}

\end{document}
