Fixed list of figures and listings

This commit is contained in:
Jan Benda 2015-11-24 13:26:15 +01:00
parent 89af24fbd9
commit 3899df8036
9 changed files with 111 additions and 92 deletions

View File

@ -44,7 +44,7 @@ die \determ{Stichprobenverteilung} (\enterm{sampling distribution},
\includegraphics[height=0.2\textheight]{srs2}\\[2ex] \includegraphics[height=0.2\textheight]{srs2}\\[2ex]
\includegraphics[height=0.2\textheight]{srs3} \includegraphics[height=0.2\textheight]{srs3}
\titlecaption{\label{bootstrapsamplingdistributionfig}Bootstrap der \titlecaption{\label{bootstrapsamplingdistributionfig}Bootstrap der
Stichprobenverteilung}{(a) Von der Grundgesamtheit (population) mit Stichprobenverteilung.}{(a) Von der Grundgesamtheit (population) mit
unbekanntem Parameter (z.B. Mittelwert $\mu$) zieht man unbekanntem Parameter (z.B. Mittelwert $\mu$) zieht man
Stichproben (SRS: simple random samples). Die Statistik (hier Stichproben (SRS: simple random samples). Die Statistik (hier
Bestimmung von $\bar x$) kann f\"ur jede Stichprobe berechnet Bestimmung von $\bar x$) kann f\"ur jede Stichprobe berechnet

View File

@ -5,7 +5,7 @@
\lstset{inputpath=../code} \lstset{inputpath=../code}
\graphicspath{{figures/}} \graphicspath{{figures/}}
\setcounter{page}{129} \setcounter{page}{133}
\setcounter{chapter}{8} \setcounter{chapter}{8}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View File

@ -10,7 +10,7 @@ einige dieser ``Design pattern'' zusammen.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{for Schleifen \"uber Vektoren} \section{for Schleifen \"uber Vektoren}
Grundlegend ist das Iterieren \"uber den Inhalt eines Vektors mit einer \code{for}-Schleife: Grundlegend ist das Iterieren \"uber den Inhalt eines Vektors mit einer \code{for}-Schleife:
\begin{lstlisting}[caption={for-Schleife mit Indexen \"uber einen Vektor}] \begin{lstlisting}[caption={\varcode{for}-Schleife mit Indexen \"uber einen Vektor}]
x = [2:3:20]; % irgendein Vektor x = [2:3:20]; % irgendein Vektor
for i=1:length(x) % Mit der for-Schleife "loopen" wir ueber den Vektor for i=1:length(x) % Mit der for-Schleife "loopen" wir ueber den Vektor
i % das ist der Index, der die Elemente des Vektors indiziert. i % das ist der Index, der die Elemente des Vektors indiziert.
@ -24,7 +24,7 @@ end
Wenn in der Schleife das Ergebnis in einen Vektor gespeichert werden soll, Wenn in der Schleife das Ergebnis in einen Vektor gespeichert werden soll,
sollten wir vor der Schleife schon einen Vektor f\"ur die Ergebnisse sollten wir vor der Schleife schon einen Vektor f\"ur die Ergebnisse
erstellen: erstellen:
\begin{lstlisting}[caption={for-Schleife zum Schreiben eines Vektors}] \begin{lstlisting}[caption={\varcode{for}-Schleife zum Schreiben eines Vektors}]
x = [1.2 2.3 2.6 3.1]; % irgendein Vektor x = [1.2 2.3 2.6 3.1]; % irgendein Vektor
y = zeros(length(x),1); % Platz fuer die Ergebnisse, genauso viele wie Loops der Schleife y = zeros(length(x),1); % Platz fuer die Ergebnisse, genauso viele wie Loops der Schleife
for i=1:length(x) for i=1:length(x)
@ -39,7 +39,7 @@ mean(y)
Die Berechnungen in der Schleife k\"onnen statt einer Zahl auch einen Vektor Die Berechnungen in der Schleife k\"onnen statt einer Zahl auch einen Vektor
zur\"uckgeben. Wenn die L\"ange diese Vektors bekannt ist, dann kann vorher zur\"uckgeben. Wenn die L\"ange diese Vektors bekannt ist, dann kann vorher
eine entsprechend gro{\ss}e Matrix angelegt werden: eine entsprechend gro{\ss}e Matrix angelegt werden:
\begin{lstlisting}[caption={for-Schleife zum Schreiben von Zeilen einer Matrix}] \begin{lstlisting}[caption={\varcode{for}-Schleife zum Schreiben von Zeilen einer Matrix}]
x = [2:3:20]; % irgendein Vektor x = [2:3:20]; % irgendein Vektor
y = zeros(length(x),10); % Platz fuer die Ergebnisse y = zeros(length(x),10); % Platz fuer die Ergebnisse
for i=1:length(x) for i=1:length(x)
@ -54,7 +54,7 @@ mean(y, 1)
Alternativ k\"onnen die in der Schleife erzeugten Vektoren zu einem Alternativ k\"onnen die in der Schleife erzeugten Vektoren zu einem
einzigen, durchgehenden Vektor zusammengestellt werden: einzigen, durchgehenden Vektor zusammengestellt werden:
\begin{lstlisting}[caption={for-Schleife zum Aneinanderh\"angen von Vektoren}] \begin{lstlisting}[caption={\varcode{for}-Schleife zum Aneinanderh\"angen von Vektoren}]
x = [2:3:20]; % irgendein Vektor x = [2:3:20]; % irgendein Vektor
y = []; % Leerer Vektor fuer die Ergebnisse y = []; % Leerer Vektor fuer die Ergebnisse
for i=1:length(x) for i=1:length(x)
@ -87,7 +87,7 @@ y = randn(100, 1)*sigma + mu;
\end{lstlisting} \end{lstlisting}
Das gleiche Prinzip ist manchmal auch sinnvoll f\"ur \code{zeros()} oder \code{ones()}: Das gleiche Prinzip ist manchmal auch sinnvoll f\"ur \code{zeros()} oder \code{ones()}:
\begin{lstlisting}[caption={Skalierung von zeros und ones}] \begin{lstlisting}[caption={Skalierung von \varcode{zeros()} und \varcode{ones()}}]
x = -1:0.01:2; % Vektor mit x-Werten x = -1:0.01:2; % Vektor mit x-Werten
plot(x, exp(-x.*x)); plot(x, exp(-x.*x));
% Plotte f\"ur die gleichen x-Werte eine Linie mit y=0.8: % Plotte f\"ur die gleichen x-Werte eine Linie mit y=0.8:
@ -142,25 +142,25 @@ mit anderen Histogrammen oder mit theoretischen
Wahrscheinlichkeitsverteilungen werden. Wahrscheinlichkeitsverteilungen werden.
Die \code{histogram()} Funktion macht das mit den entsprechenden Parametern automatisch: Die \code{histogram()} Funktion macht das mit den entsprechenden Parametern automatisch:
\begin{lstlisting}[caption={Probability-density-function mit der histogram-Funktion}] \begin{lstlisting}[caption={Probability-density-function mit der \varcode{histogram()}-Funktion}]
x = randn(100, 1); % irgendwelche reellwertige Daten x = randn(100, 1); % irgendwelche reellwertige Daten
histogram(x, 'Normalization', 'pdf'); histogram(x, 'Normalization', 'pdf');
\end{lstlisting} \end{lstlisting}
\begin{lstlisting}[caption={Probability mit der histogram-Funktion}] \begin{lstlisting}[caption={Probability mit der \varcode{histogram()}-Funktion}]
x = randi(6, 100, 1); % irgendwelche integer Daten x = randi(6, 100, 1); % irgendwelche integer Daten
histogram(x, 'Normalization', 'probability'); histogram(x, 'Normalization', 'probability');
\end{lstlisting} \end{lstlisting}
So geht es aber auch: So geht es mit der \code{hist()}-Funktion:
\begin{lstlisting}[caption={Probability-density-function mit der hist- und bar-Funktion}] \begin{lstlisting}[caption={Probability-density-function mit der \varcode{hist()}- und \varcode{bar()}-Funktion}]
x = randn(100, 1); % irgendwelche reellwertige Daten x = randn(100, 1); % irgendwelche reellwertige Daten
[h, b] = hist(x); % Histogram berechnen [h, b] = hist(x); % Histogram berechnen
h = h/sum(h)/(b(2)-b(1)); % normieren zu einer Wahrscheinlichkeitsdichte h = h/sum(h)/(b(2)-b(1)); % normieren zu einer Wahrscheinlichkeitsdichte
bar(b, h); % und plotten. bar(b, h); % und plotten.
\end{lstlisting} \end{lstlisting}
\begin{lstlisting}[caption={Probability mit der hist- und bar-Funktion}] \begin{lstlisting}[caption={Probability mit der \varcode{hist()}- und \varcode{bar()}-Funktion}]
x = randi(6, 100, 1); % irgendwelche integer Daten x = randi(6, 100, 1); % irgendwelche integer Daten
[h, b] = hist(x); % Histogram berechnen [h, b] = hist(x); % Histogram berechnen
h = h/sum(h); % normieren zu Wahrscheinlichkeiten h = h/sum(h); % normieren zu Wahrscheinlichkeiten

View File

@ -177,7 +177,7 @@ Einstellungsm\"oglichkeiten. Wie schon erw\"ahnt, k\"onnen diese
\begin{minipage}[t]{0.3\columnwidth} \begin{minipage}[t]{0.3\columnwidth}
\includegraphics[width=0.9\textwidth]{property_editor} \includegraphics[width=0.9\textwidth]{property_editor}
\end{minipage} \end{minipage}
\titlecaption{Graphisches Interface ``Plot Editor''.}{\"Uber das Menu \titlecaption{Der \matlab{} Plot-Editor.}{\"Uber das Menu
``Tools $\rightarrow$ Edit Plot'' erreicht man den Plot Editor. Je nachdem ``Tools $\rightarrow$ Edit Plot'' erreicht man den Plot Editor. Je nachdem
welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich
die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und

View File

@ -25,7 +25,9 @@ sogenannten \determ[Punktprozess]{Punktprozessen}.
(homogener Poisson Prozess mit Rate $\lambda=20$\;Hz, links) und (homogener Poisson Prozess mit Rate $\lambda=20$\;Hz, links) und
eines nicht-station\"aren Punktprozesses (perfect eines nicht-station\"aren Punktprozesses (perfect
integrate-and-fire Neuron getrieben mit Ohrnstein-Uhlenbeck integrate-and-fire Neuron getrieben mit Ohrnstein-Uhlenbeck
Rauschen mit Zeitkonstante $\tau=100$\,ms, rechts).} Rauschen mit Zeitkonstante $\tau=100$\,ms, rechts). Jeder
vertikale Strich markiert den Zeitpunkt eines Ereignisses.
Jede Zeile zeigt die Ereignisse eines trials.}
\end{figure} \end{figure}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -302,13 +304,11 @@ Abbildung \ref{psthfig} n\"aher erl\"autert.
\begin{figure}[tp] \begin{figure}[tp]
\includegraphics[width=\columnwidth]{firingrates} \includegraphics[width=\columnwidth]{firingrates}
\titlecaption{Verschiedene Methoden die zeitabh\"angige Feuerrate \titlecaption{Bestimmung der zeitabh\"angigen
zu bestimmen.}{\textbf{A)} Rasterplot einer einzelnen neuronalen Feuerrate.}{\textbf{A)} Rasterplot eines Spiketrains. \textbf{B)}
Antwort. Jeder vertikale Strich notiert den Zeitpunkt eines Feurerrate aus der instantanen Feuerrate bestimmt. \textbf{C)}
Aktionspotentials. \textbf{B)} Feurerrate aus der instantanen klassisches PSTH mit der Binning Methode. \textbf{D)} Feuerrate
Feuerrate bestimmt. \textbf{C)} klassisches PSTH mit der Binning durch Faltung mit einem Gauss Kern bestimmt.}\label{psthfig}
Methode. \textbf{D)} Feuerrate durch Faltung mit einem Gauss Kern
bestimmt.}\label{psthfig}
\end{figure} \end{figure}
@ -317,8 +317,7 @@ Abbildung \ref{psthfig} n\"aher erl\"autert.
\begin{figure}[tp] \begin{figure}[tp]
\includegraphics[width=\columnwidth]{isimethod} \includegraphics[width=\columnwidth]{isimethod}
\titlecaption{Instantane Feuerrate.}{Skizze eines Spiketrains \titlecaption{Instantane Feuerrate.}{Skizze eines Spiketrains
(oben). Jeder vertikale Strich notiert den Zeitpunkt eines (oben). Die Pfeile zwischen aufeinanderfolgenden
Aktionspotentials. Die Pfeile zwischen aufeinanderfolgenden
Aktionspotentialen mit den Zahlen in Millisekunden illustrieren Aktionspotentialen mit den Zahlen in Millisekunden illustrieren
die Interspikeintervalle. Der Kehrwert des Interspikeintervalle die Interspikeintervalle. Der Kehrwert des Interspikeintervalle
ergibt die instantane Feuerrate.}\label{instrate} ergibt die instantane Feuerrate.}\label{instrate}

