%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% From: MATLAB An Introduction with Applications
% Amos Gilat
%
% Chapter 2 Creating Arrays
%
% Note: As before, to ensure portability, all of the
% commands below were actually executed within
% octave rather than MATLAB
%
% Also, despite the title of the Chapter, much of what
% follows has to do with the manipulation
% of arrays, in addition to their creation.
%
% We should first observe that arrays are by far the
% most important data object (data structure) in
% MATLAB, and the strong support the language provides
% for the creation and manipulation of arrays is a
% major reason that it has become so popular for
% numerical computations. As I have mentioned
% previously, many, if not most, basic techniques in
% numerical analysis (as well as many advanced topics)
% are naturally expressed in the language of vectors
% and matrices, and thus can often be naturally
% expressed in MATLAB.
%
% Importantly, MATLAB provides the means to perform
% operations on arrays as a whole, in addition
% to mechanisms for working with individual elements
% of arrays. The former approach generally leads
% to a more concise expression of a given algorithm
% (for example, many for loops that might
% otherwise be needed can be eliminated), and thus,
% once one masters the whole-array concept, to faster
% code development and implementation. In addition
% manipulation of entire arrays, rather than individual
% elements, can lead to significant enhancement in the
% efficiency of a MATLAB computation---especially for
% large arrays---since the array operations can
% be directly executed by "lower level routines",
% typically coded in Fortran, C, or even assembly
% language.
%
% In the lectures, lab exercises and homeworks to
% follow, we will often try to emphasize the
% whole-array approach, not least since it is
% powerful, but generally takes some getting used to,
% requires that one adopt a somewhat different perspective
% than when using component-wise techniques.
% Nonetheless, one should bear in mind that, for the most
% part, what one can do with whole-array operations,
% one can also accomplish using element-by-
% element computations. This is especially relevant
% should you wish to implement some of the methods
% and algorithms that we will be discussing in some
% other programming language that does not provide
% support for whole-array operations.
%
% With that preamble, let us first note that essentially
% all values and variables in MATLAB are represented
% as arrays. For numerical values, the types of arrays
% that will be of most concern to us are as follows:
%
% Array Dimension Name Typical Array Element
%
% 0 Scalar a0
% 1 Row Vector a1r(k)
% 1 Column Vector a1v(k)
% 2 Matrix a2(k,p)
%
% Note the following:
%
% 1) As we will see, MATLAB distinguishes between
% row and column vectors, concepts which should
% familiar to you from your studies of linear
% algebra
%
% 2) Individual array elements are referenced using
% a single set of the usual parenthesis (), and
% integer-valued subscripts (indexes), with commas
% separating the subscripts as necessary.
%
% 3) I will try to deliberately avoid the use of
% i and j as subscripts due to their
% predefined meaning as sqrt(-1) in MATLAB.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.1 Creating a One Dimensional Array (Vector)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Creating a vector from a given list of numbers
%
% Row vector: General syntax
%
% <name> = [ <num1> <num2> ... <numN> ]
%
% Column vector: General syntax
%
% <name> = [ <num1> <num2> ... ; <numN> ]
%
% IMPORTANT! when creating vectors (and this
% will apply to arrays in general), one uses square
% brackets.
%
% Also, for row vectors, the individual numbers (array
% elements) that are specified can be separated using
% whitespace (you can also use commas, but they are not
% necessary).
%
% For column vectors, the semicolons between successive
% elements are crucial if you want to enter the vector
% on one line, otherwise you can omit the semicolons
% but will then have to hit ENTER after each entry,
% i.e. the entries will have to be input one per line.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
yr = [1984 1986 1988 1990 1992 1994 1996]
yr =
1984 1986 1988 1990 1992 1994 1996
>>
pop = [127; 130; 136; 145; 158; 178; 211]
pop =
127
130
136
145
158
178
211
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Creating a row vector with constant spacing by
% specifying the first element, the spacing and the last
% element
%
% General syntax
%
% 1) <name> = [<first>:<spacing>:<last>]
% 2) <name> = <first>:<spacing>:<last>
% 3) <name> = [<first>:<last>]
% 4) <name> = <first>:<last>
%
% Note that the [ ] are optional, and that if
% <spacing> is omitted, it defaults to 1.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
x = [1:2:13]
x =
1 3 5 7 9 11 13
>>
y = [1.5:0.1:2.1]
y =
1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 2.1000
>>
z = [-3:7]
z =
-3 -2 -1 0 1 2 3 4 5 6 7
>>
xa = [21:-3:6]
xa =
21 18 15 12 9 6
>>
xb = 21:-3:6
xb =
21 18 15 12 9 6
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Creating a row vector with constant spacing by
% specifying the first element, the last element and
% the number, n, of elements (length of the vector)
%
% General syntax
%
% 1) <name> = linspace(<first>,<last>,<n>)
% 2) <name> = linspace(<first>,<last>)
%
% Note that this uses the MATLAB command (function),
% linspace, which computes the necessary
% spacing between elements.
%
% When <n> is omitted, it defaults to 100.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
va = linspace(0, 8, 6)
va =
0.00000 1.60000 3.20000 4.80000 6.40000 8.00000
>>
vb = linspace(30, 10, 11)
vb =
30 28 26 24 22 20 18 16 14 12 10
>>
u = linspace(49.5, 0.5)
u =
Columns 1 through 7:
49.50000 49.00505 48.51010 48.01515 47.52020 47.02525 46.53030
Columns 8 through 14:
46.03535 45.54040 45.04545 44.55051 44.05556 43.56061 43.06566
Columns 15 through 21:
42.57071 42.07576 41.58081 41.08586 40.59091 40.09596 39.60101
Columns 22 through 28:
39.10606 38.61111 38.11616 37.62121 37.12626 36.63131 36.13636
Columns 29 through 35:
35.64141 35.14646 34.65152 34.15657 33.66162 33.16667 32.67172
Columns 36 through 42:
32.17677 31.68182 31.18687 30.69192 30.19697 29.70202 29.20707
Columns 43 through 49:
28.71212 28.21717 27.72222 27.22727 26.73232 26.23737 25.74242
Columns 50 through 56:
25.24747 24.75253 24.25758 23.76263 23.26768 22.77273 22.27778
Columns 57 through 63:
21.78283 21.28788 20.79293 20.29798 19.80303 19.30808 18.81313
Columns 64 through 70:
18.31818 17.82323 17.32828 16.83333 16.33838 15.84343 15.34848
Columns 71 through 77:
14.85354 14.35859 13.86364 13.36869 12.87374 12.37879 11.88384
Columns 78 through 84:
11.38889 10.89394 10.39899 9.90404 9.40909 8.91414 8.41919
Columns 85 through 91:
7.92424 7.42929 6.93434 6.43939 5.94444 5.44949 4.95455
Columns 92 through 98:
4.45960 3.96465 3.46970 2.97475 2.47980 1.98485 1.48990
Columns 99 and 100:
0.99495 0.50000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.2 Creating a Two Dimensional Array (Matrix)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% First note that when we refer to an m x n ("m by n")
% matrix (or array), we mean a matrix that has
% m rows and n columns, and that "m by n"
% is known as the size of the matrix.
%
% General syntax
%
% <name> = [ <el_11> <el_12> ... <el_1n>
% <el_21> <el_22> ... <el_2n>
% ....
% <el_m1> <el_m2> ... <el_mn> ]
%
% where the line breaks in the above description are
% NOT necessary.
%
% That is, one specifies the elements of a matrix
% row-by-row, with a semi-colon (or equivalently,
% a new-line [ENTER]) separating the rows.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
a = [5 35 43; 4 76 81; 21 32 40]
a =
5 35 43
4 76 81
21 32 40
>>
cd = 6; e = 3; h = 4;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Note the use of commas to separate entries in a
% given row. Again, these are optional.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
Mat = [e, cd*h, cos(pi/3); h^2, sqrt(h*h/cd), 14]
Mat =
3.00000 24.00000 0.50000
16.00000 1.63299 14.00000
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Here's an example where the rows of a matrix are
% generated using the : (colon) notation, or linspace,
% to make vectors with constant spacing between
% their elements. One must ensure that each of the
% row-generating statements returns the same
% number of elements.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
A = [1:2:11; 0:5:25; linspace(10, 60, 6); 67 2 43 68 4 13]
A =
1 3 5 7 9 11
0 5 10 15 20 25
10 20 30 40 50 60
67 2 43 68 4 13
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MATLAB has several built-in commands (functions) to
% produce matrices with special elements:
%
% 1) zeros(m,n): Returns an m x n matrix with
% elements that all 0.
% 2) ones(m,n): Returns an m x n matrix with
% elements that all 1.
% 3) eye(n): Creates an n x n (square)
% matrix with 1's along the
% main diagonal, and 0's everywhere
% else---i.e. creates the the n x n
% identity matrix
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
zr = zeros(3, 4)
zr =
0 0 0 0
0 0 0 0
0 0 0 0
>>
ne = ones(4, 3)
ne =
1 1 1
1 1 1
1 1 1
1 1 1
>>
idn = eye(5)
idn =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.3 Notes about Variables in MATLAB.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 1) As noted previously, essentially all variables
% in MATLAB are arrays.
%
% 2) The size of a variable is (initially) defined
% by the size of the left hand side with which
% it is initialized. There is no need to explicitly
% define the size of any array before its elements
% are assigned.
%
% 3) Once a variable exists as a scalar, vector, matrix
% etc., both its type and size can be changed, as
% we will see in examples below.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.4 The Transpose Operator
%
% MATLAB uses a single forward quote character (')
% to denote transpose, with an action as follows
%
% 1) <row vector>' = <column vector>
% 2) <column vector>' = <row vector>
% 3) <matrix>' = <matrix transpose>
%
% In all cases the elements in the transposed array
% are the same as those in the original array, but,
% for the case of a matrix, they appear in a different
% order.
%
% Here it is useful to view a row vector of length
% n as a 1 x n matrix, and a column vector of length
% m as a m x 1 matrix. We then have
%
% 1) <1 x n>' = <n x 1>
% 2) <m x 1>' = <1 x m>
% 3) <m x n>' = <n x m>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
aa = [3 8 1]
aa =
3 8 1
>>
bb = aa'
bb =
3
8
1
>>
C = [2 55 14 8; 21 5 32 11; 41 64 9 1]
C =
2 55 14 8
21 5 32 11
41 64 9 1
>>
D = C'
D =
2 21 41
55 5 64
14 32 9
8 11 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Note that two consecutive applications of transpose
% is an identity operation.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
C
C =
2 55 14 8
21 5 32 11
41 64 9 1
>>
C''
ans =
2 55 14 8
21 5 32 11
41 64 9 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.5 Array Addressing
%
% (Selecting individual elements from an array)
%
% IMPORTANT!: Again note that the usual parentheses
% ( ) are used for this purpose.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.5.1 Vectors
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
VCT = [35 36 78 23 5 14 82 3 55]
VCT =
35 36 78 23 5 14 82 3 55
>>
VCT(4)
ans = 23
>>
VCT(6) = 273
VCT =
35 36 78 23 5 273 82 3 55
>>
VCT(2) + VCT(8)
ans = 39
>>
VCT(5)^VCT(8) + sqrt(VCT(7))
ans = 134.06
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.5.2 Matrices
%
% General syntax:
%
% <matrix>(k,p) = element in row k, column p
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
MAT = [3 11 6 5; 4 7 10 2; 13 9 0 8]
MAT =
3 11 6 5
4 7 10 2
13 9 0 8
>>
MAT(3,1) = 20
MAT =
3 11 6 5
4 7 10 2
20 9 0 8
>>
MAT(2,4) - MAT(1,2)
ans = -9
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.6 Using a Colon : In Array Addressing.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.6.1 Vectors
%
% General syntax:
%
% <vector>(:) = all elements of row or column vector
% <vector>(m:n) = elements m through n of vector
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
v = [4 15 8 12 34 2 50 23 11]
v =
4 15 8 12 34 2 50 23 11
>>
u = v(3:7)
u =
8 12 34 2 50
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.6.2 Matrices
%
% General syntax:
%
% <matrix>(:, :) = all elements of matrix
% <matrix>(:, n) = all elements of column n
% <matrix>(m, :) = all elements of row m
% <matrix>(:, m:n) = all elements between columns m
% and n inclusive
% <matrix>(m:n, :) = all elements between rows m
% and n inclusive
% <matrix>(m:n, p:q) = all elements between rows m
% and n, and columns p and q
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
A = [1:2:11; 2:2:12; 3:3:18; 4:4:24; 5:5:30]
A =
1 3 5 7 9 11
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
5 10 15 20 25 30
>>
B = A(:, 3)
B =
5
6
9
12
15
>>
C = A(2, :)
C =
2 4 6 8 10 12
>>
E = A(2:4, :)
E =
2 4 6 8 10 12
3 6 9 12 15 18
4 8 12 16 20 24
>>
F = A(1:3, 2:4)
F =
3 5 7
4 6 8
6 9 12
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.6a Selecting Elements Using Vectors Constructed
% With [ ... ] Notation
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
v = 4:3:34
v =
4 7 10 13 16 19 22 25 28 31 34
>>
u = v( [3, 5, 7:10] )
u =
10 16 22 25 28 31
>>
A = [10:-1:4; ones(1,7); 2:2:14; zeros(1,7)]
A =
10 9 8 7 6 5 4
1 1 1 1 1 1 1
2 4 6 8 10 12 14
0 0 0 0 0 0 0
>>
B = A([1, 3], [1, 3, 5:7])
B =
10 8 6 5 4
2 6 10 12 14
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.7 Adding Elements to Existing Variables
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Adding elements to a vector
%
% Elements can be added to an existing vector by
% assigning values to the new elements. If the
% vector is of length n, and the value assigned is
% for an element with address p which is >= n + 2,
% then elements n + 1, ... p - 1 are assigned the
% value 0 by default.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
DF = 1:4
DF =
1 2 3 4
>>
DF(5:10) = 10:5:35
DF =
1 2 3 4 10 15 20 25 30 35
>>
AD = [5 7 2]
AD =
5 7 2
>>
AD(8) = 4
AD =
5 7 2 0 0 0 0 4
>>
AR(5) = 24
AR =
0 0 0 0 24
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Elements can also be added to a vector by appending
% (concatenating) existing vectors
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
RE = [3 8 1 24]
RE =
3 8 1 24
>>
GT = 4:3:16
GT =
4 7 10 13 16
>>
KNH = [RE GT]
KNH =
3 8 1 24 4 7 10 13 16
>>
KNV= [RE'; GT']
KNV =
3
8
1
24
4
7
10
13
16
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Adding elements to a matrix
%
% Rows and/or columns can be added to an existing
% matrix by assigning values to the new rows or columns.
%
% One must be careful in this case since the size of
% the added rows/columns must be compatible with the
% existing matrix.
%
% As was the case for vectors, any matrix elements
% that are implicitly created by an operation that
% changes the size of the matrix, and which are not
% assigned explicit values, are set to 0.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
E = [1 2 3 4; 5 6 7 8]
E =
1 2 3 4
5 6 7 8
>>
E(3,:) = [10:4:22]
E =
1 2 3 4
5 6 7 8
10 14 18 22
>>
K = eye(3)
K =
1 0 0
0 1 0
0 0 1
>>
G = [E K]
G =
1 2 3 4 1 0 0
5 6 7 8 0 1 0
10 14 18 22 0 0 1
>>
AW = [3 6 9; 8 5 11]
AW =
3 6 9
8 5 11
>>
AW(4,5) = 17
AW =
3 6 9 0 0
8 5 11 0 0
0 0 0 0 0
0 0 0 0 17
>>
BG(3,4) = 15
BG =
0 0 0 0
0 0 0 0
0 0 0 15
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.8 Deleting Elements
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% An element, or range of elements, can be deleted
% by assigning "nothing", denoted syntactically by
% [], to it/them.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
kt = [2 8 40 65 3 55 23 15 75 80]
kt =
2 8 40 65 3 55 23 15 75 80
>>
kt(6) = []
kt =
2 8 40 65 3 23 15 75 80
>>
kt(3:6) = []
kt =
2 8 15 75 80
>>
mtr = [5 78 4 24 9; 4 0 36 30 12; 56 13 5 89 3]
mtr =
5 78 4 24 9
4 0 36 30 12
56 13 5 89 3
>>
mtr(:,2:4) = []
mtr =
5 9
4 12
56 3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.9 Built-in Functions for Handling Arrays
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MATLAB has a rich set of functions for managing and
% manipulating arrays. Some of these are as follows:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% length(<vector>)
%
% Returns the number of elements in <vector>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
A = [5 9 2 4]
A =
5 9 2 4
>>
length(A)
ans = 4
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% size(<matrix>)
%
% If <matrix> is m x n, then returns the row
% vector [m n]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
A = [6 1 4 0 12; 5 19 6 8 2]
A =
6 1 4 0 12
5 19 6 8 2
>>
size(A)
ans =
2 5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% reshape(<matrix>, m, n)
%
% If <matrix> is p x q, then returns a new matrix
% which is m x n and which contains the same elements
% as <matrix>, but in an order which is best
% illustrated by example, as below.
%
% Note: m * n must be equal to p * q
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
A = [5 1 6; 8 0 2]
A =
5 1 6
8 0 2
>>
B = reshape(A, 3, 2)
B =
5 0
8 6
1 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% diag(<vector>)
%
% If <vector> is of length n, returns an n x n
% matrix with the elements of <vector> along the
% diagonal, and zeros elsewhere.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
v = [7 4 2]
v =
7 4 2
>>
A = diag(v)
A =
7 0 0
0 4 0
0 0 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% diag(<matrix>)
%
% If <matrix> is m x n, then returns a vector of
% length m whose elements are the main diagonal of
% <matrix>(:, 1:m)
%
% If <matrix> is m x m (i.e. square), this is simply
% the main diagonal of the matrix.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
A = [1 3 4; 4 5 6; 7 8 9]
A =
1 3 4
4 5 6
7 8 9
>>
vec = diag(A)
vec =
1
5
9
>>
B = [1 3 4; 4 5 6]
B =
1 3 4
4 5 6
>>
vecB = diag(B)
vecB =
1
5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 2.10 Strings and Strings as Variables
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 1) In MATLAB, a string is an array (vector) of
% characters.
%
% 2) Strings can be created by enclosing an arbitrary
% sequence of characters (other than a single forward
% quote), including whitespace and special characters,
% within a pair of single (forward) quotes ' '
%
% 3) If you want to include a single quote within a
% string, type two consecutive quotes.
%
% 4) Strings can be assigned to variables using the
% usual syntax for variable assignment.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
a = 'FRty 8'
a = FRty 8
>>
B = 'My name is Matthew Choptuik'
B = My name is Matthew Choptuik
>>
c = 'That''s ridiculous!!'
c = That's ridiculous!!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Since a string is a vector of characters, individual
% characters in a string, or consecutive sets of
% characters (substrings), can be extracted and/or
% assigned values using the standard addressing
% operations.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>>
B(4)
ans = n
>>
B(12)
ans = M
>>
c(8:17) = 'capricious'
c = That's capricious!!