Fixed list of figures and listings
This commit is contained in:
parent
89af24fbd9
commit
3899df8036
@ -44,7 +44,7 @@ die \determ{Stichprobenverteilung} (\enterm{sampling distribution},
|
||||
\includegraphics[height=0.2\textheight]{srs2}\\[2ex]
|
||||
\includegraphics[height=0.2\textheight]{srs3}
|
||||
\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
|
||||
Stichproben (SRS: simple random samples). Die Statistik (hier
|
||||
Bestimmung von $\bar x$) kann f\"ur jede Stichprobe berechnet
|
||||
|
@ -5,7 +5,7 @@
|
||||
\lstset{inputpath=../code}
|
||||
\graphicspath{{figures/}}
|
||||
|
||||
\setcounter{page}{129}
|
||||
\setcounter{page}{133}
|
||||
\setcounter{chapter}{8}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
@ -10,7 +10,7 @@ einige dieser ``Design pattern'' zusammen.
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{for Schleifen \"uber Vektoren}
|
||||
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
|
||||
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.
|
||||
@ -24,7 +24,7 @@ end
|
||||
Wenn in der Schleife das Ergebnis in einen Vektor gespeichert werden soll,
|
||||
sollten wir vor der Schleife schon einen Vektor f\"ur die Ergebnisse
|
||||
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
|
||||
y = zeros(length(x),1); % Platz fuer die Ergebnisse, genauso viele wie Loops der Schleife
|
||||
for i=1:length(x)
|
||||
@ -39,7 +39,7 @@ mean(y)
|
||||
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
|
||||
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
|
||||
y = zeros(length(x),10); % Platz fuer die Ergebnisse
|
||||
for i=1:length(x)
|
||||
@ -54,7 +54,7 @@ mean(y, 1)
|
||||
|
||||
Alternativ k\"onnen die in der Schleife erzeugten Vektoren zu einem
|
||||
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
|
||||
y = []; % Leerer Vektor fuer die Ergebnisse
|
||||
for i=1:length(x)
|
||||
@ -87,7 +87,7 @@ y = randn(100, 1)*sigma + mu;
|
||||
\end{lstlisting}
|
||||
|
||||
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
|
||||
plot(x, exp(-x.*x));
|
||||
% 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.
|
||||
|
||||
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
|
||||
histogram(x, 'Normalization', 'pdf');
|
||||
\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
|
||||
histogram(x, 'Normalization', 'probability');
|
||||
\end{lstlisting}
|
||||
|
||||
So geht es aber auch:
|
||||
\begin{lstlisting}[caption={Probability-density-function mit der hist- und bar-Funktion}]
|
||||
So geht es mit der \code{hist()}-Funktion:
|
||||
\begin{lstlisting}[caption={Probability-density-function mit der \varcode{hist()}- und \varcode{bar()}-Funktion}]
|
||||
x = randn(100, 1); % irgendwelche reellwertige Daten
|
||||
[h, b] = hist(x); % Histogram berechnen
|
||||
h = h/sum(h)/(b(2)-b(1)); % normieren zu einer Wahrscheinlichkeitsdichte
|
||||
bar(b, h); % und plotten.
|
||||
\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
|
||||
[h, b] = hist(x); % Histogram berechnen
|
||||
h = h/sum(h); % normieren zu Wahrscheinlichkeiten
|
||||
|
@ -177,7 +177,7 @@ Einstellungsm\"oglichkeiten. Wie schon erw\"ahnt, k\"onnen diese
|
||||
\begin{minipage}[t]{0.3\columnwidth}
|
||||
\includegraphics[width=0.9\textwidth]{property_editor}
|
||||
\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
|
||||
welches Element des Plots ausgew\"ahlt wurde, ver\"andern sich
|
||||
die Einstellungsm\"oglichkeiten. Weitere Eigenschaften und
|
||||
|
@ -25,7 +25,9 @@ sogenannten \determ[Punktprozess]{Punktprozessen}.
|
||||
(homogener Poisson Prozess mit Rate $\lambda=20$\;Hz, links) und
|
||||
eines nicht-station\"aren Punktprozesses (perfect
|
||||
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}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -302,13 +304,11 @@ Abbildung \ref{psthfig} n\"aher erl\"autert.
|
||||
|
||||
\begin{figure}[tp]
|
||||
\includegraphics[width=\columnwidth]{firingrates}
|
||||
\titlecaption{Verschiedene Methoden die zeitabh\"angige Feuerrate
|
||||
zu bestimmen.}{\textbf{A)} Rasterplot einer einzelnen neuronalen
|
||||
Antwort. Jeder vertikale Strich notiert den Zeitpunkt eines
|
||||
Aktionspotentials. \textbf{B)} Feurerrate aus der instantanen
|
||||
Feuerrate bestimmt. \textbf{C)} klassisches PSTH mit der Binning
|
||||
Methode. \textbf{D)} Feuerrate durch Faltung mit einem Gauss Kern
|
||||
bestimmt.}\label{psthfig}
|
||||
\titlecaption{Bestimmung der zeitabh\"angigen
|
||||
Feuerrate.}{\textbf{A)} Rasterplot eines Spiketrains. \textbf{B)}
|
||||
Feurerrate aus der instantanen Feuerrate bestimmt. \textbf{C)}
|
||||
klassisches PSTH mit der Binning Methode. \textbf{D)} Feuerrate
|
||||
durch Faltung mit einem Gauss Kern bestimmt.}\label{psthfig}
|
||||
\end{figure}
|
||||
|
||||
|
||||
@ -317,8 +317,7 @@ Abbildung \ref{psthfig} n\"aher erl\"autert.
|
||||
\begin{figure}[tp]
|
||||
\includegraphics[width=\columnwidth]{isimethod}
|
||||
\titlecaption{Instantane Feuerrate.}{Skizze eines Spiketrains
|
||||
(oben). Jeder vertikale Strich notiert den Zeitpunkt eines
|
||||
Aktionspotentials. Die Pfeile zwischen aufeinanderfolgenden
|
||||
(oben). Die Pfeile zwischen aufeinanderfolgenden
|
||||
Aktionspotentialen mit den Zahlen in Millisekunden illustrieren
|
||||
die Interspikeintervalle. Der Kehrwert des Interspikeintervalle
|
||||
ergibt die instantane Feuerrate.}\label{instrate}
|
||||
|
@ -295,24 +295,22 @@ sich um einen Zeilen- oder Spaltenvektor handelt.
|
||||
Die Listings \ref{arrayListing4} und \ref{arrayListing5} zeigen wie
|
||||
mit Indexen auf die Inhalte eines Vektors zugegriffen werden kann.
|
||||
|
||||
\begin{lstlisting}[label=arrayListing4, caption={Zugriff auf den Inhalt von Vektoren I}]
|
||||
>> a = (11:20);
|
||||
>> a(1) % das 1. Element
|
||||
ans =
|
||||
11
|
||||
>> a(5) % das 5. Element
|
||||
ans =
|
||||
15
|
||||
>> a(end) % das letzte Element
|
||||
ans =
|
||||
20
|
||||
\begin{lstlisting}[label=arrayListing4, caption={Zugriff auf den Inhalt von Vektoren: einzelne Elemente}]
|
||||
>> a = (11:20)
|
||||
a = 11 12 13 14 15 16 17 18 19 20
|
||||
>> a(1) % das 1. Element
|
||||
ans = 11
|
||||
>> a(5) % das 5. Element
|
||||
ans = 15
|
||||
>> a(end) % das letzte Element
|
||||
ans = 20
|
||||
\end{lstlisting}
|
||||
|
||||
Hierbei kann auf einzelne Werte zugegriffen werden oder, analog zur
|
||||
Erzeugung von Vektoren, die \code[Operator!Matrix!:]{:} Notation verwendet werden, um auf mehrere
|
||||
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
|
||||
ans =
|
||||
11 13 15
|
||||
@ -578,7 +576,7 @@ Eine elementweise Multiplikation
|
||||
\ref{matrixOperations} Zeile 12, Box \ref{matrixmultiplication})
|
||||
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 =
|
||||
3 8 2
|
||||
@ -849,10 +847,10 @@ bestimmten Zeitraums ausw\"ahlen m\"ochte (Abbildung
|
||||
|
||||
\begin{figure}[h]
|
||||
\includegraphics[width= 0.9\columnwidth]{logicalIndexingTime}
|
||||
\titlecaption{Beispiel f\"ur ``indirektes'' logisches Indizieren.}
|
||||
{Der rot markierte Abschnitt aus den Daten wurde ``indirekt''
|
||||
anhand logischen Indizierens auf dem Zeitvektor
|
||||
ausgew\"ahlt.}\label{logicalindexingfig}
|
||||
\titlecaption{Beispiel f\"ur logisches Indizieren.}
|
||||
{Der rot markierte Abschnitt aus den Daten wurde indirekt
|
||||
mit logischem Indizieren auf dem Zeitvektor
|
||||
ausgew\"ahlt (\varcode{x(t > 5 & t < 6)}).}\label{logicalindexingfig}
|
||||
\end{figure}
|
||||
|
||||
\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
|
||||
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]
|
||||
for x = 1:5
|
||||
% ... etwas sinnvolles mit x ...
|
||||
end
|
||||
\begin{lstlisting}[caption={Beispiel einer \varcode{for}-Schleife.}, label=looplisting]
|
||||
>> for x = 1:5
|
||||
disp(x);
|
||||
end
|
||||
% die Laufvariable x nimmt mit jeder Iteration der Schleife
|
||||
% einen Wert des Vektors 1:5 an:
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
@ -1106,22 +1111,32 @@ werden, werden die Schl\"usselworte \code{break} und
|
||||
\code{continue} eingesetzt (Listing \ref{breakcontinuelisting}
|
||||
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]
|
||||
for x = 1:10
|
||||
\begin{lstlisting}[caption={Abbrechen von Schleifen mit \varcode{break}.}, label=breaklisting]
|
||||
>> 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)
|
||||
continue;
|
||||
end
|
||||
disp(x);
|
||||
end
|
||||
|
||||
x = 1;
|
||||
while true
|
||||
if(x > 5)
|
||||
break;
|
||||
end
|
||||
disp(x);
|
||||
x = x + 1
|
||||
end
|
||||
% output:
|
||||
1
|
||||
2
|
||||
5
|
||||
\end{lstlisting}
|
||||
|
||||
\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
|
||||
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
|
||||
t = (0:0.01:2); % hier faengt der Funktionskoerper an
|
||||
frequenz = 1.0;
|
||||
@ -1277,7 +1292,7 @@ welche Daten sie zur\"uckliefern soll.
|
||||
\begin{enumerate}
|
||||
\item \codeterm[Funktion!Name]{Name}: der Name sollte beschreiben, was
|
||||
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
|
||||
Sinusschwingung sei durch ihre Frequenz und die Amplitude
|
||||
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
|
||||
implementieren (Listing \ref{sinefunctionlisting}).
|
||||
|
||||
\begin{lstlisting}[caption={Funktion, die einen Sinus berechnet.}, label=sinefunctionlisting]
|
||||
function [time, sine] = calculate_sinewave(frequency, amplitude, t_max, t_step)
|
||||
% The function calculates a sinewave with a given frequency and
|
||||
% amplitude.
|
||||
\begin{lstlisting}[caption={Funktion zur Berechnung eines Sinus.}, label=sinefunctionlisting]
|
||||
function [time, sine] = sinewave(frequency, amplitude, t_max, t_step)
|
||||
% Calculate a sinewave of a given frequency, amplitude, duration and temporal resolution.
|
||||
% [time, sine] = sinewave(frequency, amplitude, t_max, t_step)
|
||||
% Arguments: frequency, the frequency of the sine
|
||||
% amplitude, the amplitude of the sine
|
||||
% 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
|
||||
time = (0:t_step:t_max);
|
||||
sine = sin(frequency .* time .* 2 * pi) .* amplitude;
|
||||
end
|
||||
\end{lstlisting}
|
||||
|
||||
|
||||
\paragraph{II. Plotten einer einzelnen Schwingung}
|
||||
Diese Aufgabe kann auch von einer Funktion \"ubernommen werden. Diese
|
||||
Funktion hat keine andere Aufgabe, als die Daten zu plotten. Ihr Name
|
||||
sollte sich an dieser Aufgabe orientieren
|
||||
(z.B. \code{plot\_sinewave()}). Um einen einzelnen Sinus zu plotten
|
||||
werden im Wesentlichen die x-Werte und die zugeh\"origen y-Werte
|
||||
ben\"otigt. Da mehrere Sinus geplottet werden sollen ist es auch
|
||||
sinnvoll eine Zeichenkette f\"ur die Legende an die Funktion zu
|
||||
Das Plotten der berechneten Sinuschwingung kann auch von einer
|
||||
Funktion \"ubernommen werden. Diese Funktion hat keine andere Aufgabe,
|
||||
als die Daten zu plotten. Ihr Name sollte sich an dieser Aufgabe
|
||||
orientieren (z.B. \code{plot\_function()}). Um einen einzelnen Sinus
|
||||
zu plotten werden im Wesentlichen die x-Werte und die zugeh\"origen
|
||||
y-Werte ben\"otigt. Da mehrere Sinus geplottet werden sollen ist es
|
||||
auch sinnvoll eine Zeichenkette f\"ur die Legende an die Funktion zu
|
||||
\"ubergeben. Da diese Funktion keine Berechnung durchf\"uhrt wird kein
|
||||
R\"uckgabewert ben\"otigt (Listing \ref{sineplotfunctionlisting}).
|
||||
|
||||
\begin{lstlisting}[caption={Funktion, die die Daten plottet.}, label=sineplotfunctionlisting]
|
||||
function plot_sinewave(x_data, y_data, name)
|
||||
\begin{lstlisting}[caption={Funktion zur graphischen Darstellung der Daten.}, label=sineplotfunctionlisting]
|
||||
function plot_function(x_data, y_data, 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
|
||||
% y_data, the y-data
|
||||
% name, the displayname
|
||||
plot(x_data, y_data, 'displayname', name)
|
||||
end
|
||||
\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
|
||||
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;
|
||||
frequency = 2;
|
||||
t_max = 10;
|
||||
frequency = 2.0;
|
||||
t_max = 10.0;
|
||||
t_step = 0.01;
|
||||
|
||||
figure()
|
||||
hold on
|
||||
|
||||
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);
|
||||
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)))
|
||||
end
|
||||
legend('show')
|
||||
|
@ -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,
|
||||
dass eine F\"ulle von Dateien erzeugt wird, die die
|
||||
\"Ubersichtlichkeit nicht unbedingt erh\"oht. Wenn die auszulagernde
|
||||
Funktionalit\"at an vielen Stellen ben\"otigt wird ist es dennoch
|
||||
sinnvoll dies zu tun. Wenn nicht, dann bietet \matlab{} die
|
||||
M\"oglichkeit sogenannte \codeterm[Funktion!lokale]{lokale Funktionen}
|
||||
oder auch \codeterm[Funktion!geschachtelte|see{lokale}]{geschachtelte
|
||||
Funktionen} (\enterm{nested functions}) zu erstellen. Listing
|
||||
\ref{localfunctions} zeigt ein Beispiel f\"ur eine lokale Funktion.
|
||||
|
||||
\lstinputlisting[label=localfunctions, caption={Lokale Funktionen
|
||||
erh\"ohen die Lesbarkeit sind aber nur innerhalb der definierenden
|
||||
Datei verf\"ugbar.}]{calculate_sines.m}
|
||||
Funktionalit\"at an vielen Stellen ben\"otigt wird ist es dennoch sehr
|
||||
sinnvoll dies zu tun. Wenn Funktionen nur von einzelnen anderen
|
||||
Funktionen verwendet werden, dann bietet \matlab{} die M\"oglichkeit
|
||||
sogenannte \codeterm[Funktion!lokale]{lokale Funktionen} oder auch
|
||||
\codeterm[Funktion!geschachtelte]{geschachtelte Funktionen}
|
||||
(\enterm{nested functions}) in einer einzelnen Datei zu
|
||||
erstellen. Listing \ref{localfunctions} zeigt ein Beispiel f\"ur eine
|
||||
lokale Funktion.
|
||||
|
||||
\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
|
||||
verf\"ugbar. Jede Funktion hat ihren eigenen G\"ultigkeitsbereich, das
|
||||
hei{\ss}t, dass Variablen aus den aufrufenden Funktionen nicht
|
||||
sichtbar sind. Bei sogenannten
|
||||
\codeterm[Funktion!geschachtelte|see{lokale}]{geschachtelten
|
||||
Funktionen} ist das anders. Diese werden innerhalb eines
|
||||
sichtbar sind.
|
||||
|
||||
Bei sogenannten \codeterm[Funktion!geschachtelte}]{geschachtelten
|
||||
Funktionen} ist das anders. Diese werden innerhalb eines
|
||||
Funktionsk\"orpers (zwischen den Schl\"usselworten \code{function} und
|
||||
dem \code{end} definiert und k\"onnen auf alle Variablen der
|
||||
``Mutterfunktion'' zugreifen und diese auch ver\"andern. Folglich
|
||||
@ -407,7 +409,7 @@ diese sollten dann beachtet werden.
|
||||
Wiederholte Programmabschnitte sollten in Funktionen ausgelagert
|
||||
werden. Wenn diese nicht von globalem Interesse sind, kann mit
|
||||
\codeterm[Funktion!lokale]{lokalen} oder
|
||||
\codeterm[Funktion!geschachtelte|see{lokale}]{geschachtelten
|
||||
\codeterm[Funktion!geschachtelte]{geschachtelten
|
||||
Funktionen} die \"Ubersichtlichkeit erh\"oht werden.
|
||||
|
||||
\noindent Es lohnt sich auf den eigenen Programmierstil zu
|
||||
|
@ -300,7 +300,7 @@ partielle Ableitung nach $m$ durch
|
||||
|
||||
\begin{figure}[t]
|
||||
\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
|
||||
Steigung f\"ur verschiedene Parameterkombination aus Steigung und
|
||||
$y$-Achsenabschnitt an. Die Kontourlinien im Hintergrund
|
||||
|
@ -221,7 +221,7 @@ Standardabweichung $\sigma$.
|
||||
|
||||
\begin{figure}[t]
|
||||
\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
|
||||
des absoluten Histogramms h\"angt von der Klassenbreite
|
||||
ab. Rechts: Bei auf das Integral normierten Histogrammen werden
|
||||
@ -287,7 +287,7 @@ nur unzureichend oder \"uberhaupt nicht erfasst (\figref{nonlincorrelationfig}).
|
||||
|
||||
\begin{figure}[tp]
|
||||
\includegraphics[width=1\textwidth]{nonlincorrelation}
|
||||
\titlecaption{\label{nonlincorrelationfig} Korrelationen von
|
||||
\titlecaption{\label{nonlincorrelationfig} Korrelationen bei
|
||||
nichtlineare Zusammenh\"angen.}{Der Korrelationskoeffizienten
|
||||
erfasst nur lineare Zusammenh\"ange. Sowohl die quadratische
|
||||
Abh\"angigkeit (links) als auch eine Rauschkorrelation (rechts),
|
||||
|
Reference in New Issue
Block a user