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]{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
|
||||||
|
@ -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}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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}
|
||||||
|
@ -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')
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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),
|
||||||
|
Reference in New Issue
Block a user