```>> % MATLAB Recitation Demo for Monday, September 29.
>> % File: rdemo4
>> %
>> % *** Computing bases for the 4 fundamental subspaces
>> % *** of the matrix A.
>> %
>> % *** Reminder: From the Athena Dash menu, start MATLAB using
>> % ***    Courseware / 18 Mathematics / 18.06 / 18.06 MATLAB
>> % *** Otherwise, MATLAB will not be able to find the new
>> % *** command "nullbasis" - which is used below.
>> %
>> %   The MATLAB command basis(A) computes a matrix whose
>> %   columns are a basis for the column space of A.
>> %   The MATLAB command nullbasis(A) computes a matrix whose
>> %   columns are a basis for the nullspace of A.
>> %   The PA = LU factorization is used to obtain the row space of A
>> %   via the pivot rows of U.
>> %
>> diary rdemo4
>>
>> % Let's enter a matrix with 3 rows and 5 columns, and compute
>> % bases for its column space, nullspace, row space and left
>> % nullspace.
>> %
>> A = [-1   3   8   -2   1;
-1   3   9   -1   3;
1  -3  -9    1  -3]
A =
-1     3     8    -2     1
-1     3     9    -1     3
1    -3    -9     1    -3

>> [m, n] = size(A)
m =
3
n =
5

>> r = rank(A)
r =
2

>> help plu
PLU    Pivoting, rectangular, LU factorization.
[P,L,U] = PLU(A), for a rectangular matrix A, uses Gaussian elimination
to compute a permutation matrix P, a lower triangular matrix L and
an upper trapezoidal matrix U so that L*U = P*A.
U is the same size as A.  P and L are square, with as many rows as A.
See also SLU, LU, REF, SOLVE, NULL, BASIS.

>> [P, L, U] = plu(A)
Pivots in columns:
1     3
No pivots in columns:
2     4     5
Pivots in rows:
1     2
P =
1     0     0
0     1     0
0     0     1
L =
1     0     0
1     1     0
-1    -1     1

U =
-1     3     8    -2     1
0     0     1     1     2
0     0     0     0     0

>> colspace = basis(A)
rank =
2
colspace =
-1     8
-1     9
1    -9

>> nullspace = nullbasis(A)
nullspace =
3   -10   -15
1     0     0
0    -1    -2
0     1     0
0     0     1

>> % The pivot rows of U are a basis for
>> % the row space of A.
>> %
>> rowspace = [U(1,:)' U(2,:)' ]
rowspace =
-1     0
3     0
8     1
-2     1
1     2

>> leftnull = nullbasis(A')
leftnull =
0
1
1

>> diary off
```