diff --git a/programming/exercises/vectors_matrices.tex b/programming/exercises/vectors_matrices.tex index b2d91a3..83eb0ba 100644 --- a/programming/exercises/vectors_matrices.tex +++ b/programming/exercises/vectors_matrices.tex @@ -42,13 +42,11 @@ werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files) im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen ``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: -``variablen\_datentypen\_\{nachname\}.m'' benannt werden -(z.B. variablen\_datentypen\_mueller.m). +\linebreak ``vektoren\_matrizen\_\{nachname\}.m'' benannt werden +(z.B. vektoren\_matrizen\_mueller.m). \begin{questions} - \section*{Vektoren} - \question Erzeuge Vektoren mit folgendem Inhalt: \begin{parts} \part Von 1 bis 10 in ganzzahligen Schritten. @@ -118,7 +116,7 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: \part Erkl\"are die Fehlermeldung. \begin{solution} * ist der Operator f\"ur die Matrixmultiplikation. Bei dieser - muessen die inneren Dimensionen \"uebereinstimmen. + muessen die inneren Dimensionen \"uebereinstimmen.\linebreak \code{disp(size(x))\\1 4 \\disp(size(y)) \\ 1 4}\\ (m,n)*(n,o) w\"are ok. \end{solution} @@ -180,7 +178,7 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: \end{solution} \part Gib die letzten 10 Werte aus. \begin{solution} - \code{disp(x(end-10:end))} + \code{disp(x(end-9:end))} \end{solution} \part Versuche den Wert an der Stelle 0 auszugeben. \begin{solution} @@ -218,13 +216,21 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: \[ A = \left( \begin{array}{ccc} 7 & 3 & 5 \\ 1 & 8 & 3 \\ 8 & 6 & 4 \end{array} \right) \] \begin{parts} + \part Benutze die Funktion \code{size} um die Gr\"o{\ss}e vpm \code{A} anzeeigen zu lassen. + \begin{solution} + \code{x = [7 3 5; 1 8 3; 8 6 4];\\disp(size(x))} + \end{solution} + \part Finde heraus, wie man \code{size} aufruft um nur die L\"ange entlang einer einzelnen Dimension auszugeben. Gib einzeln die L\"angen beider Dimensionen aus. + \begin{solution} + \code{disp(size(x, 1))}\\\code{disp(size(x, 2))} + \end{solution} \part Gib das Element in der 3. Zeile und 2. Spalte aus. \begin{solution} - \code{x = [7 3 5; 1 8 3; 8 6 4];\\x(3,2)} + \code{x(3,2)} \end{solution} \part Gib jeweils alle Elemente der 1., 2. und 3. Zeile aus. \begin{solution} - \code{x([1 2 3],:);} + \code{disp(x([1 2 3],:));} \end{solution} \part Gib jeweils alle Elemente der 1., 2., und 3. Spalte aus. \begin{solution} @@ -250,6 +256,7 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: \begin{parts} \part Gib das Element in der 2. Zeile und 3. Spalte aus. \begin{solution} + \code{M = randn(5, 5);} \code{disp(M(2,3))} \end{solution} @@ -292,7 +299,7 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: \end{solution} \part F\"uhre folgendes Kommando aus: \code{M(1:2,1) = [1, 2, - 3]}. Was k\''onnte die Absicht dieses Codes gewesen sein? Was + 3]}. Was k\"onnte die Absicht dieses Codes gewesen sein? Was bedeutet die Fehlermeldung? \begin{solution} \code{M(1:2,1) = [1, 2,3];\\ Subscripted assignment dimension @@ -315,7 +322,7 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: \part Wie viele Werte enth\"alt sie? \begin{solution} - 100 + \code{disp(numel(x))} \end{solution} \part Benutze das lineare Indizieren um 50 zuf\"allige Werte @@ -326,6 +333,14 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: \part Wo liegt der Vorteil gegen\"uber der \textit{subscript} Indizierung? + \begin{solution} + Die Matrize ist 2-dimensional. Wenn mit dem subscript index + zugegriffen werden soll, dann muss auf die Dimensionen + einzeln geachtet werden. Mit dem linearen Indexieren kann einfach + einen Vektor mit n Indices benutzt werden. Wenn es auch noch eine + eindeutige (ohne doppelte) Auswahl sein soll, dann muss bei + 2-D viel komplexer kontrollieren. + \end{solution} \part Berechne die Summe aller Werte mit einem Funktionsaufruf.. \begin{solution} \code{sum(x(:))} oder \code{sum(sum(x))} @@ -387,11 +402,9 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster: \part Berechne den Mittelwert aller Bl\"atter dieser Matrix (benutze \verb+mean()+, siehe Hilfe). \begin{solution} - \code{x = rand(5,5,5) .* 100;\\ disp(mean(mean(x(:,:,1))))\\ disp(mean(mean(x(:,:,2)))) \\ disp(mean(mean(x(:,:,3))))} + \code{x = round(rand(5,5,5) .* 100);\\ Disp(mean(mean(x(:,:,1))))\\ disp(mean(mean(x(:,:,2)))) \\ disp(mean(mean(x(:,:,3))))} \end{solution} - \end{parts} - \end{questions} -\end{document} \ No newline at end of file +\end{document}