structs and cells
This commit is contained in:
@@ -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'' und ``Cell Arrays''}
|
||||
\huge{Strukturen}
|
||||
\end{frame}
|
||||
|
||||
|
||||
\begin{frame}[fragile]
|
||||
\frametitle{Fortgeschrittene Datenstrukturen}
|
||||
\framesubtitle{Strukturen}
|
||||
\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{Navigieren im Dateisystem}
|
||||
|
||||
\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{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