\documentclass{beamer}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{pgf}
%\usepackage{pgf,pgfarrows,pgfnodes,pgfautomata,pgfheaps,pgfshade} 
%\usepackage{multimedia}

\usepackage[english]{babel}
\usepackage{movie15}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage{amsmath}
\usepackage{bm} 
\usepackage[T1]{fontenc}
\usepackage[scaled=.90]{helvet}
\usepackage{scalefnt}
\usepackage{tikz}
\usepackage{ textcomp }
\usepackage{soul}
\usepackage{hyperref}
\definecolor{lightblue}{rgb}{.7,.7,1.}
\definecolor{mygreen}{rgb}{0,1.,0}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\mode<presentation>
{
  \usetheme{Singapore}
  \setbeamercovered{opaque}
  \usecolortheme{tuebingen}
  \setbeamertemplate{navigation symbols}{}
  \usefonttheme{default}
  \useoutertheme{infolines}
  % \useoutertheme{miniframes}
}

\AtBeginSection[]
{
  \begin{frame}<beamer>
    \begin{center}
      \Huge \insertsectionhead
    \end{center}
    % \frametitle{\insertsectionhead}
    % \tableofcontents[currentsection,hideothersubsections]
  \end{frame}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5

\setbeamertemplate{blocks}[rounded][shadow=true]

\title[]{Scientific Computing -- Grundlagen der Programmierung }
\author[]{Jan Grewe\\Abteilung f\"ur Neuroethologie\\
  Universit\"at T\"ubingen}

\institute[Wissenschaftliche Datenverarbeitung]{}
 \date{12.10.2015 - 06.11.2015}
 %\logo{\pgfuseimage{../../resources/UT_BM_Rot_RGB.pdf}}

\subject{Einf\"uhrung in wissenschaftliche Datenverarbeitung}

\titlegraphic{
  \includegraphics[width=0.5\linewidth]{../../resources/UT_WBMW_Rot_RGB}
}
%%%%%%%%%% configuration for code
\lstset{
 basicstyle=\ttfamily,
 numbers=left,
 showstringspaces=false,
 language=Matlab,
 commentstyle=\itshape\color{darkgray},
 keywordstyle=\color{blue},
 stringstyle=\color{green},
 backgroundcolor=\color{blue!10},
 breaklines=true,
 breakautoindent=true,
 columns=flexible,
 frame=single,
 captionpos=b,
 xleftmargin=1em,
 xrightmargin=1em,
 aboveskip=10pt
 }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\mycite}[1]{
\begin{flushright}
\tiny \color{black!80} #1
\end{flushright}
}

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

\input{../../latex/environments.tex}
\makeatother
 
\begin{document} 

\begin{frame}[plain]
  \frametitle{}
  \vspace{-1cm}
  \titlepage % erzeugt Titelseite
\end{frame}

\begin{frame}[plain]
  \huge{2. Vektoren und Matrizen}
\end{frame}

\begin{frame}
  \frametitle{Vektoren und Matrizen}
  \framesubtitle{Skalare vs. Vektoren}
  \begin{figure}
    \centering
    \includegraphics[width=0.8\columnwidth]{./images/scalarArray.pdf}
  \end{figure}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren und Matrizen}
  \framesubtitle{Erzeugen von Vektoren}
  \tiny
  \begin{lstlisting}[label=arrayListing1]
>> a = [0 1 2 3 4 5 6 7 8 9] % Erstellen eines Zeilenvektors
   a =
    0  1   2   3   4   5   6   7   8   9
>>
>> b = (0:9) % etwas bequemer
   b = 
    0  1   2   3   4   5   6   7   8   9
>>
>> c = (0:2:10)                   
   c = 
    0  2  4  6  8  10
  \end{lstlisting}
\end{frame}

\begin{frame}[fragile]
 \frametitle{Vektoren und Matrizen}
 \framesubtitle{Spalten \& Zeilenvektoren}
 \tiny
 \begin{lstlisting}[label=arrayListing2]
>> a = [1 2 3 4 5 6 7 8 9 10] % Erstellen eines Zeilenvektors
   a =
     1 2 3 4 5 6 7 8 9 10
>>
>> b = [1; 2; 3; 4; 5] % Erstellen eines Spaltenvectors
   b =
     1
     2
     3 
     4
     5
>>
>> b = b' % Transponieren
   b =
     1 2 3 4 5
>>
 \end{lstlisting}
\end{frame}

\begin{frame}
  \frametitle{Vektoren}
  \framesubtitle{Zugriff auf Inhalte von Vektoren}
  \begin{figure}
    \centering
    \includegraphics[width=0.8\columnwidth]{./images/arrayIndexing.pdf}
  \end{figure}
  \pause
  Der Zugriff auf die Inhalte eines Vektors erfolgt \"uber den Index.\\
  \textbf{Achtung!} Der erste Index ist die 1.
\end{frame}

\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Zugriff auf Inhalte von Vektoren}
  \vspace{-0.5cm}
