More pagebreak fixing

This commit is contained in:
Jan Benda 2015-11-27 19:29:39 +01:00
parent a125bca9ac
commit 7719cb3385
13 changed files with 81 additions and 86 deletions

View File

@ -216,7 +216,7 @@
\newcommand{\varcode}[1]{\setlength{\fboxsep}{0.5ex}\colorbox{codeback}{\texttt{#1}}}
\newcommand{\code}[2][]{\varcode{#2}\ifthenelse{\equal{#1}{}}{\protect\sindex[code]{#2}}{\protect\sindex[code]{#1}}}
\newcommand{\matlab}{\texorpdfstring{MATLAB$^{\copyright}$}{MATLAB}}
\newcommand{\matlabfun}[2][]{(\tr{\matlab-function}{\matlab-Funktion} \setlength{\fboxsep}{0.5ex}\colorbox{codeback}{\texttt{#1}})\ifthenelse{\equal{#1}{}}{\protect\sindex[code]{#2}}{\protect\sindex[code]{#1}}}
\newcommand{\matlabfun}[2][]{(\tr{\matlab-function}{\matlab-Funktion} \setlength{\fboxsep}{0.5ex}\colorbox{codeback}{\texttt{#2}})\ifthenelse{\equal{#1}{}}{\protect\sindex[code]{#2}}{\protect\sindex[code]{#1}}}
%%%%% exercises environment: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% usage:

View File

@ -1,15 +1,11 @@
clear all
close all
load('pyramidal_response.mat')
threshold = 20; % mV
figure()
hold on
plot(time*1000.0, neuronal_data, 'color', [0.2 0.5 0.7], 'linewidth', 1., ...
'displayname', 'Membrane voltage')
plot(spikes*1000.0, ones(size(spikes)) .* threshold, 'r.', 'markersize', 15, ...
'displayname', 'Spike times')
plot(time*1000.0, neuronal_data, 'color', [0.2 0.5 0.7], ...
'linewidth', 1., 'displayname', 'Membrane voltage')
plot(spikes*1000.0, ones(size(spikes)) .* threshold, 'r.', ...
'markersize', 15, 'displayname', 'Spike times')
line([time(1) time(end)], [threshold threshold], 'linestyle', '--', ...
'linewidth', 0.75, 'color', [0.5 0.5 0.5], 'displayname', 'Threshold')
@ -24,7 +20,7 @@ set(l,'location','northeast', 'fontsize', 11, 'linewidth', 1.);
set(gca, 'xminortick','on','yminortick','on')
set(gca, 'tickdir','out', 'linewidth', 1.5, 'fontname', 'times', ...
'fontsize', 11)
set(gcf, 'paperunits', 'centimeters', 'papersize', [15 7.5]);
set(gcf, 'paperposition',[0.0 0.0 15, 7.5], 'color', 'white')
set(gcf, 'paperunits', 'centimeters', 'papersize', [15 7]);
set(gcf, 'paperposition',[0.0 0.0 15, 7], 'color', 'white')
saveas(gcf, [pwd '/../lecture/images/spike_detection.pdf'], 'pdf')
saveas(gcf, 'spike_detection.pdf', 'pdf')

View File

@ -149,6 +149,23 @@ hinzuzuf\"ugen: (i) das Graphische User Interface oder (ii) die
Kommandozeile. Beide haben ihre Berechtigung sowie Vor- und
Nachteile.
\begin{figure}
\begin{minipage}[t]{0.6\textwidth}
\includegraphics[height=0.29\textheight]{plot_editor}
\end{minipage}
\begin{minipage}[t]{0.3\textwidth}
\includegraphics[height=0.29\textheight]{property_editor}
\end{minipage}
\titlecaption{Der \matlab{} Plot-Editor.}{\"Uber das Menu
``Tools $\rightarrow$ Edit Plot'' erreicht man den Plot Editor. Je nachdem
welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich
die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und
Einstellungen k\"onnen \"uber den ``Property Editor'', rechts,
eingesehen und ver\"andert werden. Der ``Property Editor'' ist
\"uber die Schaltfl\"ache ``More Properties''
erreichbar.}\label{ploteditorfig}
\end{figure}
W\"ahrend es bequem ist, die Abbildung mit der GUI
(\figref{ploteditorfig}) zu bearbeiten sind die erhaltenen Ergebnisse
nicht einfach reproduzierbar oder \"ubertragbar. Wenn eine Abbildung
@ -170,23 +187,6 @@ Jedes dieser Elemente bietet eine Vielzahl von
Einstellungsm\"oglichkeiten. Wie schon erw\"ahnt, k\"onnen diese
\"uber die GUI (Abbildung \ref{ploteditorfig}) bearbeitet werden.
\begin{figure}
\begin{minipage}[t]{0.6\columnwidth}
\includegraphics[width=0.9\textwidth]{plot_editor}
\end{minipage}
\begin{minipage}[t]{0.3\columnwidth}
\includegraphics[width=0.9\textwidth]{property_editor}
\end{minipage}
\titlecaption{Der \matlab{} Plot-Editor.}{\"Uber das Menu
``Tools $\rightarrow$ Edit Plot'' erreicht man den Plot Editor. Je nachdem
welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich
die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und
Einstellungen k\"onnen \"uber den ``Property Editor'', rechts,
eingesehen und ver\"andert werden. Der ``Property Editor'' ist
\"uber die Schaltfl\"ache ``More Properties''
erreichbar.}\label{ploteditorfig}
\end{figure}
Alle Einstellungen, die \"uber das graphische Interface vorgenommen
werden k\"onnen, sind auch \"uber Befehle auf der Kommandozeile
m\"oglich. Auf diese Weise k\"onnen Einstellungen problemlos in ein
@ -376,20 +376,6 @@ erstes Argument wieder ein Handle auf die Figure erwartet. Das zweite
Argument ist der Dateiname, und zuletzt muss das gew\"unschte Format
(Box \ref{graphicsformatbox}) angegeben werden.
\lstinputlisting[caption={Skript zur Erstellung des Plots in \figref{spikedetectionfig}.}, label=niceplotlisting]{automatic_plot.m}
\begin{figure}[t]
\includegraphics{spike_detection}
\titlecaption{Automatisch erstellter Plot.}{Dieser Plot wurde vollst\"andig
mit dem Skript in Listing \ref{niceplotlisting} erstellt und
gespeichert.}\label{spikedetectionfig}
\end{figure}
Neben den Standard-Linienplots gibt es eine ganze Reihe weiterer
M\"oglichkeiten Daten zu Visualisieren. Mathworks zeigt auf seiner
Homepage viele Beispiele mit zugeh\"origem Code
\url{http://www.mathworks.de/discovery/gallery.html}.
\begin{ibox}[t]{\label{graphicsformatbox}Dateiformate f\"ur Abbildungen.}
Es gibt zwei grunds\"atzlich verschiedene Arten von Dateiformaten f\"ur
Graphiken:
@ -440,6 +426,20 @@ Homepage viele Beispiele mit zugeh\"origem Code
Rastergraphik allerdings deutlich schneller und speichereffizienter.
\end{ibox}
\begin{figure}[t]
\includegraphics{spike_detection}
\titlecaption{Automatisch erstellter Plot.}{Dieser Plot wurde vollst\"andig
mit dem Skript in Listing \ref{niceplotlisting} erstellt und
gespeichert.}\label{spikedetectionfig}
\end{figure}
\lstinputlisting[caption={Skript zur Erstellung des Plots in \figref{spikedetectionfig}.}, label=niceplotlisting]{automatic_plot.m}
Neben den Standard-Linienplots gibt es eine ganze Reihe weiterer
M\"oglichkeiten Daten zu Visualisieren. Mathworks zeigt auf seiner
Homepage viele Beispiele mit zugeh\"origem Code
\url{http://www.mathworks.de/discovery/gallery.html}.
\section{Fazit}

View File

@ -5,7 +5,7 @@
\lstset{inputpath=../code}
\graphicspath{{images/}}
\setcounter{page}{3}
\setcounter{page}{15}
\setcounter{chapter}{0}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -223,7 +223,7 @@ end
end
\end{lstlisting}
\clearpage
\pagebreak[4]
\begin{lstlisting}[label=cleancode, caption={\"Ubersichtliche Implementation des Random-walk.}]
num_runs = 10;
@ -272,6 +272,7 @@ ein v\"ollig unn\"otiger Kommentar.
\end{itemize}
\end{important}
\pagebreak[4]
\section{Dokumentation von Funktionen}
Bei allen vordefinierten \matlab{} Funktionen findet sich am Anfang
@ -330,6 +331,7 @@ sogenannte \codeterm[Funktion!lokale]{lokale Funktionen} oder auch
erstellen. Listing \ref{localfunctions} zeigt ein Beispiel f\"ur eine
lokale Funktion.
\pagebreak[3]
\lstinputlisting[label=localfunctions, caption={Beispiel f\"ur den
Einsatz von lokalen Funktionen.}]{calculate_sines.m}

View File

@ -1,9 +1,9 @@
% check whether the median returned by mymedian
% really separates a vector into two halfs
for i = 1:140 % loop over different length
for k = 1:10 % try several times
a = randn( i, 1 ); % generate some data
m = mymedian( a ); % compute median
for i = 1:140 % loop over different length
for k = 1:10 % try several times
a = randn( i, 1 ); % generate some data
m = mymedian( a ); % compute median
if length( a(a>m) ) ~= length( a(a<m) ) % check
disp( 'error!' )
end

View File

@ -1,15 +1,14 @@
x = randn( 100, 1 ); % generate some data
db1=2;
db2 = 0.5;
bins1 = -4:db1:4; % large bins
bins2 = -4:db2:4; % small bins
x = randn(100, 1); % generate some data
bins1 = -4:2:4; % large bins
bins2 = -4:0.5:4; % small bins
[h1,b1] = hist(x,bins1);
[h2,b2] = hist(x,bins2);
subplot( 1, 2, 1 );
bar(b1,h1)
bar(b1, h1)
hold on
bar(b2,h2, 'facecolor', 'r' )
bar(b2, h2, 'facecolor', 'r' )
xlabel('x')
ylabel('Frequency')
hold off

View File

@ -12,16 +12,15 @@ hold off
% compute integral between x1 and x2:
P = sum(p((x>=x1)&(x<x2)))*dx;
fprintf( 'The integral between %.2g and %.2g is %.3g\n', x1, x2, P );
fprintf( 'Integral between %.2g and %.2g: %.3g\n', x1, x2, P );
% draw random numbers:
r = randn( 10000, 1 );
% check P:
Pr = sum((r>=x1)&(r<x2))/length(r);
fprintf( 'The probability of getting a number between %.2g and %.2g is %.3g\n', x1, x2, Pr );
fprintf( 'Probability of a number between %.2g and %.2g: %.3g\n', x1, x2, Pr );
% infinite integral:
P = sum(p)*dx;
fprintf( 'The integral between -infinity and +infinity is %.3g\n', P );
fprintf( 'I.e. the probability to get any number is %.3g\n', P );
fprintf( 'Integral between -infinity and +infinity: %.3g\n', P );

View File

@ -5,7 +5,7 @@ rng = np.random.RandomState(981)
x = rng.randn( 40, 10 )
plt.xkcd()
fig = plt.figure( figsize=(6,4) )
fig = plt.figure( figsize=(6,3.4) )
ax = fig.add_subplot( 1, 1, 1 )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

View File

@ -8,7 +8,7 @@ x1=0.0
x2=1.0
plt.xkcd()
fig = plt.figure( figsize=(6,3.8) )
fig = plt.figure( figsize=(6,3.4) )
ax = fig.add_subplot( 1, 1, 1 )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

View File

@ -7,7 +7,7 @@ g = np.exp(-0.5*x*x)/np.sqrt(2.0*np.pi)
q = [ -0.67488, 0.0, 0.67488 ]
plt.xkcd()
fig = plt.figure( figsize=(6,4) )
fig = plt.figure( figsize=(6,3.4) )
ax = fig.add_subplot( 1, 1, 1 )
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

View File

@ -60,6 +60,11 @@ nicht kleiner als der Median ist (\figref{medianfig}).
insbesondere verschieden lange Datenvektoren testen.}
\end{exercise}
\begin{figure}[t]
\includegraphics[width=1\textwidth]{quartile}
\titlecaption{\label{quartilefig} Median und Quartile einer Normalverteilung.}{}
\end{figure}
Eine Wahrscheinlichkeitsverteilung kann weiter durch die Position
ihrere \determ[Quartil]{Quartile} charakterisiert werden. Zwischen den
Quartilen liegen jeweils 25\,\% der Daten
@ -67,11 +72,6 @@ Quartilen liegen jeweils 25\,\% der Daten
Einteilung. Das 3. Quartil ist das 75. Perzentil, da 75\,\% der Daten
unterhalb des 3. Quartils liegen.
\begin{figure}[t]
\includegraphics[width=1\textwidth]{quartile}
\titlecaption{\label{quartilefig} Median und Quartile einer Normalverteilung.}{}
\end{figure}
% \begin{definition}[\tr{quartile}{Quartile}]
% Die Quartile Q1, Q2 und Q3 unterteilen die Daten in vier gleich
% gro{\ss}e Gruppen, die jeweils ein Viertel der Daten enthalten.
@ -119,20 +119,6 @@ Wertebereich meist in angrenzende und gleich gro{\ss}e Intervalle.
Histogramme k\"onnen verwendet werden, um die
\determ{Wahrscheinlichkeitsverteilung} der Messwerte abzusch\"atzen.
\begin{exercise}{rollthedie.m}{}
\tr{Write a function that simulates rolling a die $n$ times.}
{Schreibe eine Funktion, die das $n$-malige W\"urfeln mit einem W\"urfel simuliert.}
\end{exercise}
\begin{exercise}{diehistograms.m}{}
\tr{Plot histograms from rolling the die 20, 100, 1000 times. Use
the plain hist(x) function, force 6 bins via hist( x, 6 ), and set
meaningfull bins positions.} {Plotte Histogramme von 20, 100, und
1000-mal w\"urfeln. Benutze \code[hist()]{hist(x)}, erzwinge sechs Bins
mit \code[hist()]{hist(x,6)}, oder setze selbst sinnvolle Bins. Normiere
anschliessend das Histogram auf geeignete Weise.}
\end{exercise}
\begin{figure}[t]
\includegraphics[width=1\textwidth]{diehistograms}
\titlecaption{\label{diehistogramsfig} Histogramme des Ergebnisses
@ -143,7 +129,6 @@ Histogramme k\"onnen verwendet werden, um die
vergleichbar.}
\end{figure}
\newpage
Bei ganzzahligen Messdaten (z.B. die Augenzahl eines W\"urfels oder
die Anzahl von Aktionspotentialen in einem bestimmten Zeitfenster)
kann f\"ur jede auftretende Zahl eine Klasse definiert werden. Damit
@ -154,6 +139,18 @@ Histogrammbalken gibt dann die Wahrscheinlichkeit $P(x_i)$ des
Auftretens der Gr\"o{\ss}e $x_i$ in der $i$-ten Klasse an
\[ P_i = \frac{n_i}{N} = \frac{n_i}{\sum_{i=1}^M n_i} \; . \]
\begin{exercise}{rollthedie.m}{}
\tr{Write a function that simulates rolling a die $n$ times.}
{Schreibe eine Funktion, die das $n$-malige W\"urfeln mit einem W\"urfel simuliert.}
\end{exercise}
\begin{exercise}{diehistograms.m}{}
Plotte Histogramme von 20, 100, und 1000-mal W\"urfeln. Benutze
\code[hist()]{hist(x)}, erzwinge sechs Bins mit
\code[hist()]{hist(x,6)}, oder setze selbst sinnvolle Bins. Normiere
anschliessend das Histogram.
\end{exercise}
\section{\tr{Probability density function}{Wahrscheinlichkeitsdichte}}
@ -191,7 +188,9 @@ Da die Wahrscheinlichkeit irgendeines Wertes $x$ Eins ergeben muss gilt die Norm
\begin{equation}
\label{pdfnorm}
P(-\infty < x < \infty) = \int\limits_{-\infty}^{+\infty} p(x) \, dx = 1 \; .
\end{equation}
\end{equation}
\pagebreak[2]
Die gesamte Funktion $p(x)$, die jedem Wert $x$ einen
Wahrscheinlichkeitsdichte zuordnet wir auch
\determ{Wahrscheinlichkeitsdichtefunktion} (\enterm{probability
@ -204,9 +203,7 @@ Wahrscheinlichkeitsdichtefunktion ist die der \determ{Normalverteilung}
--- die \determ{Gau{\ss}sche-Glockenkurve} mit Mittelwert $\mu$ und
Standardabweichung $\sigma$.
\newpage
\begin{exercise}{gaussianpdf.m}{gaussianpdf.out}
\vspace{-3ex}
\begin{enumerate}
\item Plotte die Wahrscheinlichkeitsdichte der Normalverteilung $p_g(x)$.
\item Berechne f\"ur die Normalverteilung mit Mittelwert Null und
@ -237,6 +234,7 @@ Standardabweichung $\sigma$.
unterschiedlichen Klassenbreiten. Was f\"allt auf?}
\end{exercise}
\pagebreak[2]
Damit Histogramme von reellen Messwerten trotz unterschiedlicher
Anzahl von Messungen und unterschiedlicher Klassenbreiten
untereinander vergleichbar werden und mit bekannten
@ -255,6 +253,7 @@ und das normierte Histogramm hat die H\"ohe
Es muss also nicht nur durch die Summe, sondern auch durch die Breite
$\Delta x$ der Klassen geteilt werden (\figref{pdfhistogramfig}).
\pagebreak[4]
\begin{exercise}{gaussianbinsnorm.m}{}
Normiere das Histogramm der vorherigen \"Ubung zu einer Wahrscheinlichkeitsdichte.
\end{exercise}