442 lines
12 KiB
TeX
442 lines
12 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{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} |