\tiny
\begin{lstlisting}
>> a = (11:20);
>> a(1) % das 1. Element
   ans = 
       11
>>
>> a(5) % das 5. Element
   ans = 
       15
>>
>> a(end) % das letzte Element
   ans =
       20
>>
\end{lstlisting}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Zugriff auf Inhalte von Vektoren}
  \vspace{-0.5cm}
\tiny
\begin{lstlisting}
>> a([1 3 5]) % das 1., 3. und 5. Element
   ans =
       11  13  15
>>
>> a(2:4) % alle element von Index 2 bis 4
   ans =
       12  13  14 
>>
>> a(1:2:end) %retrieve every second element
>> and =
>>      11  13  15  17  19
>> 
\end{lstlisting}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Grundlegende Operationen}
  \vspace{-0.25cm}
  \tiny
  \begin{lstlisting}[label=arrayListing4]
>> a = (0:2:8);
>> a + 5 % addiere einen Skalar
   ans =
       5  7  9  11  13
>>
>>  a * 2 % Multiplication
   ans =
       0  4  8  12  16
>>
>> a / 2 % Division
   ans =
       0  1  2  3  4
>>		
>> a(1:3) + a(2:4) % Addieren von 2 Vektoren
   ans = 
       2  6  10
>>
>> a(1:2) + a(2:4) % Vektoren muessen gleich gross sein!
    ??? Error using ==> plus
    Matrix dimensions must agree.
  \end{lstlisting}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Grundlegende Operationen}
  \vspace{-0.25cm}
  \tiny
  Wie bekomme ich Informationen \"uber einen Vektor?
  \begin{lstlisting}
>> a = (0:2:8);
>> % die Laenge eines
>> length(a)
   ans = 
       5
>> 
>> size(a)
   ans =
      1   5
>>		
  \end{lstlisting}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Grundlegende Operationen}
  \vspace{-0.25cm}
  L\"oschen von Elementen:
  \tiny
  \begin{lstlisting}
>> a = (0:2:8);
>> length(a)
   ans = 
       5
>> 
>> a(1) = [] % loesche das erste Element
   a =
       2  4  6  8
>> a([1 3]) = []
   a = 
       4  8
>> length(a) 
   ans =
       2
  \end{lstlisting}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Grundlegende Operationen}
  \vspace{-0.25cm}
  \tiny
  Verkettung von Vektoren:
  \begin{lstlisting}
>> a = (0:2:8);
>> b = (10:2:19);
>> 
>> c = [a b] % erstelle einen Vektor aus einer Liste von Vektoren
   c =
       0     2     4     6     8    10    12    14    16    18
>> length(c) 
   ans = 
       10
>> length(a) + length(b) 
   ans =
       10
  \end{lstlisting}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Vektoren}
  \framesubtitle{Einfache graphische Darstellung von Vektoren}
  \begin{enumerate}
  \item Aufr\"aumen: Erstellt ein neues Skript; L\"oschen aller
    Variablen; L\"oschen des Command Windows.\pause
  \item Erzeugen eines Vektors, der die Zeit repr\"asentiert (0 bis 10
    $\times$ $\pi$ mit 0.05 Schrittweite).
  \item Berechnung eines Sinus mit bliebiger Amplitude und Frequenz.
  \item Plotten des Sinus als Funktion der Zeit.    
  \end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{Vektoren}
  \framesubtitle{Datentypen sind wichtig.}
  Einlesen von Bin\"ardaten aus einer Datei
  \begin{enumerate}
  \item Aufr\"aumen des Workspaces, des Command Windows und \"offnen eines neuen Skripts.
  \item Auf ILIAS liegen die folgenden Dates\"atze: signal.bin, time.bin
  \end{enumerate}
  \begin{itemize}
  \item \"Offnen der Datei: \code{f = fopen('signal.bin');}
  \item Lesen des Inhalts: \code{signal = fread(f);}
  \item Schlie{\ss}en der Datei: \code{fclose(f);}
  \item Plottet das signal. Sieht das plausibel aus?
  \item Welchen Datentype nimmt MATLAB per default an (Hilfe fread)?
  \item Versucht einen anderen Datentyp.
  \item Wie viele Werte werden eingelesen? Sieht der Plot sinnvoll aus?
  \end{itemize}  
\end{frame}

