structs and cells
This commit is contained in:
parent
78ce93cb37
commit
800b9bfbd7
19
programming/exercises/Wetterdaten_Helgoland.txt
Normal file
19
programming/exercises/Wetterdaten_Helgoland.txt
Normal file
@ -0,0 +1,19 @@
|
||||
STAT JJJJMM QN TNN TNM TMM TXM TXX SOS NMM RSS RSX FMM FXX
|
||||
10015 201509 1 12.3 13.7 15.3 16.9 18.7 151.3 -9.9 74.0 10.6 4.6 27.1
|
||||
10015 201508 3 13.8 16.3 18.1 20.1 23.6 199.0 -9.9 108.5 26.6 -9.9 20.9
|
||||
10015 201507 3 12.1 14.6 16.6 18.8 25.9 237.9 5.1 83.2 13.1 4.4 25.3
|
||||
10015 201506 3 9.9 11.6 13.5 15.7 20.0 221.3 -9.9 -9.9 5.6 3.9 22.8
|
||||
10015 201505 3 6.6 8.6 10.3 12.3 16.6 216.7 5.4 49.5 10.1 4.3 23.7
|
||||
10015 201504 3 1.4 5.7 7.5 9.4 11.7 233.6 4.9 15.1 4.1 4.0 24.6
|
||||
10015 201503 3 1.5 4.0 5.6 7.1 9.5 141.4 5.8 73.5 16.3 4.5 30.9
|
||||
10015 201502 3 -0.2 2.6 3.9 5.2 7.2 88.4 5.6 45.5 8.6 4.6 25.2
|
||||
10015 201501 3 -1.5 3.0 4.9 6.3 9.8 51.7 5.8 103.1 15.8 5.3 30.6
|
||||
10015 201412 3 -1.4 4.0 5.9 7.4 10.5 34.5 6.4 150.5 32.5 5.5 30.2
|
||||
10015 201411 3 0.5 8.5 9.6 10.7 15.8 51.1 6.4 22.9 6.4 5.0 24.3
|
||||
10015 201410 3 9.4 13.1 14.5 15.8 18.8 92.3 5.9 82.5 22.6 4.5 27.2
|
||||
10015 201409 3 9.8 15.2 16.9 18.7 22.2 164.4 4.6 31.4 7.9 4.3 21.7
|
||||
10015 201408 3 10.9 15.1 17.4 19.5 25.2 212.2 5.2 190.3 47.3 4.4 25.2
|
||||
10015 201407 3 12.7 17.5 19.5 22.2 25.9 285.0 4.5 54.6 23.6 3.7 17.5
|
||||
10015 201406 3 11.3 13.3 15.2 17.6 22.2 247.6 4.9 31.0 8.0 3.8 17.7
|
||||
10015 201405 3 7.2 10.1 12.0 14.3 20.7 211.8 5.5 58.0 12.4 3.9 20.4
|
||||
10015 201404 3 4.5 7.7 9.5 12.0 16.7 185.4 5.2 32.8 10.1 4.3 23.4
|
BIN
programming/exercises/Wetterdaten_Helgoland.xlsx
Normal file
BIN
programming/exercises/Wetterdaten_Helgoland.xlsx
Normal file
Binary file not shown.
77
programming/exercises/structs_cells.tex
Normal file
77
programming/exercises/structs_cells.tex
Normal file
@ -0,0 +1,77 @@
|
||||
\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 6}}{{\bfseries\large Strukturen und Cell Arrays}}{{\bfseries\large 16. 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 Wiederholung, \"Ubung und
|
||||
Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
|
||||
werden. Im Gegensatz zu den vorherigen \"Ubungsbl\"attern k\"onnen die
|
||||
L\"osungen nicht mehr in einer Datei gemacht werden. Die L\"osungen
|
||||
also als zip-Archiv auf ILIAS hochladen. Das Archiv sollte nach dem Muster:
|
||||
``skripte\_funktionen\_\{nachname\}.zip'' benannt werden.
|
||||
|
||||
\begin{questions}
|
||||
|
||||
\question Erzeugen von Strukturen:
|
||||
\begin{parts}
|
||||
\part Erzeuge eine Struktur mit vier Feldern. Weise beliebige,
|
||||
verschiedene, Werte zu.
|
||||
\part Gib die Namen der Felder der Struktur aus.
|
||||
\part Greife auf eines der Felder zu und gib den Inhalt auf dem Bildschirm aus.
|
||||
\part Weise einen Wert einem noch nicht existierenden Feld zu.
|
||||
\part L\"osche ein Feld.
|
||||
\end{parts}
|
||||
|
||||
\question Schreibe eine Funktion, die den Pfad zu einem Verzeichnis
|
||||
\"ubernimmt und eine Struktur mit Informationen \"uber das
|
||||
Verzeichnis zur\"uckgibt. Dies soll der Name und die Anzahl Dateien
|
||||
in dem Verzeichnis sein.
|
||||
|
||||
\question Erzeugen von Cell Arrays:
|
||||
\begin{parts}
|
||||
\part Erzeuge ein leeres Cell Array.
|
||||
\part Weise der ersten Zelle einen Vektor, der zweiten Zelle eine
|
||||
Matrize und der dritten einen Text zu.
|
||||
\part Greife auf die Zellen zu.
|
||||
\end{parts}
|
||||
|
||||
\question
|
||||
|
||||
\question
|
||||
|
||||
\end{questions}
|
||||
|
||||
\end{document}
|
@ -16,11 +16,11 @@
|
||||
\usepackage{scalefnt}
|
||||
\usepackage{tikz}
|
||||
\usepackage{ textcomp }
|
||||
\usepackage{soul}
|
||||
\usepackage{color, soul}
|
||||
\usepackage{hyperref}
|
||||
\definecolor{lightblue}{rgb}{.7,.7,1.}
|
||||
\definecolor{mygreen}{rgb}{0,1.,0}
|
||||
|
||||
\definecolor{mygreen}{rgb}{0.4,1.,0.4}
|
||||
\definecolor{stringcolor}{rgb}{0.1,0.6,0.1}
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\mode<presentation>
|
||||
{
|
||||
@ -68,7 +68,7 @@
|
||||
language=Matlab,
|
||||
commentstyle=\itshape\color{darkgray},
|
||||
keywordstyle=\color{blue},
|
||||
stringstyle=\color{green},
|
||||
stringstyle=\color{stringcolor},
|
||||
backgroundcolor=\color{blue!10},
|
||||
breaklines=true,
|
||||
breakautoindent=true,
|
||||
@ -101,32 +101,142 @@
|
||||
\huge{1. Fortgeschrittene Datenstrukturen}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{``Strukturen'' und ``Cell Arrays''}
|
||||
\large
|
||||
Bisher kennen wir folgende Datenstrukturen:
|
||||
\begin{enumerate}
|
||||
\item Skalare.
|
||||
\item Vektoren.
|
||||
\item Matrizen.
|
||||
\end{enumerate}\pause
|
||||
F\"ur die meisten F\"alle reicht das aus. Manchmal m\"ochte man aber
|
||||
Dinge gemeinsam ablegen, die nicht den gleichen Datentyp haben.
|
||||
\pause\\
|
||||
|
||||
Beispiel: Ich habe eine Reihe Versuchspersonen bei denen ich
|
||||
verschiede Parameter (Alter, Geschlecht) zusammen mit den
|
||||
Testergebnissen ablegen m\"ochte.
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{``Strukturen'' und ``Cell Arrays''}
|
||||
\only<1> {
|
||||
F\"ur diese Zwecke kennt MATLAB vier weitere Datenstrukturen:
|
||||
\begin{enumerate}
|
||||
\item Strukturen.
|
||||
\item Cell Arrays.
|
||||
\item Tabellen (neu seit 2013).
|
||||
\item Objekte.
|
||||
\end{enumerate}
|
||||
}
|
||||
\only <2> {
|
||||
F\"ur diese Zwecke kennt MATLAB \st{vier} \textbf{drei} weitere Datenstrukturen:
|
||||
\begin{enumerate}
|
||||
\item Strukturen.
|
||||
\item Cell Arrays.
|
||||
\item Tabellen (neu seit 2013).
|
||||
\item \st{Objekte.}
|
||||
\end{enumerate}
|
||||
}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Strukturen}
|
||||
\framesubtitle{``Strukturen'' und ``Cell Arrays''}
|
||||
\huge{Strukturen}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{``Strukturen'' und ``Cell Arrays''}
|
||||
\begin{itemize}
|
||||
\item Strukturen werden benutzt um beliebige zusammengeh\"orige
|
||||
Daten in sog. Kontainern zu speichern.
|
||||
\item Diese Daten k\"onnen über den Namen des Kontainers oder
|
||||
\item Diese Daten k\"onnen \"uber den Namen des Kontainers oder
|
||||
``Feldes'' angesprochen werden.
|
||||
\item Man kann Listen von diesen Strukturen haben.
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Strukturen}
|
||||
Beispiel:
|
||||
\footnotesize
|
||||
\begin{lstlisting}
|
||||
subjects(1).name = 'John Dow';
|
||||
subjects(1).age = 35;
|
||||
subjects(1).sex = 'm';
|
||||
subjects(1).results = [1 2 3 4 5];
|
||||
|
||||
subjects(2).name = 'Jane Smith';
|
||||
subjects(2).age = 32;
|
||||
subjects(2).sex = 'f';
|
||||
subjects(2).results = [1 2 3 4 5];
|
||||
|
||||
fieldnames(subjects)
|
||||
ans =
|
||||
'name'
|
||||
'age'
|
||||
'sex'
|
||||
'results'
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Strukturen}
|
||||
Beispiel:
|
||||
\footnotesize
|
||||
\begin{lstlisting}
|
||||
subjects(1).name
|
||||
ans =
|
||||
'John Doe'
|
||||
|
||||
subjects(1).test2 = [];
|
||||
fieldname(subjects(2))
|
||||
ans =
|
||||
'name'
|
||||
'age'
|
||||
'sex'
|
||||
'results'
|
||||
'test2'
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Navigieren im Dateisystem}
|
||||
\framesubtitle{Strukturen}
|
||||
\textbf{Vorteile:}
|
||||
\begin{enumerate}
|
||||
\item Strukturen koennen beliebige Werte aufnehmen.
|
||||
\item Man kann Listen von Strukturen erstellen und darauf
|
||||
indizieren.
|
||||
\item Sind sehr leicht lesbar.
|
||||
\item Addressieren von Feldern ist sehr intuitiv.
|
||||
\end{enumerate}
|
||||
\pause
|
||||
\vspace{1cm}
|
||||
\textbf{Nachteile:}
|
||||
\begin{enumerate}
|
||||
\item Alle Eintr\"age in einer Strukturliste m\"ussen gleichgefromt
|
||||
sein.
|
||||
\item Kein logisches Indizieren.
|
||||
\item Elemente der Strukturen m\"ussen \"uber den Feldnamen
|
||||
angesprochen werden.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{``Strukturen'' und ``Cell Arrays''}
|
||||
\huge{Cell Arrays}
|
||||
\end{frame}
|
||||
|
||||
|
||||
@ -134,9 +244,9 @@
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Cell Arrays}
|
||||
\begin{enumerate}
|
||||
\item Matrizen k\"onnen nur rechtwinklig sein.\pause
|
||||
\item Matrizen k\"onnen nur rechtwinklig sein.
|
||||
\item Manchmal hat man aber unterschiedlich viele Datenpunkte, die
|
||||
dennoch logisch zusammengeh\"oren.\pause
|
||||
dennoch logisch zusammengeh\"oren.
|
||||
\item Z.B. Wenn man Zeitpunkte von Neuronalen- oder Verhaltensereignissen hat.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
@ -164,4 +274,51 @@
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Cell Arrays}
|
||||
\textbf{Vorteile:}
|
||||
\begin{enumerate}
|
||||
\item Kann alle m\"oglichen Daten ablegen.
|
||||
\item Benutzung m\"oglich ohne Kenntnis von Feldnamen.
|
||||
\end{enumerate}\pause
|
||||
\vspace{1cm}
|
||||
\textbf{Nachteile:}
|
||||
\begin{enumerate}
|
||||
\item Manchmal un\"ubersichtlich.
|
||||
\item Adressieren mit ${}$ ist eher ungew\"ohnlich.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{``Strukturen'' und ``Cell Arrays''}
|
||||
\huge{Tabellen}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Tabellen}
|
||||
\begin{enumerate}
|
||||
\item Datenstruktur \"ahnlich zu Excel Tabellen.
|
||||
\item Jede Spalte ist eine Kategorie.
|
||||
\item Verschiedene Spalten k\"onnen unterschiedliche Datentypen
|
||||
haben.
|
||||
\item Unterst\"utzung von Filteroperationen auf Spalten und Zeilen.
|
||||
\item Kann direkt \textit{*.xlsx} Dateien importieren.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Tabellen}
|
||||
\scriptsize
|
||||
\begin{lstlisting}
|
||||
|
||||
\end{lstlisting}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
||||
\end{document}
|
BIN
programming/lectures/images/simple_program.pdf
Normal file
BIN
programming/lectures/images/simple_program.pdf
Normal file
Binary file not shown.
@ -317,7 +317,8 @@ Probleme mit dieser Funktion:
|
||||
\item Die Funktion ist f\"ur genau einen Zweck gut.
|
||||
\item Was sie tut, ist festgelegt und kann von au{\ss}en nicht
|
||||
beeinflusst werden.
|
||||
\item Sie tut 2 Dinge: Sinus berechnen \textbf{und} graphisch darstellen.
|
||||
\item Sie tut 3 Dinge: Sinus berechnen \textbf{und} Amplituden
|
||||
\"andern \textbf{und} graphisch darstellen.
|
||||
\item Es ist nicht (einfach) m\"oglich an die berechneten Daten zu
|
||||
kommen.
|
||||
\item Keinerlei Dokumentation. Ich muss den code lesen um zu
|
||||
@ -334,7 +335,9 @@ Probleme mit dieser Funktion:
|
||||
\frametitle{Skripte und Funktionen}
|
||||
\framesubtitle{Funktionen}
|
||||
\begin{enumerate}
|
||||
\item Identifizieren des Problems.
|
||||
\item Manchmal ist es besser noch mal neu anzufangen als
|
||||
Kleiningkeiten zu verbessern:
|
||||
\item Welches Problem soll gel\"ost werden?
|
||||
\item Aufteilen in Teilprobleme.
|
||||
\item Gute Namen finden.
|
||||
\item Definieren der Schnittstellen --- Was muss die Funktion
|
||||
@ -350,7 +353,8 @@ Probleme mit dieser Funktion:
|
||||
\begin{enumerate}
|
||||
\item Berechnen der \textbf{einzelnen} Sinus.
|
||||
\item Plotten der Daten.
|
||||
\item Koordinieren von Berechung und Darstellung.
|
||||
\item Koordinieren von Berechung und Darstellung mit
|
||||
unterschiedlichen Amplituden.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
@ -501,18 +505,34 @@ legend('show')
|
||||
\end{frame}
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Skripte undFunktionen}
|
||||
\frametitle{Skripte und Funktionen}
|
||||
\framesubtitle{Funktionen --- Zusammenfassung}
|
||||
Funktionen sind kleine Code Fragmente, die
|
||||
\begin{enumerate}
|
||||
\item ... genau eine Aufgabe erledigen.
|
||||
\item ... Argumente entgegennehmen k\"onnen.
|
||||
\item ... R\"uckgabewerte haben k\"onnen.
|
||||
\item ... ihren eigenen G\"ueltigkeitsbereich haben.
|
||||
\item ... ihren eigenen G\"ultigkeitsbereich haben.
|
||||
\item ... Skripten fast immer vorzuziehen sind.
|
||||
\end{enumerate}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}
|
||||
\frametitle{Skripte und Funktionen}
|
||||
\framesubtitle{Organisation von Programmen}
|
||||
|
||||
\begin{itemize}
|
||||
\item Mit den Funktionen haben wir ein Werkzeug, dass uns erlaubt
|
||||
ein Programm in kleine, ``verdauliche'', Teile zu gliedern.
|
||||
\end{itemize}
|
||||
Ein m\"ogliches Programmlayout k\"onnte so aussehen:
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.5\columnwidth]{./images/simple_program.pdf}
|
||||
\end{figure}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}[plain]
|
||||
\huge{3. Programmierstil}
|
||||
\end{frame}
|
||||
@ -584,6 +604,7 @@ legend('show')
|
||||
Code: A Handbook of Agile Software Craftmanship}, Prentice Hall
|
||||
\end{frame}
|
||||
|
||||
\end{document}
|
||||
|
||||
\begin{frame}[plain]
|
||||
\huge{4. Vom Problem zum Algorithmus zum Programm}\\
|
||||
|
Reference in New Issue
Block a user