\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{color, soul}
\usepackage{hyperref}
\definecolor{lightblue}{rgb}{.7,.7,1.}
\definecolor{mygreen}{rgb}{0.4,1.,0.4}
\definecolor{stringcolor}{rgb}{0.1,0.6,0.1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\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 die wissenschaftliche Datenverarbeitung}
\vspace{1em}
\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{stringcolor},
 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}
}

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

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


\begin{frame}[plain]
\huge{1. Graphische Darstellung von Daten}
\end{frame}


\begin{frame} [fragile]
 \frametitle{Graphische Darstellung von Daten}
 \framesubtitle{Was macht einen guten Plot aus?}
 \begin{figure}
   \centering
   \includegraphics[width=0.9\columnwidth]{./images/convincing}
 \end{figure}
\end{frame}


\begin{frame} [fragile]
 \frametitle{Graphische Darstellung von Daten}
 \framesubtitle{Was macht einen guten Plot aus?}
 \begin{enumerate}
 \item Klarheit.
 \item Vollstaendige Beschriftung.
 \item Deutliche Unterscheidbarkeit von Kurven.
 \item Keine suggestive Darstellung. 
 \item Ausgewogenheit von Linienst\"arken Schrift- und Plotgr\"o{\ss}e. 
 \end{enumerate}
 \begin{columns}
   \begin{column}{4cm}
     \begin{figure}
       \includegraphics[width=0.9\columnwidth]{./images/bad_1.pdf}
     \end{figure}
   \end{column}
   \begin{column}{4cm}
     \begin{figure}
       \includegraphics[width=0.9\columnwidth]{./images/bad_2.pdf}
     \end{figure}
   \end{column}
   \begin{column}{4cm}
     \begin{figure}
       \includegraphics[width=0.9\columnwidth]{./images/bad_3.pdf}
     \end{figure}
   \end{column}
 \end{columns}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Graphische Darstellung von Daten}
  \framesubtitle{Plotting Interface}
  Es gibt zwei Wege Graphen zu bearbeiten:
  \begin{enumerate}
  \item \"Uber das \textit{graphische User Interface}\pause
  \item Die Kommandozeile bzw. in Skripten und Funktionen.\pause
  \end{enumerate}
  Beides hat seine Berechtigung und seine eigenen Vor- und Nachteile. Welche?
\end{frame}


\begin{frame} [fragile]
 \frametitle{Graphische Darstellung von Daten}
 \framesubtitle{Ver\"andern von Eigenschaften \"uber die Kommandozeile}
 \vspace{-0.75em}
 \scriptsize
  \begin{lstlisting}
fig = figure();
set(gcf, 'PaperUnits', 'centimeters', 'PaperSize', [11.7 9.0]);
set(gcf, 'PaperPosition',[0.0 0.0 11.7 9.0], 'Color', 'white')
hold on
plot(time, neuronal_data, 'color', [ 0.2 0.5 0.7], 'linewidth', 1.)
plot(spike_times, ones(size(spike_times))*threshold, 'ro', 'markersize', 4)
line([time(1) time(end)], [threshold threshold], 'linestyle', '--',
    'linewidth', 0.75, 'color', [0.9 0.9 0.9])
ylim([0 35])
xlim([0 2.25])
box('off')
xlabel('time [s]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10)
ylabel('potential [mV]', 'fontname', 'MyriadPro-Regular', 'fontsize', 10)
title('pyramidal cell', 'fontname', 'MyriadPro-Regular', 'fontsize', 12)
set(gca, 'TickDir','out', 'linewidth', 1.5, 'fontname', 'MyriadPro-Regular')
saveas(fig, 'spike_detection.pdf', 'pdf')
\end{lstlisting}
\end{frame}


\begin{frame} [fragile]
 \frametitle{Graphische Darstellung von Daten}
 \framesubtitle{Welche Art Plot wof\"ur?}
 \url{http://www.mathworks.de/discovery/gallery.html}
\end{frame}



\begin{frame}[plain]
\huge{2. Fortgeschrittene Datenstrukturen}
\end{frame}

\begin{frame}
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{``Strukturen'' und ``Cell Arrays''} 
  \large
  Bisher kennen wir folgende Datenstrukturen:
  \begin{enumerate}
  \item Skalare.
  \item Vektoren.
  \item Matrizen.
  \end{enumerate}\pause
  F\"ur die meisten F\"alle reicht das aus. Manchmal m\"ochte man aber
  Dinge gemeinsam ablegen, die nicht den gleichen Datentyp haben.
  \pause\\

  Beispiel: Ich habe eine Reihe Versuchspersonen bei denen ich
  verschiede Parameter (Alter, Geschlecht) zusammen mit den
  Testergebnissen ablegen m\"ochte.
\end{frame}

\begin{frame}
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{``Strukturen'' und ``Cell Arrays''}
  \only<1> {
    F\"ur diese Zwecke kennt MATLAB vier weitere Datenstrukturen:
    \begin{enumerate}
    \item Strukturen.
    \item Cell Arrays.
    \item Tabellen (neu seit 2013).
    \item Objekte.
    \end{enumerate}
  }
  \only <2> {
    F\"ur diese Zwecke kennt MATLAB \st{vier} \textbf{drei} weitere Datenstrukturen:
    \begin{enumerate}
    \item Strukturen.
    \item Cell Arrays.
    \item Tabellen (neu seit 2013).
    \item \st{Objekte.}
    \end{enumerate}
  }
\end{frame}

\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{``Strukturen'' und ``Cell Arrays''}
  \huge{Strukturen}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{``Strukturen'' und ``Cell Arrays''}
  \begin{itemize}
  \item Strukturen werden benutzt um beliebige zusammengeh\"orige
    Daten in sog. Kontainern zu speichern.
  \item Diese Daten k\"onnen \"uber den Namen des Kontainers oder
    ``Feldes'' angesprochen werden.
  \item Man kann Listen von diesen Strukturen haben.
  \end{itemize}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Strukturen}
  Beispiel:
  \footnotesize
  \begin{lstlisting}
    subjects(1).name = 'John Dow';
    subjects(1).age = 35;
    subjects(1).sex = 'm';
    subjects(1).results = [1 2 3 4 5];
    
    subjects(2).name = 'Jane Smith';
    subjects(2).age = 32;
    subjects(2).sex = 'f';
    subjects(2).results = [1 2 3 4 5];

    fieldnames(subjects)
    ans = 
    'name'
    'age'
    'sex'
    'results'
 \end{lstlisting}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Strukturen}
  Beispiel:
  \footnotesize
  \begin{lstlisting}
  subjects(1).name
  ans = 
  'John Doe'

  subjects(1).test2 = [];
  fieldname(subjects(2))
  ans = 
  'name'
  'age'
  'sex'
  'results'
  'test2'
  \end{lstlisting}
\end{frame}



\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Strukturen}
  \textbf{Vorteile:}
  \begin{enumerate}
  \item Strukturen koennen beliebige Werte aufnehmen.
  \item Man kann Listen von Strukturen erstellen und darauf
    indizieren.
  \item Sind sehr leicht lesbar.
  \item Addressieren von Feldern ist sehr intuitiv.
  \end{enumerate}
  \pause
  \vspace{1cm}
  \textbf{Nachteile:}
  \begin{enumerate}
  \item Alle Eintr\"age in einer Strukturliste m\"ussen gleichgefromt
    sein.
  \item Kein logisches Indizieren.
  \item Elemente der Strukturen m\"ussen \"uber den Feldnamen
    angesprochen werden.
  \end{enumerate}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{``Strukturen'' und ``Cell Arrays''}
  \huge{Cell Arrays}
\end{frame}


\begin{frame}
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Cell Arrays}
  \begin{enumerate}
  \item Matrizen k\"onnen nur rechtwinklig sein.
  \item Manchmal hat man aber unterschiedlich viele Datenpunkte, die
    dennoch logisch zusammengeh\"oren.
  \item Z.B. Wenn man Zeitpunkte von Neuronalen- oder Verhaltensereignissen hat.
  \end{enumerate}
