This repository has been archived on 2021-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
scientificComputing/programming/lecture/boolean_logical_indexing-slides.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}