\begin{frame}
  \frametitle{Vektoren}
  \framesubtitle{Einlesen von unterschiedlichen Bin\"ardaten aus einer Datei} 

  \textbf{Szenario:} Es werden elektrophysiologische Messungen
  gemacht. Die Daten werden mit einer Messkarte digitalisiert. Diese
  hat ein 16 Bit Aufl\"osung f\"ur den Spannungsbereich $\pm$ 10\,V.
  
  \begin{enumerate}
  \item In welchem Datentyp sollten die Daten abgelegt werden, um
    m\"oglichst Speichereffizient zu sein?
  \item Lest den Datensatz signal2.bin ein und plottet die Daten.
  \item Wandelt mit dem Wissen \"uber die Aufl\"osung und den
    Wertebereich die Daten in Spannungen um.
  \end{enumerate}
\end{frame}


\begin{frame}{Matrizen}
  \vspace{-0.5cm}
  \begin{figure}
    \centering
    \includegraphics[width=0.65\columnwidth]{./images/matrices}
  \end{figure}
\end{frame}



\begin{frame}[fragile]
  \frametitle{Matrizen}
  \framesubtitle{Erzeugen von Matrizen}
  \tiny
  \begin{lstlisting}
>> a = [1 2 3; 4 5 6; 7 8 9] 
>> a =
       1  2  3
       4  5  6
       7  8  9
>>
>>  
>> b = ones(3,3,2); 
>> b
	
   b(:,:,1) =
       1   1   1
       1   1   1
       1   1   1
  
   b(:,:,2) =
       1   1   1
       1   1   1
       1   1   1
  \end{lstlisting}
\end{frame}


\begin{frame}
  \frametitle{Matrizen}
  \framesubtitle{Indexierung und Zugriff auf Inhalte}
  \vspace{-0.5cm}
  \begin{figure}
    \centering
    \includegraphics[width=0.9\columnwidth]{./images/matrixIndexing}
  \end{figure}	
\end{frame}

\begin{frame}[fragile]
  \frametitle{Matrizen}
  \framesubtitle{Indexierung}
\tiny
\begin{lstlisting}
>> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen
>> 
>> x(1,1,1); % obere linke Ecke
  ans(1,1,1) = 
     14
  >>
  >> x(1,1,:) % obere linke Ecke entlang der 3. Dimension
  ans(1,1,:) = 
    14
  ans(:,:,2) =
    58
  ans(:,:,3) =
     4
  ans(:,:,4) =
    93
  ans(:,:,5) =
    56 
  >>
\end{lstlisting}
\end{frame}

\begin{frame}
  \frametitle{Matrizen}
  \framesubtitle{Lineare Indexierung}
  
  Alternativ zum ``subscript indexing'' koennen die Elemente von
  Matrizen auch linear addressiert werden.
  \begin{figure}
    \centering
    \includegraphics[width=0.75\columnwidth]{./images/matrixLinearIndexing}
  \end{figure}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Matrizen}
  \framesubtitle{Grundlegende Operationen}
  \vspace{-0.5 cm}
  \tiny
\begin{lstlisting}
>> A = randi(10, [3, 3]) % 2-D Matrix 
   A = 
     3     8     2
     2    10     3
    10     7     1
>> B = randi(10, [3, 3]) % dto
   B = 
     2     1     7
     1     5     9
     5    10     5
>> 
>> A*B % Matrix Multiplikation
   ans = 
      24    63   103
      29    82   119
      32    55   138
>>
>> A.*B % Elementweise Multiplikation
   ans = 
      6     8    14
      2    50    27
     50    70     5
>>
\end{lstlisting}
\end{frame}

\begin{frame}[plain]
\huge{Interludium: Matrixmultiplikation}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Matrizen}
  \framesubtitle{Real World Problem}
  \begin{figure}
  \includegraphics[width=0.7\columnwidth]{./images/imaging.png}
  \end{figure}
  \begin{itemize}
  \item Calcium Imaging vom Metathorakalganglion der
    Laubheuschrecke. Stimulation mit auditorischem Stimulus.
    \begin{enumerate}
    \item Lade den Datensatz \textit{imaging.mat} in den
      workspace. Hierin enthalten sind vier $\Delta F/F$ Bilder, die
      vor, w\"ahrend und nach der Stimulation aufgenommen wurden.
    \item Benutze \code{imshow} um eines der Bilder anzuzeigen.
    \item Berechne den Mittelwert \"uber die Zeilen und plotte diesen
      f\"ur die 4 Zeitpunkte in einen Plot.
    \item F\"uge eine geeignete Legende hinzu.
    \end{enumerate}
  \end{itemize}
\end{frame}

\end{document}