\end{frame}


\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Cell Arrays}
  \scriptsize
  \begin{lstlisting}
>> % create a cell array
>> cell_array = {};
>>
>> % assignment of arbitrary content
>> cell_array{1} = ones(100,1);
>> cell_array{2} = ones(10000,100);
>> cell_array{3} = 'das ist ein Test';
>> cell_array{4} = {};
>>
>> % accessing of content
>> size(cell_array{1})
  ans = 
     100     1
>>
  \end{lstlisting}
\end{frame}


\begin{frame}
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Cell Arrays}
  \textbf{Vorteile:}
  \begin{enumerate}
  \item Kann alle m\"oglichen Daten ablegen.
  \item Benutzung m\"oglich ohne Kenntnis von Feldnamen.
  \end{enumerate}\pause
  \vspace{1cm}
  \textbf{Nachteile:}
  \begin{enumerate}
  \item Manchmal un\"ubersichtlich.
  \item Adressieren mit ${}$ ist eher ungew\"ohnlich.
  \end{enumerate}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{``Strukturen'' und ``Cell Arrays''}
  \huge{Tabellen}
\end{frame}

\begin{frame}
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Tabellen}
  \begin{enumerate}
  \item Datenstruktur \"ahnlich zu Excel Tabellen.
  \item Jede Spalte ist eine Kategorie.
  \item Verschiedene Spalten k\"onnen unterschiedliche Datentypen
    haben.
  \item Unterst\"utzung von Filteroperationen auf Spalten und Zeilen.
  \item Kann direkt \textit{*.xlsx} Dateien importieren.
  \end{enumerate}
\end{frame}

\begin{frame}[fragile]
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Tabellen}
  \scriptsize
  \begin{lstlisting}
  data = tabelread('spreadsheet.xlsx');
  
  % Anzahl Reihen
  height(data)

  % Anzahl Spalten
  width(data)

  % Zugriff auf eine Spalte ueber den Namen
  data.name
  
  % Auswahl mittels logischem Indexing
  data.name(data.alter < 25);

  \end{lstlisting}
\end{frame}

\begin{frame}
  \frametitle{Fortgeschrittene Datenstrukturen}
  \framesubtitle{Tabellen}
  \textbf{Vorteile:}
  \begin{enumerate}
  \item Sehr gut geeignet f\"ur Tabellenartige Daten.
  \item Sehr intuitive Darstellung.
  \item Bequemes Speichern und Laden solange Standardformate benutzt
    werden.
  \end{enumerate}
  \pause
  \vspace{1cm}
  \textbf{Nachteile:}
  \begin{enumerate}
  \item Alle Spalten m\"ussen gleich gross sein.
  \item Erfordert, sich auf ein Matlab eher untypisches Konzept einzulassen.
  \item Komplexe Datenformate sind nicht einfach zu lesen (generelles
    Matlab String parsing problem).
  \end{enumerate}
\end{frame}


\end{document}