Fixed list of figures and listings

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

View File

@@ -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')