In: Computer Science
MATLAB NEEDED.
This lab will use functions and arrays. The task within is to Add, Sub, or Multiply 2 Matrix. See Manipulate Matrix doc for the methods. My reference to matrix below is because we are doing matrix math. The matrix are arrays.
Matlab built-in functions not allowed
You will write 3 functions (call those functions): 1. ADD two matrix, 2. SUBTRACT two matrix, and 3. MULTIPLY two matrix.
Requirements:
Using random fill create two different matrix.
NOTE in code example used: b = int16(rand(r,c)*n); int allows signed integers.
% digits 0 to n integers
For this lab we care about signed number so please use int not uint.
Call a function to add these 2 matrix and return the SUM
Using random fill create two different matrix
Call a function to subtract these two matrix and return the DIFFERENCE
and columns of B. (From theory Columns of A are the rows of B)
Using random fill create two different matrix
Call a function to multiply these two matrix and return the PRODUCT
ADD (SUB) MATRIX
C = A + B Requires 2 for loops to move throught the arrays
Equation C(i,j) = A(i,j) + B(i,j) Fundamentally you are adding each element of A to its corresponding element of B and putting the sum into the corresponding element of C
MULTIPLYING MATRICES
There are some strick rules that must be applied.
C = A * B requires that the columns of A must equal the rows of B. C’s dimensions are the Rows of A by the Columns of B.
A(Ar,Ac) B(Br,Bc) C(Cr,Cc) given these dimensions for the three matrices
Rules above require Ac = Br thus the # of columns of A equal the rows of B.
Then Cr = Ar The rows of C must equal the rows of A
Then Cc = Bc The columns of C must equal the columns of B
The equation for filling the Matrix C is:
C(i,j) = ∑Ai,k) *B(k,j)
This notation uses i, j , k:
These 2 for loops fill Matrix C
This is similar to Add and Sub the Answer array must be filled by 2 for loop. This only adds a third for loop to manage the summation. use equation for summation. (∑).
This example shows basic techniques and functions for working with matrices in the MATLAB® language.
First, let's create a simple vector with 9 elements called
a
.
a = [1 2 3 4 6 4 3 4 5]
a = 1×9 1 2 3 4 6 4 3 4 5
Now let's add 2 to each element of our vector, a
,
and store the result in a new vector.
Notice how MATLAB requires no special handling of vector or matrix math.
b = a + 2
b = 1×9 3 4 5 6 8 6 5 6 7
Creating graphs in MATLAB is as easy as one command. Let's plot the result of our vector addition with grid lines.
plot(b) grid on
MATLAB can make other graph types as well, with axis labels.
bar(b) xlabel('Sample #') ylabel('Pounds')
MATLAB can use symbols in plots as well. Here is an example using stars to mark the points. MATLAB offers a variety of other symbols and line types.
plot(b,'*') axis([0 10 0 10])
One area in which MATLAB excels is matrix computation.
Creating a matrix is as easy as making a vector, using semicolons (;) to separate the rows of a matrix.
A = [1 2 0; 2 5 -1; 4 10 -1]
A = 3×3 1 2 0 2 5 -1 4 10 -1
We can easily find the transpose of the matrix
A
.
B = A'
B = 3×3 1 2 4 2 5 10 0 -1 -1
Now let's multiply these two matrices together.
Note again that MATLAB doesn't require you to deal with matrices as a collection of numbers. MATLAB knows when you are dealing with matrices and adjusts your calculations accordingly.
C = A * B
C = 3×3 5 12 24 12 30 59 24 59 117
Instead of doing a matrix multiply, we can multiply the corresponding elements of two matrices or vectors using the .* operator.
C = A .* B
C = 3×3 1 4 0 4 25 -10 0 -10 1
Let's use the matrix A to solve the equation, A*x = b. We do this by using the \ (backslash) operator.
b = [1;3;5]
b = 3×1 1 3 5
x = A\b
x = 3×1 1 0 -1
Now we can show that A*x is equal to b.
r = A*x - b
r = 3×1 0 0 0
MATLAB has functions for nearly every type of common matrix calculation.
There are functions to obtain eigenvalues ...
eig(A)
ans = 3×1 3.7321 0.2679 1.0000
... as well as the singular values.
svd(A)
ans = 3×1 12.3171 0.5149 0.1577
The "poly" function generates a vector containing the coefficients of the characteristic polynomial.
The characteristic polynomial of a matrix A
is
det(λI−A)
p = round(poly(A))
p = 1×4 1 -5 5 -1
We can easily find the roots of a polynomial using the
roots
function.
These are actually the eigenvalues of the original matrix.
roots(p)
ans = 3×1 3.7321 1.0000 0.2679
MATLAB has many applications beyond just matrix computation.
To convolve two vectors ...
q = conv(p,p)
q = 1×7 1 -10 35 -52 35 -10 1
... or convolve again and plot the result.
r = conv(p,q)
r = 1×10 1 -15 90 -278 480 -480 278 -90 15 -1
plot(r);
At any time, we can get a listing of the variables we have
stored in memory using the who
or whos
command.
whos
Name Size Bytes Class Attributes A 3x3 72 double B 3x3 72 double C 3x3 72 double a 1x9 72 double ans 3x1 24 double b 3x1 24 double p 1x4 32 double q 1x7 56 double r 1x10 80 double x 3x1 24 double
You can get the value of a particular variable by typing its name.
A
A = 3×3 1 2 0 2 5 -1 4 10 -1
You can have more than one statement on a single line by separating each statement with commas or semicolons.
If you don't assign a variable to store the result of an
operation, the result is stored in a temporary variable called
ans
.
sqrt(-1)
ans = 0.0000 + 1.0000i
As you can see, MATLAB easily deals with complex numbers in its calculations