View File

@ -295,24 +295,22 @@ sich um einen Zeilen- oder Spaltenvektor handelt.
Die Listings \ref{arrayListing4} und \ref{arrayListing5} zeigen wie Die Listings \ref{arrayListing4} und \ref{arrayListing5} zeigen wie
mit Indexen auf die Inhalte eines Vektors zugegriffen werden kann. mit Indexen auf die Inhalte eines Vektors zugegriffen werden kann.
\begin{lstlisting}[label=arrayListing4, caption={Zugriff auf den Inhalt von Vektoren I}] \begin{lstlisting}[label=arrayListing4, caption={Zugriff auf den Inhalt von Vektoren: einzelne Elemente}]
>> a = (11:20); >> a = (11:20)
>> a(1) % das 1. Element a = 11 12 13 14 15 16 17 18 19 20
ans = >> a(1) % das 1. Element
11 ans = 11
>> a(5) % das 5. Element >> a(5) % das 5. Element
ans = ans = 15
15 >> a(end) % das letzte Element
>> a(end) % das letzte Element ans = 20
ans =
20
\end{lstlisting} \end{lstlisting}
Hierbei kann auf einzelne Werte zugegriffen werden oder, analog zur Hierbei kann auf einzelne Werte zugegriffen werden oder, analog zur
Erzeugung von Vektoren, die \code[Operator!Matrix!:]{:} Notation verwendet werden, um auf mehrere Erzeugung von Vektoren, die \code[Operator!Matrix!:]{:} Notation verwendet werden, um auf mehrere
Element gleichzeitig zuzugreifen. Element gleichzeitig zuzugreifen.
\begin{lstlisting}[caption={Zugriff auf den Inhalt von Vektoren I}, label=arrayListing5] \begin{lstlisting}[caption={Zugriff auf den Inhalt von Vektoren: Bereiche}, label=arrayListing5]
>> a([1 3 5]) % das 1., 3. und 5. Element >> a([1 3 5]) % das 1., 3. und 5. Element
ans = ans =
11 13 15 11 13 15
@ -578,7 +576,7 @@ Eine elementweise Multiplikation
\ref{matrixOperations} Zeile 12, Box \ref{matrixmultiplication}) \ref{matrixOperations} Zeile 12, Box \ref{matrixmultiplication})
durchgef\"uhrt werden soll. durchgef\"uhrt werden soll.
\begin{lstlisting}[label=matrixOperations, caption={Zwei Arten von Multiplikationen auf Matrizen.}] \begin{lstlisting}[label=matrixOperations, caption={Zwei Arten der Multiplikation von Matrizen.}]
>> A = randi(10, [3, 3]) % 2-D Matrix >> A = randi(10, [3, 3]) % 2-D Matrix
A = A =
3 8 2 3 8 2
@ -849,10 +847,10 @@ bestimmten Zeitraums ausw\"ahlen m\"ochte (Abbildung
\begin{figure}[h] \begin{figure}[h]
\includegraphics[width= 0.9\columnwidth]{logicalIndexingTime} \includegraphics[width= 0.9\columnwidth]{logicalIndexingTime}
\titlecaption{Beispiel f\"ur ``indirektes'' logisches Indizieren.} \titlecaption{Beispiel f\"ur logisches Indizieren.}
{Der rot markierte Abschnitt aus den Daten wurde ``indirekt'' {Der rot markierte Abschnitt aus den Daten wurde indirekt
anhand logischen Indizierens auf dem Zeitvektor mit logischem Indizieren auf dem Zeitvektor
ausgew\"ahlt.}\label{logicalindexingfig} ausgew\"ahlt (\varcode{x(t > 5 & t < 6)}).}\label{logicalindexingfig}
\end{figure} \end{figure}
\begin{exercise}{logicalIndexingTime.m}{} \begin{exercise}{logicalIndexingTime.m}{}
@ -946,10 +944,17 @@ Anweisungen ausgef\"uhrt werden. Die Schleife wird durch das
Schl\"usselwort \code{end} beendet. Listing \ref{looplisting} zeigt Schl\"usselwort \code{end} beendet. Listing \ref{looplisting} zeigt
das Grundger\"ust einer for-Schleife. das Grundger\"ust einer for-Schleife.
\begin{lstlisting}[caption={Beispiel einer \varcode{for} Schleife. Die Laufvariable \varcode{x} nimmt mit jeder Iteration der Schleife einen Wert des Vektors \varcode{1:5} an.}, label=looplisting] \begin{lstlisting}[caption={Beispiel einer \varcode{for}-Schleife.}, label=looplisting]
for x = 1:5 >> for x = 1:5
% ... etwas sinnvolles mit x ... disp(x);
end end
% die Laufvariable x nimmt mit jeder Iteration der Schleife
% einen Wert des Vektors 1:5 an:
1
2
3
4
5
\end{lstlisting} \end{lstlisting}
@ -1106,22 +1111,32 @@ werden, werden die Schl\"usselworte \code{break} und
\code{continue} eingesetzt (Listing \ref{breakcontinuelisting} \code{continue} eingesetzt (Listing \ref{breakcontinuelisting}
zeigt, wie sie eingesetzt werden k\"onnen). zeigt, wie sie eingesetzt werden k\"onnen).
\begin{lstlisting}[caption={Einsatz der \varcode{continue} und \varcode{break} Schl\"usselworte um die Ausf\"uhrung von Code-Abschnitten in Schleifen zu \"uberspringen oder abzubrechen.}, label=breakcontinuelisting] \begin{lstlisting}[caption={Abbrechen von Schleifen mit \varcode{break}.}, label=breaklisting]
for x = 1:10 >> x = 1;
while true
if (x > 3)
break;
end
disp(x);
x = x + 1;
end
% output:
1
2
3
\end{lstlisting}
\begin{lstlisting}[caption={\"Uberspringen von Code-Abschnitten in Schleifen mit \varcode{continue}.}, label=continuelisting]
for x = 1:5
if(x > 2 & x < 5) if(x > 2 & x < 5)
continue; continue;
end end
disp(x); disp(x);
end end
% output:
x = 1; 1
while true 2
if(x > 5) 5
break;
end
disp(x);
x = x + 1
end
\end{lstlisting} \end{lstlisting}
\begin{exercise}{logicalIndexingBenchmark.m}{logicalIndexingBenchmark.out} \begin{exercise}{logicalIndexingBenchmark.m}{logicalIndexingBenchmark.out}
@ -1225,7 +1240,7 @@ Das Folgende Beispiel (Listing \ref{badsinewavelisting}) zeigt eine
Funktion, die eine Reihe von Sinusschwingungen unterschiedlicher Funktion, die eine Reihe von Sinusschwingungen unterschiedlicher
Frequenzen berechnet und graphisch darstellt. Frequenzen berechnet und graphisch darstellt.
\begin{lstlisting}[caption={Eine Beispielfunktion, die eine Reihe Sinusse plottet.},label=badsinewavelisting] \begin{lstlisting}[caption={Ein schlechtes Beispiel einer Funktion, die eine Reihe Sinusse plottet.},label=badsinewavelisting]
function meine_erste_funktion() % Funktionskopf function meine_erste_funktion() % Funktionskopf
t = (0:0.01:2); % hier faengt der Funktionskoerper an t = (0:0.01:2); % hier faengt der Funktionskoerper an
frequenz = 1.0; frequenz = 1.0;
@ -1277,7 +1292,7 @@ welche Daten sie zur\"uckliefern soll.
\begin{enumerate} \begin{enumerate}
\item \codeterm[Funktion!Name]{Name}: der Name sollte beschreiben, was \item \codeterm[Funktion!Name]{Name}: der Name sollte beschreiben, was
die Funktion tut. In diesem Fall berechnet sie einen Sinus. Ein die Funktion tut. In diesem Fall berechnet sie einen Sinus. Ein
geeigneter Name w\"are also \code{calculate\_sinewave()}. geeigneter, kurzer Name w\"are also \code{sinewave()}.
\item \codeterm[Funktion!Argumente]{Argumente}: die zu brechnende \item \codeterm[Funktion!Argumente]{Argumente}: die zu brechnende
Sinusschwingung sei durch ihre Frequenz und die Amplitude Sinusschwingung sei durch ihre Frequenz und die Amplitude
bestimmt. Des Weiteren soll noch festgelegt werden, wie lang der bestimmt. Des Weiteren soll noch festgelegt werden, wie lang der
@ -1293,10 +1308,10 @@ welche Daten sie zur\"uckliefern soll.
Mit dieser Information ist es nun gut m\"oglich die Funktion zu Mit dieser Information ist es nun gut m\"oglich die Funktion zu
implementieren (Listing \ref{sinefunctionlisting}). implementieren (Listing \ref{sinefunctionlisting}).
\begin{lstlisting}[caption={Funktion, die einen Sinus berechnet.}, label=sinefunctionlisting] \begin{lstlisting}[caption={Funktion zur Berechnung eines Sinus.}, label=sinefunctionlisting]
function [time, sine] = calculate_sinewave(frequency, amplitude, t_max, t_step) function [time, sine] = sinewave(frequency, amplitude, t_max, t_step)
% The function calculates a sinewave with a given frequency and % Calculate a sinewave of a given frequency, amplitude, duration and temporal resolution.
% amplitude. % [time, sine] = sinewave(frequency, amplitude, t_max, t_step)
% Arguments: frequency, the frequency of the sine % Arguments: frequency, the frequency of the sine
% amplitude, the amplitude of the sine % amplitude, the amplitude of the sine
% t_max, the duration of the sine in seconds % t_max, the duration of the sine in seconds
@ -1305,27 +1320,30 @@ function [time, sine] = calculate_sinewave(frequency, amplitude, t_max, t_step)
% sine, the calculated sinewave % sine, the calculated sinewave
time = (0:t_step:t_max); time = (0:t_step:t_max);
sine = sin(frequency .* time .* 2 * pi) .* amplitude; sine = sin(frequency .* time .* 2 * pi) .* amplitude;
end
\end{lstlisting} \end{lstlisting}
\paragraph{II. Plotten einer einzelnen Schwingung} \paragraph{II. Plotten einer einzelnen Schwingung}
Diese Aufgabe kann auch von einer Funktion \"ubernommen werden. Diese Das Plotten der berechneten Sinuschwingung kann auch von einer
Funktion hat keine andere Aufgabe, als die Daten zu plotten. Ihr Name Funktion \"ubernommen werden. Diese Funktion hat keine andere Aufgabe,
sollte sich an dieser Aufgabe orientieren als die Daten zu plotten. Ihr Name sollte sich an dieser Aufgabe
(z.B. \code{plot\_sinewave()}). Um einen einzelnen Sinus zu plotten orientieren (z.B. \code{plot\_function()}). Um einen einzelnen Sinus
werden im Wesentlichen die x-Werte und die zugeh\"origen y-Werte zu plotten werden im Wesentlichen die x-Werte und die zugeh\"origen
ben\"otigt. Da mehrere Sinus geplottet werden sollen ist es auch y-Werte ben\"otigt. Da mehrere Sinus geplottet werden sollen ist es
sinnvoll eine Zeichenkette f\"ur die Legende an die Funktion zu auch sinnvoll eine Zeichenkette f\"ur die Legende an die Funktion zu
\"ubergeben. Da diese Funktion keine Berechnung durchf\"uhrt wird kein \"ubergeben. Da diese Funktion keine Berechnung durchf\"uhrt wird kein
R\"uckgabewert ben\"otigt (Listing \ref{sineplotfunctionlisting}). R\"uckgabewert ben\"otigt (Listing \ref{sineplotfunctionlisting}).
\begin{lstlisting}[caption={Funktion, die die Daten plottet.}, label=sineplotfunctionlisting] \begin{lstlisting}[caption={Funktion zur graphischen Darstellung der Daten.}, label=sineplotfunctionlisting]
function plot_sinewave(x_data, y_data, name) function plot_function(x_data, y_data, name)
% Plots x-data against y-data and sets the display name. % Plots x-data against y-data and sets the display name.
% plot_sinewave(x_data, y_data, name)
% Arguments: x_data, the x-data % Arguments: x_data, the x-data
% y_data, the y-data % y_data, the y-data
% name, the displayname % name, the displayname
plot(x_data, y_data, 'displayname', name) plot(x_data, y_data, 'displayname', name)
end
\end{lstlisting} \end{lstlisting}
@ -1342,19 +1360,19 @@ eine neue Abbildung und setzt das \code{hold on} da nur das Skript
wei{\ss}, das mehr als ein Plot erzeugt werden soll. Das Skript ist in wei{\ss}, das mehr als ein Plot erzeugt werden soll. Das Skript ist in
Listing \ref{sinesskriptlisting} dargestellt. Listing \ref{sinesskriptlisting} dargestellt.
\begin{lstlisting}[caption={Kontrollskript, das die Berechnung und plotting koordiniert.}, label=sinesskriptlisting] \begin{lstlisting}[caption={Kontrollskript zur Koordination von Berechnung und graphischer Darstellung.}, label=sinesskriptlisting]
amplitudes = 0.25:0.25:1.25; amplitudes = 0.25:0.25:1.25;
frequency = 2; frequency = 2.0;
t_max = 10; t_max = 10.0;
t_step = 0.01; t_step = 0.01;
figure() figure()
hold on hold on
for i = 1:length(amplitudes) for i = 1:length(amplitudes)
[x_data, y_data] = calculate_sinewave(frequency, amplitudes(i), ... [x_data, y_data] = sinewave(frequency, amplitudes(i), ...
t_max, t_step); t_max, t_step);
plot_sinewave(x_data, y_data, sprintf('freq: %5.2f, ampl: %5.2f',... plot_function(x_data, y_data, sprintf('freq: %5.2f, ampl: %5.2f',...
frequency, amplitudes(i))) frequency, amplitudes(i)))
end end
legend('show') legend('show')

View File

@ -321,23 +321,25 @@ Code wird \codeterm{Spaghetticode} genannt. Es ist h\"ochste Zeit
Das Auslagern von Funktionalit\"at in eigene Funktionen f\"uhrt dazu, Das Auslagern von Funktionalit\"at in eigene Funktionen f\"uhrt dazu,
dass eine F\"ulle von Dateien erzeugt wird, die die dass eine F\"ulle von Dateien erzeugt wird, die die
\"Ubersichtlichkeit nicht unbedingt erh\"oht. Wenn die auszulagernde \"Ubersichtlichkeit nicht unbedingt erh\"oht. Wenn die auszulagernde
Funktionalit\"at an vielen Stellen ben\"otigt wird ist es dennoch Funktionalit\"at an vielen Stellen ben\"otigt wird ist es dennoch sehr
sinnvoll dies zu tun. Wenn nicht, dann bietet \matlab{} die sinnvoll dies zu tun. Wenn Funktionen nur von einzelnen anderen
M\"oglichkeit sogenannte \codeterm[Funktion!lokale]{lokale Funktionen} Funktionen verwendet werden, dann bietet \matlab{} die M\"oglichkeit
oder auch \codeterm[Funktion!geschachtelte|see{lokale}]{geschachtelte sogenannte \codeterm[Funktion!lokale]{lokale Funktionen} oder auch
Funktionen} (\enterm{nested functions}) zu erstellen. Listing \codeterm[Funktion!geschachtelte]{geschachtelte Funktionen}
\ref{localfunctions} zeigt ein Beispiel f\"ur eine lokale Funktion. (\enterm{nested functions}) in einer einzelnen Datei zu
erstellen. Listing \ref{localfunctions} zeigt ein Beispiel f\"ur eine
\lstinputlisting[label=localfunctions, caption={Lokale Funktionen lokale Funktion.
erh\"ohen die Lesbarkeit sind aber nur innerhalb der definierenden
Datei verf\"ugbar.}]{calculate_sines.m} \lstinputlisting[label=localfunctions, caption={Beispiel f\"ur den
Einsatz von lokalen Funktionen.}]{calculate_sines.m}
Lokale Funktionen existieren in der gleichen Datei und sind nur dort Lokale Funktionen existieren in der gleichen Datei und sind nur dort
verf\"ugbar. Jede Funktion hat ihren eigenen G\"ultigkeitsbereich, das verf\"ugbar. Jede Funktion hat ihren eigenen G\"ultigkeitsbereich, das
hei{\ss}t, dass Variablen aus den aufrufenden Funktionen nicht hei{\ss}t, dass Variablen aus den aufrufenden Funktionen nicht
sichtbar sind. Bei sogenannten sichtbar sind.
\codeterm[Funktion!geschachtelte|see{lokale}]{geschachtelten
Funktionen} ist das anders. Diese werden innerhalb eines Bei sogenannten \codeterm[Funktion!geschachtelte}]{geschachtelten
Funktionen} ist das anders. Diese werden innerhalb eines
Funktionsk\"orpers (zwischen den Schl\"usselworten \code{function} und Funktionsk\"orpers (zwischen den Schl\"usselworten \code{function} und
dem \code{end} definiert und k\"onnen auf alle Variablen der dem \code{end} definiert und k\"onnen auf alle Variablen der
``Mutterfunktion'' zugreifen und diese auch ver\"andern. Folglich ``Mutterfunktion'' zugreifen und diese auch ver\"andern. Folglich
@ -407,7 +409,7 @@ diese sollten dann beachtet werden.
Wiederholte Programmabschnitte sollten in Funktionen ausgelagert Wiederholte Programmabschnitte sollten in Funktionen ausgelagert
werden. Wenn diese nicht von globalem Interesse sind, kann mit werden. Wenn diese nicht von globalem Interesse sind, kann mit
\codeterm[Funktion!lokale]{lokalen} oder \codeterm[Funktion!lokale]{lokalen} oder
\codeterm[Funktion!geschachtelte|see{lokale}]{geschachtelten \codeterm[Funktion!geschachtelte]{geschachtelten
Funktionen} die \"Ubersichtlichkeit erh\"oht werden. Funktionen} die \"Ubersichtlichkeit erh\"oht werden.
\noindent Es lohnt sich auf den eigenen Programmierstil zu \noindent Es lohnt sich auf den eigenen Programmierstil zu

View File

@ -300,7 +300,7 @@ partielle Ableitung nach $m$ durch
\begin{figure}[t] \begin{figure}[t]
\includegraphics[width=0.75\columnwidth]{error_gradient} \includegraphics[width=0.75\columnwidth]{error_gradient}
\titlecaption{Der Gradienten der Fehlerfl\"ache.} \titlecaption{Gradient der Fehlerfl\"ache.}
{Jeder Pfeil zeigt die Richtung und die {Jeder Pfeil zeigt die Richtung und die
Steigung f\"ur verschiedene Parameterkombination aus Steigung und Steigung f\"ur verschiedene Parameterkombination aus Steigung und
$y$-Achsenabschnitt an. Die Kontourlinien im Hintergrund $y$-Achsenabschnitt an. Die Kontourlinien im Hintergrund

View File

@ -221,7 +221,7 @@ Standardabweichung $\sigma$.
\begin{figure}[t] \begin{figure}[t]
\includegraphics[width=1\textwidth]{pdfhistogram} \includegraphics[width=1\textwidth]{pdfhistogram}
\titlecaption{\label{pdfhistogramfig} Histogramme mit verschiednenen \titlecaption{\label{pdfhistogramfig} Histogramme mit verschiedenen
Klassenbreiten von normalverteilten Messwerten.}{Links: Die H\"ohe Klassenbreiten von normalverteilten Messwerten.}{Links: Die H\"ohe
des absoluten Histogramms h\"angt von der Klassenbreite des absoluten Histogramms h\"angt von der Klassenbreite
ab. Rechts: Bei auf das Integral normierten Histogrammen werden ab. Rechts: Bei auf das Integral normierten Histogrammen werden
@ -287,7 +287,7 @@ nur unzureichend oder \"uberhaupt nicht erfasst (\figref{nonlincorrelationfig}).
\begin{figure}[tp] \begin{figure}[tp]
\includegraphics[width=1\textwidth]{nonlincorrelation} \includegraphics[width=1\textwidth]{nonlincorrelation}
\titlecaption{\label{nonlincorrelationfig} Korrelationen von \titlecaption{\label{nonlincorrelationfig} Korrelationen bei
nichtlineare Zusammenh\"angen.}{Der Korrelationskoeffizienten nichtlineare Zusammenh\"angen.}{Der Korrelationskoeffizienten
erfasst nur lineare Zusammenh\"ange. Sowohl die quadratische erfasst nur lineare Zusammenh\"ange. Sowohl die quadratische
Abh\"angigkeit (links) als auch eine Rauschkorrelation (rechts), Abh\"angigkeit (links) als auch eine Rauschkorrelation (rechts),