\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}
\usepackage{multirow}
\definecolor{lightblue}{rgb}{.7,.7,1.}
\definecolor{mygreen}{rgb}{0.2,0.7,0.2}
\definecolor{myred}{rgb}{1.,0,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}
  \frametitle{Rekapitulation}
  \framesubtitle{Variablen und Datentypen}
  \huge{Was war das nochmal?} 
\end{frame}

\begin{frame}
  \frametitle{Rekapitulation}
  \framesubtitle{Vektoren}
  \huge{Schon einmal geh\"ort?} 
\end{frame}

\begin{frame}
  \frametitle{Rekapitulation}
  \framesubtitle{Matrizen}
  \huge{Hmm?}
\end{frame}

\begin{frame}[plain]
  \huge{3. Boolesche Ausdr\"ucke}
\end{frame}

\begin{frame}
  \frametitle{Boolesche Ausdr\"ucke} 
  \framesubtitle{Was ist das?}
  \begin{itemize}
  \item Boolesche Ausdr\"ucke lassen sich zu \textit{Wahr} oder
    \textit{Falsch} auswerten.
  \item z.B. \textbf{A GR\"OSSER B}, \textbf{A GLEICH B}.
  \item Die Beziehung zwischen zwei Entit\"aten wird mit
    \textit{relationalen Operatoren} gepr\"uft.
  \item Boolesche Ausdr\"ucke k\"onnen \"uber \textit{logische
      Operatoren} verkn\"upft werden. z.B.: \textbf{A UND
      B} ist nur dann wahr, wenn beide wahr sind.
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Boolesche Ausdr\"ucke}
  \framesubtitle{Logische Operatoren}
  \begin{table}[]
    \centering
    \caption{Logisches UND}
    \begin{tabular}{llll}
      \multicolumn{2}{l}{\multirow{2}{*}{}}            & \multicolumn{2}{c}{\textbf{B}}      \\
      \multicolumn{2}{l}{}                             & \multicolumn{1}{|c|}{wahr} & falsch \\ \cline{2-4} 
      \multirow{2}{*}{\textbf{A}} & \multicolumn{1}{l|}{wahr}   & \multicolumn{1}{c|}{\textcolor{mygreen}{wahr}}     &  \textcolor{red}{falsch}      \\ \cline{2-4} 
      & \multicolumn{1}{l|}{falsch} & \multicolumn{1}{l|}{\textcolor{red}{falsch}}     & \textcolor{red}{falsch}      
    \end{tabular}
  \end{table}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Boolesche Ausdr\"ucke}
  \framesubtitle{Logische Operatoren}
  \begin{table}[]
    \centering
    \caption{Logisches ODER}
    \begin{tabular}{llll}
      \multicolumn{2}{l}{\multirow{2}{*}{}}            & \multicolumn{2}{c}{\textbf{B}}      \\
      \multicolumn{2}{l}{}                             & \multicolumn{1}{|c|}{wahr} & falsch \\ \cline{2-4} 
      \multirow{2}{*}{\textbf{A}} & \multicolumn{1}{l|}{wahr}   & \multicolumn{1}{c|}{\textcolor{mygreen}{wahr}}     &  \textcolor{mygreen}{wahr}      \\ \cline{2-4} 
      & \multicolumn{1}{l|}{falsch} & \multicolumn{1}{l|}{\textcolor{mygreen}{wahr}}     & \textcolor{red}{falsch}      
    \end{tabular}
  \end{table}
\end{frame}


\begin{frame}
  \frametitle{Boolesche Ausdr\"ucke}
  \framesubtitle{Auf Mengen angewendet\footnote[frame]{Zeichnungen geklaut bei Cornelia M\"uhlich, Uni-Jena}}
  
  \only<1> {
    \begin{figure}
      \centering
      \includegraphics[width=0.75\columnwidth]{./images/grundmenge}
    \end{figure}
  }
  \only<2> {
    \begin{figure}
      \centering
      \includegraphics[height=0.65\textheight]{./images/beete}
    \end{figure}
  }
  \only<3> {
    \begin {columns}
      \begin{column}{2cm}
        \vspace{-4cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/beetA}
        \end{figure}
      \end{column}
      \begin{column}{5cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/AvB}
        \end{figure}
      \end{column}
      \begin{column}{2cm}
        \vspace{-4cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/beetB}
        \end{figure}
      \end{column}
    \end{columns}
  }
  \only<4> {
    \begin {columns}
      \begin{column}{2cm}
        \vspace{-4cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/beetA}
        \end{figure}
      \end{column}
      \begin{column}{5cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/AundB}
        \end{figure}
      \end{column}
      \begin{column}{2cm}
        \vspace{-4cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/beetB}
        \end{figure}
      \end{column}
    \end{columns}
  }
  \only<5> {
    \begin {columns}
      \begin{column}{2cm}
        \vspace{-4cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/beetA}
        \end{figure}
      \end{column}
      \begin{column}{5cm}
        \begin{figure}  
          \includegraphics[width=0.95\columnwidth]{./images/AnotB}
        \end{figure}
      \end{column}
      \begin{column}{2cm}
        \vspace{-4cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/beetB}
        \end{figure}
      \end{column}
    \end{columns}
  }
  \only<6> {
    \begin {columns}
      \begin{column}{2cm}
        \vspace{-4cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/beetA}
        \end{figure}
      \end{column}
      \begin{column}{5cm}
        \begin{figure}  
          \includegraphics[width=0.95\columnwidth]{./images/AxorB}
        \end{figure}
      \end{column}
      \begin{column}{2cm}
        \vspace{-4cm}
        \begin{figure}  
          \includegraphics[width=\columnwidth]{./images/beetB}
        \end{figure}
      \end{column}
    \end{columns}
  }
\end{frame}

\begin{frame}[fragile]
  \frametitle{Boolesche Ausdr\"ucke}
  \framesubtitle{Logische Operatoren}
  \begin{table}[th]
    \caption{\label{logicalOperatorsTab}
      \textbf{Logical operators.}}
    \begin{center}
      \begin{tabular}{c|c}
        \hline
        \textbf{Operator} & \textbf{Beschreibung} \\ \hline
        $\sim$ & logisches NOT\\
        $\&$ &  logisches UND\\
        $|$ & logisches ODER\\
        $\&\&$ & short-circuit logical AND\\
        $\|$ & short-circuit logical OR\\
        \hline
      \end{tabular}
    \end{center}
    \vspace{1em}
    Das auschliessende ODER (XOR) ist nur als Funktion \verb+xor(A, B)+ verf\"ugbar.
  \end{table}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Boolesche Ausdr\"ucke}
  \framesubtitle{Relationale Operatoren}
  \begin{table}[th]
    \caption{\label{relOperatorsTab}
      \textbf{Relational Operators.}} 
    \begin{center}
      \begin{tabular}{c|c}
        \hline
        \textbf{Operator} & \textbf{Beschreibung} \\ \hline
        $<$ & kleiner als\\
        $>$ &  gr\"osser als \\
        $==$ & gleich \\
        $>=$ & gr\"osser oder gleich \\
        $<=$ & kleiner oder gleich \\
        $\sim=$ & ungleich\\
        \hline
      \end{tabular}
    \end{center}
  \end{table}
\end{frame}


\begin{frame}[fragile] 
  \frametitle{Boolesche Ausdr\"ucke}
  \framesubtitle{Beispiele}
  \tiny
  \begin{lstlisting}
    >> x = [2 0 0 5 0] & [1 0 3 2 0]
    x =
    1     0     0     1     0
    >>
    >> ~([2 0 0 5 0] & [1 0 3 2 0])
    ans =
    0     1     1     0     1 

    >> [2 0 0 5 0] | [1 0 3 2 0]
    ans =
    1     0     1     1     0 
  \end{lstlisting}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Boolesche Ausdr\"ucke}
  \framesubtitle{\"Ubungen}
  \vspace{-0.5cm}
  \begin{enumerate}
  \item Gegeben sind zwei Vektoren \verb+x = [1 5 2 8 9 0 1]+ und
    \verb+y = [5 2 2 6 0 0 2]+. F\"uhre aus und erkl\"are.
    \begin{enumerate}
    \item \verb+x > y+
    \item \verb+y < x+
    \item \verb+x == y+
    \item \verb+x ~= y+
    \item \verb+x & ~y+
    \item \verb+x | y+
    \end{enumerate}
  \end{enumerate}
\end{frame}

\begin{frame}[plain]
  \huge{4. Logisches Indizieren}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Logische Indexierung} 
  \framesubtitle{Idee}
  Ist das Indizieren in Vektoren und Matrizen mithilfe Boolescher Ausdr\"ucke.
  \begin{enumerate}
  \item Wendet man einen Booleschen Ausdruck auf einen Vektor an, dann
    erh\"alt man als R\"uckgabe einen Vektor mit \textit{wahr} und
    \textit{falsch} Eintr\"agen.
  \item \textit{wahr/true} und \textit{falsch/false} werden als 1 und 0 dargestellt.\pause
  \item Beispiel: 
    \begin{itemize}
    \item Erstelle einen Vektor mit den Werten 0-10.
    \item F\"uhre aus: \code{y = x < 5;}.
    \item Gib den Inhalt von \code{y} auf dem Bildschirm aus.
    \item Was ist der Datentyp von \code{y}?
    \end{itemize}
  \end{enumerate}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Logische Indexierung} 
  \framesubtitle{Beispiele}
  \begin{enumerate}
  \item Schnelle und einfache Auswahl von Elementen, die einer
    bestimmten Bedingung entsprechen:
    \begin{itemize}
    \item Erstelle einen Vektor \code{x = 0:10}. 
    \item F\"uhre aus \code{x(x < 5)}.\pause
    \item Gibt alle Elemente aus x zur\"uck, die kleiner als 5 sind.
    \item Gelesen: Gib mir die Elemente von x (\code{x()}) an den
      Stellen, an denen \code{x <5} wahr ist.
    \end{itemize}
  \end{enumerate}
\end{frame}

\begin{frame}
  \frametitle{Logische Indizierung}
  \framesubtitle{Beispiele}
  \begin{enumerate}
  \item Der logische Vektor aus \code{x < 5} hat die gleiche
    Gr\"o{\ss}e wie x.
  \item Man kann also auch einen beliebigen logischen Vektor
    verwenden, solange die Gr\"o{\ss}e stimmt.
  \item Aufgabe:
    \begin{itemize}
    \item Erstelle einen  Vektor \code{x = randn(5,1);} und f\"uhre aus:
    \item \code{x([0,1,0,1,1])}
    \item Was passiert, warum? \pause
    \item \code{x(logical([0,1,0,1,1]))}
    \item \code{x(logical([1, 2, 3, 4, 5]))}
    \item Was macht logical? Warum funktioniert die letzte Version
      auch?
    \end{itemize}
  \end{enumerate}

\end{frame}

\begin{frame}[fragile]
  \frametitle{Logische Indexierung} 
  \framesubtitle{Anwendungsbeispiele:}
  \begin{enumerate}
  \item Beispiel 2:
    \begin{itemize}
    \item Erstelle einen Vektor \code{t=linspace(0,10,1000);}, der
      z.B. die Zeit repr\"asentiert.
    \item Erstelle einen zweiten Vektor \code{x} mit Zufallszahlen der
      die gleiche L\"ange hat wie \code{t}. Die Werte darin k\"onnten
      Messungen zu den Zeitpunkten in \code{t} darstellen.
    \item W\"ahle aus \code{x} die Werte aus, die dem zeitlichen
      Abschnitt 5-6\,s entsprechen.
    \end{itemize}
  \end{enumerate}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Logische Indexierung} 
  \framesubtitle{Anwendungsbeispiele:}
  \large{Logisches Indizieren ist ein sehr m\"achtiges Werkzeug, wenn man es einmal verinnerlicht hat!}
\end{frame}

\end{document}