\documentclass[12pt,a4paper,pdftex]{exam} \usepackage[german]{babel} \usepackage{natbib} \usepackage{graphicx} \usepackage[small]{caption} \usepackage{sidecap} \usepackage{pslatex} \usepackage{amsmath} \usepackage{amssymb} \setlength{\marginparwidth}{2cm} \usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref} %%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry} \pagestyle{headandfoot} \header{{\bfseries\large \"Ubung 2}}{{\bfseries\large Vektoren und Matrizen}}{{\bfseries\large 12. Oktober, 2015}} \firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email: jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{} \setlength{\baselineskip}{15pt} \setlength{\parindent}{0.0cm} \setlength{\parskip}{0.3cm} \renewcommand{\baselinestretch}{1.15} \newcommand{\code}[1]{\texttt{#1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \vspace*{-6.5ex} \begin{center} \textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex] {\large Jan Grewe, Jan Benda}\\[-3ex] Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\ \end{center} Die folgenden Aufgaben dienen der \"Ubung und Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files) i.d.R. am gleichen Tag mir zugeschickt werden (jan.grewe@uni-tuebingen.de). Jede Aufgabe sollte in einer eigenen ``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: ``variablen\_datentypen\_\{nachname\}.m'' benannt werden (z.B. variablen\_datentypen\_meier.m). \begin{questions} \section*{Vektoren} \question Erzeuge Vektoren mit folgendem Inhalt: \begin{parts} \part Von 1 bis 10 in ganzzahligen Schritten. \part Von 0 bis 20 in 2er Schritten. \part Mit \textbf{absteigendem} Inhalt von 100 bis 0. \part In 10 Schritten von 0 bis 1. \part In 11 Schritten von 0 bis 1. \part In 50 Schritten von 0 bis $2\pi$ ($\pi$ ist als Konstante \code{pi} in Matlab definiert). \end{parts} \question Rechnen mit Vektoren: \begin{parts} \part Definiere einen Vektor \code{x = [3 2 6 8];} \part Wie gro{\ss} ist der Vektor? Benutze die Funktionen \code{size} und \code{length}. Was ist der Unterschied zwischen den beiden Funktionen? \part Wie \"andern sich \code{size} und \code{length} des Vektors wenn er transponiert wird? \part Addiere 5 zu jedem Element von \verb+x+. \part Multipliziere jedes Element von \code{x} mit 2; \part Definiere einen zweiten Vektor (\verb+y = [4 1 3 5];+). Stelle sicher, dass \code{x} wieder in seiner urspr\"unglichen Form ist. \part Addiere beide Vektoren \code{x + y}. \part Subtrahiere beide Vektoren \code{x - y}. \part Multipliziere beide Vektoren \code{x * y}. \part Erkl\"are die Fehlermeldung. \part Was m\"usste man machen, damit \code{mtimes} bzw. der \code{*} Operator funktionieren? \part Multipliziere die Vektoren elementweise (\code{x .* y}) und weise das Ergebnis eine neuen Variablen zu. \end{parts} \question Erzeugen von Vektoren mit Helferfunktionen: \begin{parts} \part Erstelle einen 100 Elemente langen Vektor mit der Funktion \code{ones} (siehe Hilfe). Was macht sie? \part Erstelle einen 100 Elemente langen Vektor mit der Funktion \code{zeros}. Was macht diese? \part Erstelle einen 100 Elemente langen Vektor in dem jedes Element den Wert 4.5 hat. \part Erzeuge einen Vektor mit 100 Zufallszahlen (\code{rand}, siehe Hilfe). \part Erzeuge einen Vektor mit 100 Werten zwischen 0 und 1 mithilfe der Funktion \code{linspace}. \end{parts} \question Indizieren in Vektoren: \begin{parts} \part Erzeuge einen Vektor mit 100 Elementen (0 - 100). \part Gib jeweils den ersten, den letzten, den 5., 24. und den vorletzten Wert aus. \part Gib die ersten 10 Werte aus. \part Gib die letzten 10 Werte aus. \part Versuche den Wert an der Stelle 0 auszugeben. \part Versuche den Wert an der Stelle 110 auszugeben. \part Gib die Werte an den Stellen 3, 15, und 42 zusammen als Vektor aus. \part Gib 10 zuf\"allig ausgew\"ahlte Werte aus (benutze \verb+randi+ um die Indizes zu erstellen). \end{parts} \question Erzeuge eine Variable und speichere etwas Text in ihr, so dass mindestens 2 Worte vorhanden sind. (z.B. \code{x = 'some text'}). Benutze die Indizierung um die W\"orter einzeln auszugeben. \newpage \section*{Matrizen} \question Erstelle folgende Matrix \[ A = \left( \begin{array}{ccc} 7 & 3 & 5 \\ 1 & 8 & 3 \\ 8 & 6 & 4 \end{array} \right) \] \begin{parts} \part Gib das Element in der 3. Zeile und 2. Spalte aus. \part Gib jeweils alle Elemente der 1., 2. und 3. Zeile aus. \part Gib jeweils alle Elemente der 1., 2., und 3. Spalte aus. \part Erh\"ohe das Element in der 2. Zeile und 3. Spalte um Eins. \part Ziehe von allen Elementen der 1. Zeile 5 ab. \part Multipliziere alle Elementen der 3. Spalte mit 2. \end{parts} \question Erstelle eine $5 \times 5$ Matrix \code{M} die Zufallszahlen enth\"alt (nutze die MATLAB Funktion \verb+randn()+. Benutze die Hilfe: Was macht die Funktion?). \begin{parts} \part Gib das Element in der 2. Zeile und 3. Spalte aus. \part Gib jeweils alle Elemente der 1., 3. und letzten Zeile aus. \part Gib jeweils alle Elemente der 2. und 4. Spalte aus. \part Greife mit einem einzigen Kommando auf die Elemente jeder zweiten Spalte zu und speichere die Daten in einer neuen Variable. \part Berechne jeweils den Mittelwert der 1., 3. und 5. Zeile (Funktion \code{mean}, siehe Hilfe). \part Berechne die Summe aller Werte der 2. und 4. Spalte (Funktion \code{sum}, siehe Hilfe). \part Berechne die Summer aller Elemente der Matrize. \part Ersetze die Elemente der 2. Zeile mit denen der 4. \part F\"uhre folgendes Kommando aus: \code{M(1:2,1) = [1, 2, 3]}. Was k\''onnte die Absicht dieses Codes gewesen sein? Was bedeutet die Fehlermeldung? \end{parts} \question Matrizen k\"onnen neben der ``normalen'' \textit{subscript} Indizierung auch \textit{linear} indiziert werden (siehe Hilfe \"uber Indexing oder Funktionen \verb+sub2ind+ oder \verb+ind2sub+). \begin{parts} \part Erstelle eine 2-D Matrix mit Zufallszahlen mit der Dimensionalit\"at \verb+[10,10]+. \part Wie viele Werte enth\"alt sie? \part Benutze das lineare Indizieren um 50 zuf\"allige Werte auszuw\"ahlen. \part Wo liegt der Vorteil gegen\"uber der \textit{subscript} Indizierung? \part Berechne die Summe aller Werte mit einem Funktionsaufruf.. \end{parts} \question Erstelle folgende Variablen \verb+x = [1 5 9]+ and \verb+y = [7 1 5]+ und \verb+M = [3 1 6; 5 2 7]+. Welche der folgenden Operationen funktionieren? Wenn nicht, warum funktionieren sie nicht? Teste Deine Vorhersagen. \begin{parts} \part \code{x + y} \part \code{x * M} \part \code{x + y'} \part \code{M - [x y]} \part \code{[x; y]} \part \code{M - [x; y]} \end{parts} \question Erstelle eine 3-D Matrix aus drei 2-D Matrizen. Benutze die \verb+cat()+ Funktion f\"ur diesen Zweck (schaue in der Hilfe nach, wie sie benutzt wird). \begin{parts} \part Gib alle Elemente des ersten ``Blattes'' aus (Index 1 der 3. Dimension). \end{parts} \question Erzeuge eine $5 \times 5 \times 5$ Matrix die mit ganzzahligen, gleichverteilten Zufallszahlen zwischen 0 und 100 gef\"ullt ist. \begin{parts} \part Berechne den Mittelwert aller Bl\"atter dieser Matrix (benutze \verb+mean()+, siehe Hilfe). \end{parts} \end{questions} \end{document}