** Next:** 4.2 Dot, Cross, Norm,
** Up:** 4. Linear algebra
** Previous:** 4. Linear algebra
** Contents**

When matrices and vectors are involved, the multiplication operator implies
*matrix* multiplication rather than scalar multiplication. For
matrix-matrix or matrix-vector multiplication to work, as you learned in
your math class, the number of columns in the first must be the same as the
number of rows in the second. That is, when multiplying a
matrix by a matrix, and must match, and the resulting
matrix will be . Here's an example.

% Basic arithmetic for matrices and vectors
clear all; clc;
C = [3 1 1 % C is a 3x3 matrix
0 2 4
-1 0 1]
D = [2 3 4] % D is a 1x3 matrix
E = D' % Note the use of transpose. E is a 3x1 array
C*D % doesn't work! For matrix multiplication of m x n matrix
% with p x q, n and q must be the same (i.e., the "inner
% dimensions" must agree
D*C % This works
C*E % So does this

The multiplication `C*D`

doesn't work because C has 3 columns but D
has only one row (it's a 3-column row vector). MATLAB lets us know what
is wrong by saying that the inner dimensions of the arrays must
agree. Whenever you get this error, you should realize that MATLAB is
attempting *matrix* multiplication rather than scalar multiplication.
The exponentiation operator `^`

also has a special meaning for
matrices. To get , try `C^3`

. What is the difference between this
and `C.^3`

?

** Next:** 4.2 Dot, Cross, Norm,
** Up:** 4. Linear algebra
** Previous:** 4. Linear algebra
** Contents**
Gus Hart
2005-01-28