\documentclass[12pt,a4paper,pdftex]{exam} \newcommand{\exercisetopic}{Vectors} \newcommand{\exercisenum}{2} \newcommand{\exercisedate}{3. November, 2020} \input{../../exercisesheader} \firstpagefooter{Dr. Jan Grewe}{}{jan.grewe@uni-tuebingen.de} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \input{../../exercisestitle} The exercises are meant for self-monitoring and revision of the lecture. You should try to solve them on your own. Your solution should be submitted as a single script (m-file) in the Ilias system. Each task should be solved in its own ``cell''. Each cell must be executable on its own. The file should be named according to the following pattern: ``vectors\_\{lastname\}.m'' (e.g. vectors\_mueller.m). \begin{questions} \question Create vectors with the following contents: \begin{parts} \part Integer numbers ranging from 1 to 10. \begin{solution} \code{a = 1:10;} \end{solution} \part Integer numbers in the range 0 to 20 in steps of 2. \begin{solution} \code{a = 0:2:20;} \end{solution} \part \textbf{Descending} values ranging from 100 to 0. \begin{solution} \code{a = 100:-1:0;} \end{solution} \part In 10 steps from 0 to 1. \begin{solution} \code{a = 0:0.1:1;} \end{solution} \part In 11 steps from 0 to 1. \begin{solution} \code{a = 0:1/11:1;} \end{solution} \part In 50 steps from 0 to $2\pi$ ($\pi$ is known in Matlab as the constant \code{pi}). \begin{solution} \code{a = 0:2*pi/50:2*pi;} \end{solution} \end{parts} \question Calculating with vectors: \begin{parts} \part Create a vector \code{x = [3 2 6 8];} \part What is the size of this vector? Use the functions \code{size} and \code{length}. What is the difference between them? \begin{solution} \code{x = [3 2 6 8]; \\ disp(length(x));\\ 4\\ disp(size(x))\\ 1 4} \end{solution} \part What changes in \code{size} and \code{length} when you transpose the vector. \begin{solution} The length does not change, the size is inverted. \end{solution} \part Add 5 to each element of \verb+x+. \begin{solution} \code{disp(x + 5)} \end{solution} \part Multiply each element of \code{x} by 2; \begin{solution} \code{disp(x * 2)} \end{solution} \part Create a second vector (\verb+y = [4 1 3 5];+). Make sure that \code{x} is in its original form (see (a)). \part Add both vectors \code{x + y}. \begin{solution} \code{y = [4 1 3 5]; \\disp(x + y)\\7 3 9 13} \end{solution} \part Subtract \code{y} from \code{x}. \begin{solution} \code{disp(x - y)\\-1 1 3 3} \end{solution} \part Multiply both vectors \code{x * y}. \begin{solution} \code{disp(x * y)\\Error using *. Inner matrix dimension must agree.} \end{solution} \part Explain the error message \begin{solution} * operator is the matrix multiplication. The inner dimensions must agree.\linebreak \code{disp(size(x))\\1 4 \\disp(size(y)) \\ 1 4}\\ (m,n)*(n,o) w\"are ok. \end{solution} \part What needs to be done to make \code{mtimes} and \code{*} working? \begin{solution} y needs to be transposed: \code{x * y'} \end{solution} \part Multiply element-wise (\code{x .* y}) and assign the result to a new variable. \begin{solution} \code{z = x .* y;} \end{solution} \end{parts} \question Creating vectors using helper functions: \begin{parts} \part Create a vector of the length 100 using the function \code{ones} (see help). What is its purpose? \begin{solution} \code{ones(100, 1)} creates a vector of the given size and fills it with 1. \end{solution} \part Create a vector of the length 100 using the function \code{zeros} (see help). What is its purpose? \begin{solution} \code{zeros(100, 1)} creates a vector of the given size and fills it with 0. \end{solution} \part Create a vector with 100 elements. All elements should have the value 4.5. \begin{solution} \code{ones(100, 1) * 4.5} \end{solution} \part Create a 100 element vector filled with random numbers (\code{rand}, see help). \begin{solution} \code{x = rand(100, 1)} \end{solution} \part Use the function \code{linspace} to create a 100 element vector with values between 0 and 1. \begin{solution} \code{x = linspace(0, 1, 100)} \end{solution} \end{parts} \question Indexing in vectors: \begin{parts} \part Create a vector of the length 100 with values ranging from 0 to 99. \begin{solution} \code{x = linspace(0, 99, 100);} \end{solution} \part use \code{disp()} to display the first, last, fifth, 24th and the second-to-last value on the command line. \begin{solution} \code{disp(x(1))\\ disp(x(end))\\ disp(x(5))\\ disp(x(24))\\ disp(x(end-1))} \end{solution} \part Display the first 10 values. \begin{solution} \code{x(1:10)} \end{solution} \part Display the last 10 values. \begin{solution} \code{disp(x(end-9:end))} \end{solution} \part Try to display the value at the zeroth position. \begin{solution} \code{x(0)\\ Subscript indices must either be real positive integers or logicals.} \end{solution} \part Try to access the value at the 110th position. \begin{solution} \code{x(110)\\ Index exceeds matrix dimensions.} \end{solution} \part Access and display the values at the positions 3, 15, and 42 with a single command. \begin{solution} \code{disp(x([3 15 42]))} \end{solution} \part Access and display 10 randomly selected values (used \verb+randi+ to create random indices). \begin{solution} \code{disp(x(randi(100, 10, 1)))} \end{solution} \end{parts} \question Store some text in a variable. The text should consist of at least two words (e.g. \code{x = 'some text'}). Use indexing to display the words individually. \begin{solution} \code{x = 'some text'; \\ disp(x(1:4))\\disp(x(6:end))} \end{solution} \end{questions} \end{document}