449 lines
11 KiB
TeX
449 lines
11 KiB
TeX
\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} |