% creating vector vectors with square brackets () % accessing/assigning vector elements with parentheses ' % the transpose operator, apostrophe : % the colon operator, making range vectors + - % vector addition, subtraction .* ./ .^ % elementwise vector operations
Vectors are hugely important in math, science, engineering. In math, a vector is a list of numbers. E.g. this is a 3-d vector
In math, the components or elements of a vector are written with subscripts. E.g. for the above vector
In Matlab, there's a distinction between row vector and column vectors. You can construct row vectors by listing elements between square brackets, with either spaces or commas between.
>> x = [4.3 5.9 0.1] % assign a row vector into variable x x = 4.3000 5.9000 0.1000
To create a column vectors, put semicolons between the elements.
>> x = [4.3; 5.9; 0.1] % assign a col vector into variable v x = 4.3000 5.9000 0.1000
In Matlab, you access the elements of a vector using parentheses. E.g. given the above vector , you get the 2nd component of this way
>> x(2) ans = 5.9000
Note what happened there. We asked Matlab for the 2nd element of x. It returned the value 5.9 and assigned it to the default return variable
ans. Alternatively, the following will assign or set the value of the second component of to another number.
>> x(2) = 2.7 x = 4.3000 2.7000 0.1000
Note that last method. In Matlab, the apostrophe
' stands for the transpose.
The transpose operator turns a row vector into a column vector, and vice versa.
>> x = [4.3 5.9 0.1] x = 4.3000 5.9000 0.1000 >> x' ans = 4.3000 5.9000 0.1000 >> y = x' y = 4.3000 5.9000 0.1000 >> z = y' z = 4.3000 5.9000 0.1000
The Matlab colon operator : is used in a number of ways. Here we'll see how it can be used to create vectors. The most straightforward of these is the syntax
m:n, which creates a row vector of the integers from
>> 1:10 ans = 1 2 3 4 5 6 7 8 9 10 >> x = 4:7 x = 4 5 6 7
You can also specify a step or increment between the elements using the syntax
m:step:n. For example,
5:2:17 will produce a vector of odd integers between 5 and 17.
>> x = 5:2:17 x = 5 7 9 11 13 15 17
Lastly, the colon operator works with nonintegers, too. E.g.
>> x = 0:0.1:0.7 x = 0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000
In Matlab, vectors are often used to represent *discretized functions*, that is, the values of a function at a discrete set of gridpoints. The starting place for this is often the linspace command:
>> x = linspace(0, 2*pi, 100); % construct a vector x of 100 gridpoints evenly spaced between 0 and 2pi >> f = sin(x); % construct a vector f of sin evaluated at the gridpoints x >> whos x f Name Size Bytes Class Attributes f 1x100 800 double x 1x100 800 double
Note the use of the semicolon to supress output. Who wants to read all 100 elements of
Note also that
f is not actually a function. It's just a vector of the values of at the 100 points in the vector
x. You can see that
f is a vector by the output of
whos x f, which shows that the variables
f are both size
1 x 100, i.e. row vectors of length 100. You can see this clearly by printing the values of
x for a smaller grid.
Matlab has a special dot syntax for elementwise operations on vectors, for operations which have conflicting meanings in linear algebra. For example, in mathematics you can't simply multiply two vectors together. But if you're using vectors to represent discretized functions, sometimes you want to get the product of the functions from a pointwise multiplication of the vectors. For example,
x = linspace(0, 2*pi, 100); % construct a vector x of 100 gridpoints evenly spaced between 0 and 2pi f = sin(x); % construct a vector f of sin x evaluated at the gridpoints x g = cos(x); % construct a vector g of cos x evaluated at the gridpoints x h = f .* g % construct a vector h by pointwise multiplication of vectors f and g % h will consist of the numerical values of sin x cos x % plot f,g,h versus x plot(x, f, 'b-') hold on plot(x, g, 'r-') plot(x, h, 'g-') xlabel('x') legend('sin x', 'cos x', 'sin x cos x')