\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}