Improved indices. Added optional parameter for index to *term* macros.

This commit is contained in:
2015-11-22 23:16:22 +01:00
parent 3d4d778bdd
commit 993ab5d8e7
16 changed files with 138 additions and 134 deletions

View File

@@ -199,7 +199,7 @@ Dimension die Gr\"o{\ss}e 1 hat.
Im Gegensatz zu Variablen, die einzelene Werte beinhalten
(Skalare), kann ein Vektor mehrere Werte des gleichen Datentyps
beinhalten (Abbildung \ref{vectorfig} B). Die Variable \code{a}
beinhalten (Abbildung \ref{vectorfig} B). Die Variable \varcode{a}
enth\"alt im Beispiel in Abbildung \ref{vectorfig} vier ganzzahlige Werte.
\begin{figure}
@@ -228,10 +228,10 @@ k\"onnen.
0 2 4 6 8 10
\end{lstlisting}
Die L\"ange eines Vektors, d.h. die Anzahl der Elemente des Vektors,
kann mithilfe der Funktionen \code{length()} und \code{numel} bestimmt
kann mithilfe der Funktionen \code{length()} und \code{numel()} bestimmt
werden. \"Ahnliche Information kann \"uber die Funktion \code{size()}
erhalten werden (Listing \ref{arrayListing2}). Im Falle des Vektors
\code{a} von oben erh\"alt man folgende Ausgabe:
\varcode{a} von oben erh\"alt man folgende Ausgabe:
\begin{lstlisting}[label=arrayListing2, caption={Gr\"o{\ss}e von Vektoren.}]
>> length(a)
@@ -244,7 +244,7 @@ erhalten werden (Listing \ref{arrayListing2}). Im Falle des Vektors
Diese Ausgabe zeigt, dass Vektoren im Grunde 2-dimensional sind. Bei
einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e
1. \code{length(a)} gibt die l\"angste Ausdehnung an. Der \code{'}-
1. \code[length()]{length(a)} gibt die l\"angste Ausdehnung an. Der \code{'}-
Operator transponiert den Spaltenvektor zu einem Zeilenvektor (Zeilen 14 ff.).
@@ -323,7 +323,7 @@ Element gleichzeitig zuzugreifen.
\end{lstlisting}
\begin{exercise}{vectorsize.m}{vectorsize.out}
Der R\"uckgabewert von \code{size(a)} ist wieder ein Vektor der
Der R\"uckgabewert von \code[size()]{size(a)} ist wieder ein Vektor der
L\"ange 2. Wie k\"onnte man also die Gr\"o{\ss}e von \varcode{a} in der
zweiten Dimension herausfinden?
\end{exercise}
@@ -470,14 +470,14 @@ einzelnen Zeilen der Matrize.
Zur Defintion von mehr-dimensionalen Matrizen ist die Notation in
Zeile 1 nicht geeignet. Es gibt allerdings eine Reihe von
Helferfunktionen, die n-dimensionale Matrizen erstellen k\"onnen
(z.B. \code{ones}, Zeile 7). Sollte sich die Notwendigkeit ergeben
mehrdimensionale Matrizen zusammenzuf\"ugen hilft die \code{cat}
(z.B. \code{ones()}, Zeile 7). Sollte sich die Notwendigkeit ergeben
mehrdimensionale Matrizen zusammenzuf\"ugen hilft die \code{cat()}
Funktion.
Um Informationen \"uber die Gr\"o{\ss}e einer Matrize zu bekommen ist
die Funktion \code{length} nicht geeignet. Wie oben erw\"ahnt gibt sie
die Funktion \code{length()} nicht geeignet. Wie oben erw\"ahnt gibt sie
die Gr\"o{\ss}e der l\"angsten Dimension aus. Wann immer es um
Matrizen geht, wird \code{size} benutzt.
Matrizen geht, wird \code{size()} benutzt.
\begin{figure}
\includegraphics[width=0.9\columnwidth]{matrixIndexing}
@@ -524,7 +524,7 @@ Alternativ zum \codeterm{subscript indexing} k\"onnen die Zellen einer
Matrize auch \emph{linear} angesprochen werden (Abbildung
\ref{matrixlinearindexingfig}). Diese Art der Adressierung ist nicht
so intuitiv verst\"andlich, kann aber sehr hilfreich sein. Der
``linare'' Index einer Zelle reicht von 1 bis \code{numel(M)}
``linare'' Index einer Zelle reicht von 1 bis \code[numel()]{numel(M)}
Elemente. Wobei dieser erst entlang der 1. Dimension, dann der 2.,
3. etc. Dimension ansteigt. Listing \ref{matrixLinearIndexing} zeigt
ein Beispiel f\"ur den Einsatz des linearen Indizierens z.B. wenn man
@@ -682,7 +682,7 @@ zu wahr oder falsch ausgewertet werden wird. Wenn zwei Aussagen mit
einem UND verkn\"upft werden und der erste zu falsch ausgewertet wird,
muss der zweite gar nicht mehr gepr\"uft werden. Die Verwendung der
``short-circuit'' Versionen spart Rechenzeit. Das auschlie{\ss}ende ODER
(XOR) ist in \matlab{} nur als Funktion \code{xor(A, B)} verf\"ugbar.
(XOR) ist in \matlab{} nur als Funktion \code[xor()]{xor(A, B)} verf\"ugbar.
\begin{table}[th]
\titlecaption{\label{logicaloperators}
@@ -935,7 +935,7 @@ end
\begin{exercise}{facultyLoop.m}{facultyLoop.out}
Wie k\"onnte Fakult\"at mit einer Schleife implementiert werden?
Implementiere eine \code{for} Schleife, die die Fakul\"at von einer
Zahl \code{n} berechnet.
Zahl \varcode{n} berechnet.
\end{exercise}
@@ -1254,18 +1254,18 @@ hei{\ss}en soll, (ii) welche Information sie ben\"otigt und (iii)
welche Daten sie zur\"uckliefern soll.
\begin{enumerate}
\item \codeterm{Name:} der Name sollte beschreiben, was die Funktion
\item \codeterm{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}.
\item \codeterm{Argumente:} die zu brechnende Sinusschwingung sei durch
w\"are also \code{calculate\_sinewave()}.
\item \codeterm{Argumente}: die zu brechnende Sinusschwingung sei durch
ihre Frequenz und die Amplitude bestimmt. Des Weiteren soll noch
festgelegt werden, wie lang der Sinus sein soll und mit welcher
zeitlichen Aufl\"osung gerechnet werden soll. Es werden also vier
Argumente ben\"otigt, sie k\"onnten hei{\ss}en: \code{amplitude},
\code{frequency}, \code{t\_max}, \code{t\_step}.
\item \codeterm{R\"uckgabewerte:} Um den Sinus korrekt darstellen zu k\"onnen brauchen wir die
Argumente ben\"otigt, sie k\"onnten hei{\ss}en: \varcode{varamplitude},
\varcode{frequency}, \varcode{t\_max}, \varcode{t\_step}.
\item \codeterm{R\"uckgabewerte}: Um den Sinus korrekt darstellen zu k\"onnen brauchen wir die
Zeitachse und die entsprechenden Werte. Es werden also zwei
Variablen zur\"uckgegeben: \code{time, sine}
Variablen zur\"uckgegeben: \varcode{time}, \varcode{sine}
\end{enumerate}
Mit dieser Information ist es nun gut m\"oglich die Funktion zu
implementieren (Listing \ref{sinefunctionlisting}).
@@ -1289,7 +1289,7 @@ function [time, sine] = calculate_sinewave(frequency, amplitude, t_max, t_step)
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
(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