From 9a2dcc11dea41b11cc3acf4e5fb625a74c3aa12e Mon Sep 17 00:00:00 2001 From: Jan Grewe Date: Thu, 8 Oct 2015 18:21:32 +0200 Subject: [PATCH] [lecture] boolean expressions, logical indexing done --- .../lectures/boolean_logical_indexing.tex | 442 ++++++++++++++++++ 1 file changed, 442 insertions(+) create mode 100644 programming/lectures/boolean_logical_indexing.tex diff --git a/programming/lectures/boolean_logical_indexing.tex b/programming/lectures/boolean_logical_indexing.tex new file mode 100644 index 0000000..50b29cc --- /dev/null +++ b/programming/lectures/boolean_logical_indexing.tex @@ -0,0 +1,442 @@ +\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 +{ + \usetheme{Singapore} + \setbeamercovered{opaque} + \usecolortheme{tuebingen} + \setbeamertemplate{navigation symbols}{} + \usefonttheme{default} + \useoutertheme{infolines} + % \useoutertheme{miniframes} +} + +\AtBeginSection[] +{ + \begin{frame} + \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} \ No newline at end of file