Fixed list of figures and listings
This commit is contained in:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user