Companion page: Chapter 7 Matlab resources — commands for trying out the material below on a machine.

The spectral theorem of Chapter 5 wrote a real symmetric matrix as \(A = Q\Lambda Q^T\): in the orthonormal basis of its eigenvectors, \(A\) only scales, \(Aq_i = \lambda_iq_i\). Most matrices are not symmetric, and most are not even square. For an \(m\times n\) matrix the input \(x\) lives in \(\mathbb{R}^n\) and the output \(Ax\) in \(\mathbb{R}^m\), so there is no sense in asking for \(Ax\) to be a multiple of \(x\). What we can ask for is two orthonormal bases, one of \(\mathbb{R}^n\) and one of \(\mathbb{R}^m\), such that \(A\) sends each vector of the first to a multiple of the matching vector of the second. The singular value decomposition (SVD) says that such a pair of bases exists for every matrix, of any shape and any rank.

This chapter proves that, as in class, for a tall matrix with independent columns, and then says what changes for a general rank \(r\). It reads the four fundamental subspaces off the SVD and writes \(A\) as a sum of rank-one matrices. It then uses the SVD for two things that earlier chapters left open, the pseudo-inverse (Chapter 2 and Chapter 3) and the condition number (Chapter 1) together with the matrix norm it needs, and for two ways of solving a system whose condition number is large. It ends with an application to wireless communication with several antennas, where the SVD turns the channel into separate scalar channels.

1. The statement

Theorem 7.1 (singular value decomposition). Let \(A\) be a real \(m\times n\) matrix of rank \(r\), and let \(p = \min(m,n)\). Then

\begin{equation} A = U\Sigma V^T , \end{equation}

where \(U\) is an \(m\times m\) orthogonal matrix, \(V\) is an \(n\times n\) orthogonal matrix, and \(\Sigma\) is an \(m\times n\) matrix whose only nonzero entries are on its diagonal: \(\Sigma_{ii} = \sigma_i\) for \(i = 1,\ldots,p\), with

\begin{equation*} \sigma_1 \geq \sigma_2 \geq \cdots \geq \sigma_r > 0 = \sigma_{r+1} = \cdots = \sigma_p . \end{equation*}

The numbers \(\sigma_i\) are the singular values of \(A\). The columns \(u_1,\ldots,u_m\) of \(U\) are its left singular vectors and the columns \(v_1,\ldots,v_n\) of \(V\) its right singular vectors. Exactly \(r\) of the singular values are nonzero. For a tall matrix (\(m > n\)) \(\Sigma\) is a diagonal block with a block of zeros below it,

\begin{equation*} \Sigma = \begin{bmatrix} \operatorname{diag}(\sigma_1,\ldots,\sigma_n) \\ 0 \end{bmatrix} , \end{equation*}

where the zero block has \(m-n\) rows. For a fat matrix the zero block, with \(n-m\) columns, sits to the right of the diagonal block instead.

The proof is in two parts: Section 2 for a tall or square matrix with independent columns, which is the case done in class, and Section 3.2 for the general case.

Multiplying (1) on the right by \(V\) gives \(AV = U\Sigma\). Column \(i\) of \(U\Sigma\) is \(\sigma_iu_i\) for \(i \leq p\) and the zero vector for \(i > p\), so, column by column,

\begin{equation} \begin{gathered} Av_i = \sigma_iu_i \quad (i = 1,\ldots,p), \\ Av_i = 0 \quad (i = p+1,\ldots,n). \end{gathered} \end{equation}

Compare \(Ax = \lambda x\). There the same vector appears on both sides; here \(v_i\) goes in and a different vector \(u_i\), from a different space, comes out. And Theorem 7.1 holds for every matrix, whereas some square matrices cannot be diagonalized at all (Chapter 5).

Two remarks before the proof.

  • Transposing (1) gives \(A^T = V\Sigma^TU^T\), which is an SVD of \(A^T\) with the roles of \(U\) and \(V\) exchanged. So a fat matrix can always be handled through its tall transpose.

  • For a complex matrix the same holds with \(V^H\) in place of \(V^T\) and unitary matrices in place of orthogonal ones, and the singular values are still real and nonnegative. We stay with real matrices until Section 8, which uses the complex form.

2. Proof for a tall matrix with independent columns

Assume \(m \geq n\) and that the columns of \(A\) are independent, so \(r = n\). The proof builds \(V\) first, from the matrix \(A^TA\), then \(U\) from \(V\).

Step 1: eigenvectors of \(A^TA\). The matrix \(A^TA\) is \(n\times n\) and symmetric (Chapter 1). By the spectral theorem, Corollary 5.23, \(A^TA = V\Lambda V^T\) with \(V\) orthogonal and \(\Lambda = \operatorname{diag}(\lambda_1,\ldots,\lambda_n)\) real. That is, \(A^TAv_i = \lambda_iv_i\), and the eigenvectors \(v_1,\ldots,v_n\) form an orthonormal basis of \(\mathbb{R}^n\).

Step 2: \(Av_i\) is an eigenvector of \(AA^T\). Multiply \(A^TAv_i = \lambda_iv_i\) on the left by \(A\):

\begin{equation*} AA^T(Av_i) = \lambda_i(Av_i) . \end{equation*}

Since the columns of \(A\) are independent and \(v_i \neq 0\), \(Av_i \neq 0\), so it is an eigenvector of the \(m\times m\) matrix \(AA^T\) with the same eigenvalue \(\lambda_i\).

Step 3: the vectors \(Av_i\) are orthogonal. Write \(u_i' = Av_i\) for these intermediate vectors. Then

\begin{equation*} (u_j')^Tu_i' = v_j^TA^TAv_i = \lambda_i\,v_j^Tv_i = \lambda_i\delta_{ij} , \end{equation*}

where \(\delta_{ij}\) is \(1\) if \(i=j\) and \(0\) otherwise. So the \(u_i'\) are mutually orthogonal. With \(j = i\) the same line says \(\lambda_i = \|Av_i\|^2\), and this is positive because \(Av_i \neq 0\). Number the eigenvalues so that \(\lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_n > 0\), and the \(v_i\) to match.

Step 4: normalise. Put \(\sigma_i = \sqrt{\lambda_i}\) and \(u_i = u_i'/\sigma_i = Av_i/\sigma_i\). Now \(\|u_i\| = 1\), so \(u_1,\ldots,u_n\) are orthonormal, and \(Av_i = \sigma_iu_i\).

Step 5: count. We have \(n\) orthonormal vectors in \(\mathbb{R}^m\). They lie in \(C(A)\), they are independent (Theorem 3.4), and \(\dim C(A) = n\), so they are a basis of the column space (Corollary 2.5). If \(m = n\) we have all the columns of \(U\) and can go to Step 7. If \(m > n\), \(m-n\) more are needed.

Step 6: the left null space supplies the rest. \(A^T\) is fat, \(n\times m\) of rank \(n\), so \(\dim N(A^T) = m-n\) (Theorem 2.7 applied to \(A^T\)). Take any basis of \(N(A^T)\) and run Gram—​Schmidt on it (Theorem 3.18), to get orthonormal vectors \(u_{n+1},\ldots,u_m\) with \(A^Tu_i = 0\). Multiplying by \(A\) gives \(AA^Tu_i = 0\), so these too are eigenvectors of \(AA^T\), with eigenvalue \(0\). They are orthogonal to \(u_1,\ldots,u_n\), because those lie in \(C(A)\) and \(N(A^T) = C(A)^\perp\) (Theorem 3.6). So \(u_1,\ldots,u_m\) are \(m\) orthonormal vectors in \(\mathbb{R}^m\), and \(U = \begin{bmatrix} u_1 & \cdots & u_m \end{bmatrix}\) is orthogonal. In the language of the lecture: \(AA^T\) is \(m\times m\) and symmetric, so it has \(m\) orthonormal eigenvectors, and we have found all of them, \(n\) from the eigenvectors of \(A^TA\) (as \(u_i = Av_i/\sigma_i\)) and \(m-n\) from the null space of \(A^T\).

Step 7: assemble. By Step 4, \(AV = \begin{bmatrix} \sigma_1u_1 & \cdots & \sigma_nu_n \end{bmatrix}\). Multiply on the left by \(U^T\), whose rows are \(u_1^T,\ldots,u_m^T\). The \((i,j)\) entry of \(U^TAV\) is \(u_i^T(\sigma_ju_j) = \sigma_j\delta_{ij}\), for \(i = 1,\ldots,m\) and \(j = 1,\ldots,n\):

\begin{equation*} U^TAV = \begin{bmatrix} u_1^T \\ \vdots \\ u_m^T \end{bmatrix} \begin{bmatrix} \sigma_1u_1 & \cdots & \sigma_nu_n \end{bmatrix} = \begin{bmatrix} \sigma_1 & & \\ & \ddots & \\ & & \sigma_n \\ & 0 & \end{bmatrix} = \Sigma . \end{equation*}

Since \(U^{-1} = U^T\) and \(V^{-1} = V^T\), multiplying by \(U\) on the left and \(V^T\) on the right gives \(A = U\Sigma V^T\). This proves Theorem 7.1 for a tall or square matrix with independent columns.

2.1. Comments on the proof

  • Here all \(n\) singular values are positive. They are the square roots of the eigenvalues of \(A^TA\).

  • The columns of \(V\) are eigenvectors of \(A^TA\) (Step 1), and the columns of \(U\) are eigenvectors of \(AA^T\) (Steps 2 and 6). In matrix form, substituting (1) and using \(U^TU = I\), \(V^TV = I\),

    \begin{equation} A^TA = V\,(\Sigma^T\Sigma)\,V^T , \qquad AA^T = U\,(\Sigma\Sigma^T)\,U^T , \end{equation}

    where \(\Sigma^T\Sigma = \operatorname{diag}(\sigma_1^2,\ldots,\sigma_n^2)\) is \(n\times n\) and \(\Sigma\Sigma^T = \operatorname{diag}(\sigma_1^2,\ldots,\sigma_n^2,0,\ldots,0)\) is \(m\times m\). Equation (3) holds for any SVD (1), of a matrix of any shape and rank. In general \(\Sigma^T\Sigma\) is the \(n\times n\) diagonal matrix with entries \(\sigma_1^2,\ldots,\sigma_p^2\) followed by zeros, and \(\Sigma\Sigma^T\) is the \(m\times m\) one.

  • If \(A\) is symmetric positive definite, then \(A = Q\Lambda Q^T\) with every eigenvalue positive (Chapter 6, Theorem 6.2). With the eigenvalues in decreasing order this is already of the form (1), with \(U = V = Q\) and \(\Sigma = \Lambda\). So for a positive definite matrix the eigenvalue decomposition and the SVD are the same thing. (For a symmetric matrix with some negative eigenvalues they are not: then \(\sigma_i = |\lambda_i|\), the sign goes into \(u_i = -v_i\), and the columns must be reordered so that the \(|\lambda_i|\) decrease.)

  • The proof is constructive, but it is not how the SVD is computed in practice. Library routines (Matlab’s svd) never form \(A^TA\), for a reason that Section 6.4 explains. The cost for an \(n\times n\) matrix is of order \(n^3\), the same order as elimination.

3. Matrices of any rank

3.1. How many singular values are nonzero

Now let \(A\) be any \(m\times n\) matrix, of rank \(r\). Step 1 still applies, since \(A^TA\) is symmetric whatever \(A\) is, and so does the calculation of Step 3, which used nothing about the columns of \(A\). What changes is that some \(Av_i\) may now be zero.

Claim 7.2. Let \(A\) be an \(m\times n\) matrix of rank \(r\), and let \(A^TAv_i = \lambda_iv_i\) with \(v_1,\ldots,v_n\) an orthonormal basis of \(\mathbb{R}^n\), as in Step 1. Then \(\lambda_i = \|Av_i\|^2 \geq 0\) for every \(i\), and exactly \(r\) of the \(\lambda_i\) are positive. For every \(i\) with \(\lambda_i = 0\), \(Av_i = 0\).

Proof

Step 3 gives \(\lambda_i = \|Av_i\|^2 \geq 0\), and so \(\lambda_i = 0\) exactly when \(Av_i = 0\).

To count the positive ones, look at the vectors \(Av_1,\ldots,Av_n\). They span \(C(A)\): every \(x \in \mathbb{R}^n\) is \(x = \sum_i c_iv_i\), so \(Ax = \sum_i c_iAv_i\). The vectors with \(\lambda_i = 0\) are zero and can be dropped from the spanning set. The remaining ones, those with \(\lambda_i > 0\), are nonzero and mutually orthogonal by Step 3, so they are independent (Theorem 3.4). They are therefore a basis of \(C(A)\), and their number is \(\dim C(A) = r\) (Theorem 2.7).

So we can number the eigenvalues as \(\lambda_1 \geq \cdots \geq \lambda_r > 0 = \lambda_{r+1} = \cdots = \lambda_n\), and \(\sigma_i = \sqrt{\lambda_i}\) gives exactly \(r\) nonzero singular values.

The lecture put this as: \(A\), \(A^TA\) and \(AA^T\) all have the same rank \(r\). The columns of \(AA^T\) are combinations of the columns of \(A\), and the rows of \(A^TA\) are combinations of the rows of \(A\), which shows only that neither product has rank larger than \(r\). Equality comes from Theorem 3.11, \(N(A^TA) = N(A)\): by Theorem 2.7, \(\operatorname{rank}(A^TA) = n - \dim N(A^TA) = n - \dim N(A) = r\), and the same argument applied to \(A^T\) gives \(\operatorname{rank}(AA^T) = \operatorname{rank}(A^T) = r\).

3.2. The proof for rank \(r\)

Run Steps 2 to 4 only for \(i = 1,\ldots,r\), where \(\lambda_i > 0\) and the division by \(\sigma_i\) is allowed. They give orthonormal vectors \(u_1,\ldots,u_r\) with \(Av_i = \sigma_iu_i\), and by the proof of Claim 7.2 these are a basis of \(C(A)\). For \(i > r\), Claim 7.2 gives \(Av_i = 0\). Step 6 goes through with \(r\) in place of \(n\): \(\dim N(A^T) = m - r\), and Gram—​Schmidt on a basis of it gives orthonormal \(u_{r+1},\ldots,u_m\), orthogonal to \(u_1,\ldots,u_r\). In Step 7, \(AV = \begin{bmatrix} \sigma_1u_1 & \cdots & \sigma_ru_r & 0 & \cdots & 0 \end{bmatrix}\), so the \((i,j)\) entry of \(U^TAV\) is \(\sigma_j\delta_{ij}\) for \(j \leq r\) and zero for \(j > r\). That is the matrix \(\Sigma\) of Theorem 7.1 with \(\sigma_{r+1} = \cdots = \sigma_p = 0\). Nowhere did this use \(m \geq n\), so Theorem 7.1 is now proved for every real matrix.

3.3. The four subspaces

Take an SVD \(A = U\Sigma V^T\) and keep only the columns that go with nonzero singular values. Equation (2), and the same equation for \(A^T = V\Sigma^TU^T\), read

\begin{equation} \begin{gathered} A\begin{bmatrix} v_1 & \cdots & v_r \end{bmatrix} = \begin{bmatrix} u_1 & \cdots & u_r \end{bmatrix}\begin{bmatrix} \sigma_1 & & \\ & \ddots & \\ & & \sigma_r \end{bmatrix} , \\ A^T\begin{bmatrix} u_1 & \cdots & u_r \end{bmatrix} = \begin{bmatrix} v_1 & \cdots & v_r \end{bmatrix}\begin{bmatrix} \sigma_1 & & \\ & \ddots & \\ & & \sigma_r \end{bmatrix} . \end{gathered} \end{equation}

The first says that each \(u_i = Av_i/\sigma_i\) is a combination of the columns of \(A\); the second, that each \(v_i = A^Tu_i/\sigma_i\) is a combination of the rows of \(A\). The remaining columns of \(U\) and \(V\) fill in the two null spaces.

Theorem 7.3. Let \(A = U\Sigma V^T\) be an SVD of an \(m\times n\) matrix \(A\) of rank \(r\), as in Theorem 7.1. Then

  1. \(u_1,\ldots,u_r\) is an orthonormal basis of the column space \(C(A)\);

  2. \(u_{r+1},\ldots,u_m\) is an orthonormal basis of the left null space \(N(A^T)\);

  3. \(v_1,\ldots,v_r\) is an orthonormal basis of the row space \(C(A^T)\);

  4. \(v_{r+1},\ldots,v_n\) is an orthonormal basis of the null space \(N(A)\).

Proof

Each part has the same shape: show that the vectors lie in the subspace, then count. Orthonormal vectors are independent (Theorem 3.4), and independent vectors in a subspace, as many as its dimension, are a basis of it (Corollary 2.5). The dimensions are \(r\), \(m-r\), \(r\) and \(n-r\) by Theorem 2.7, applied to \(A\) and to \(A^T\).

From \(AV = U\Sigma\): column \(i\) of \(U\Sigma\) is \(\sigma_iu_i\), which is \(0\) when \(i > r\) (either \(\sigma_i = 0\), or \(i > p\) and the column of \(\Sigma\) is zero). From \(A^TU = V\Sigma^T\), in the same way, column \(i\) of \(V\Sigma^T\) is \(\sigma_iv_i\) for \(i \leq r\) and \(0\) for \(i > r\). So

  • Part 1: \(u_i = A(v_i/\sigma_i) \in C(A)\) for \(i \leq r\), \(r\) of them.

  • Part 2: \(A^Tu_i = 0\) for \(i > r\), so \(u_i \in N(A^T)\), \(m-r\) of them.

  • Part 3: \(v_i = A^T(u_i/\sigma_i) \in C(A^T)\) for \(i \leq r\), \(r\) of them.

  • Part 4: \(Av_i = 0\) for \(i > r\), so \(v_i \in N(A)\), \(n-r\) of them.

Theorem 7.3 holds for every SVD of \(A\), not only the one constructed in the proof. The SVD is not unique (the signs of a pair \(u_i, v_i\) can be flipped together, for a start), and Matlab may return a different one from what a hand calculation gives.

svd four
Figure 1. The four subspaces, with the bases that the SVD supplies. \(A\) takes the basis \(v_1,\ldots,v_r\) of the row space to \(\sigma_1u_1,\ldots,\sigma_ru_r\), and \(A^T\) takes the \(u_i\) back to \(\sigma_iv_i\). The rest of \(V\) spans the null space, which \(A\) sends to zero; the rest of \(U\) spans the left null space, which \(A^T\) sends to zero.

Figure 1 is the picture of Chapter 2 (Figure 2 there) with something added. Chapter 2 found bases of the four subspaces by elimination, and Chapter 3 showed that they form two pairs of orthogonal complements. The SVD gives an orthonormal basis of all four at once, and matches the bases of the row space and the column space in pairs, \(v_i \mapsto \sigma_iu_i\). In the full column rank case of Section 2, \(r = n\), the null space is \(\{0\}\), and the vectors \(u_{n+1},\ldots,u_m\) of Step 6 are the basis of the left null space.

4. Outer products

4.1. A matrix product as a sum of outer products

Let \(A\) be \(m\times \ell\) and \(B\) be \(n\times \ell\), so that both have \(\ell\) columns and \(AB^T\) is \(m\times n\). The usual rule is \((AB^T)_{ij} = \sum_k A_{ik}B_{jk}\): row \(i\) of \(A\) against row \(j\) of \(B\). There is a second way to group the same sum.

For a column \(g \in \mathbb{R}^m\) and a column \(h \in \mathbb{R}^n\), the outer product \(gh^T\) is the \(m\times n\) matrix with entries \((gh^T)_{ij} = g_ih_j\):

\begin{equation*} gh^T = \begin{bmatrix} g_1 \\ \vdots \\ g_m \end{bmatrix}\begin{bmatrix} h_1 & \cdots & h_n \end{bmatrix} = \begin{bmatrix} g_1h_1 & \cdots & g_1h_n \\ \vdots & & \vdots \\ g_mh_1 & \cdots & g_mh_n \end{bmatrix} . \end{equation*}

Every column of \(gh^T\) is a multiple of \(g\), so if \(g\) and \(h\) are nonzero, \(gh^T\) has rank one.

Now let \(a_k\) and \(b_k\) be column \(k\) of \(A\) and of \(B\). The \((i,j)\) entry of \(a_kb_k^T\) is \((a_k)_i(b_k)_j = A_{ik}B_{jk}\), which is the \(k\)-th term of the sum for \((AB^T)_{ij}\). Summing over \(k\):

\begin{equation} AB^T = \sum_{k=1}^{\ell} a_k b_k^T . \end{equation}

A product of this shape is the sum of (column \(k\) of the first factor) times (column \(k\) of the second, transposed), one term for each \(k\). Chapter 1 wrote the same identity for a product \(AB\), as column \(k\) of \(A\) times row \(k\) of \(B\); that is (5) with \(B^T\) in place of \(B\). The form (5) suits factorizations that end in a transpose, where both factors are described by their columns: Chapter 5 used it on \((Q\Lambda)Q^T\) to write a symmetric matrix as \(\sum_i\lambda_iq_iq_i^T\), and the SVD is next.

4.2. The SVD as a sum of rank-one matrices

Group (1) as \(A = (U\Sigma)V^T\), which has the shape of (5) with \(U\Sigma\) as the first factor and \(V\) as the second. The columns of \(U\Sigma\) are \(\sigma_1u_1,\ldots,\sigma_pu_p\), followed by zero columns if \(n > m\); the columns of \(V\) are \(v_1,\ldots,v_n\). By (5), and dropping the terms with \(\sigma_i = 0\),

\begin{equation} \begin{aligned} A &= \begin{bmatrix} \sigma_1u_1 & \cdots & \sigma_pu_p & 0 & \cdots \end{bmatrix}\begin{bmatrix} v_1 & \cdots & v_n \end{bmatrix}^T \\ &= \sum_{i=1}^{r} \sigma_i u_i v_i^T . \end{aligned} \end{equation}

So every matrix of rank \(r\) is a sum of \(r\) rank-one matrices, with weights \(\sigma_1 \geq \cdots \geq \sigma_r > 0\). For a symmetric positive definite matrix this is the expansion of Chapter 5, with \(u_i = v_i = q_i\); in general the left and right vectors differ.

Equation (6) can be written back as a product of smaller matrices. Let \(U_r = \begin{bmatrix} u_1 & \cdots & u_r \end{bmatrix}\) (\(m\times r\)), \(V_r = \begin{bmatrix} v_1 & \cdots & v_r \end{bmatrix}\) (\(n\times r\)) and \(\Sigma_r = \operatorname{diag}(\sigma_1,\ldots,\sigma_r)\). Then by (5) again, with first factor \(U_r\Sigma_r\) (columns \(\sigma_iu_i\)) and second factor \(V_r\),

\begin{equation} A = U_r\Sigma_rV_r^T . \end{equation}

This is the reduced SVD. The columns of \(U\) and \(V\) that it leaves out are bases of the two null spaces (Theorem 7.3), and in (1) they are multiplied by zeros.

4.3. Keeping the large terms

Since the singular values decrease, the last terms of (6) carry the smallest weights. Keeping only the first \(k \leq r\) terms gives a matrix of rank \(k\),

\begin{equation*} A_k = \sum_{i=1}^{k} \sigma_iu_iv_i^T , \qquad A - A_k = \sum_{i=k+1}^{r} \sigma_iu_iv_i^T . \end{equation*}

When the singular values fall off quickly, the terms dropped carry small weights, and a small \(k\) gives a good approximation.

To store \(A_k\) we need \(k\) singular values and \(k\) pairs of vectors, \(k(m+n+1)\) numbers in all, against \(mn\) for \(A\). The example from class: a grey-scale image of \(1000\times 1000\) pixels is a matrix of \(10^6\) numbers. If \(k = 10\) terms are enough to make it recognisable, we need to send \(10\,(1000 + 1000) + 10 = 20010\) numbers, about \(50\) times fewer. Whether ten terms are enough depends on how fast the singular values of that image fall; the Matlab page tries it on a photograph.

5. The pseudo-inverse

5.1. Definition

If \(A\) is square and invertible, then \(r = m = n\), every \(\sigma_i > 0\), and

\begin{equation*} A^{-1} = (U\Sigma V^T)^{-1} = V\Sigma^{-1}U^T , \qquad \Sigma^{-1} = \operatorname{diag}(1/\sigma_1,\ldots,1/\sigma_n) , \end{equation*}

using \(U^{-1} = U^T\) and \((V^T)^{-1} = V\). For any other matrix \(\Sigma\) has no inverse, but there is an obvious substitute: invert the singular values that can be inverted. Let \(\Sigma^{ + }\) be the \(n\times m\) matrix with

\begin{equation*} (\Sigma^{+})_{ii} = \begin{cases} 1/\sigma_i , & \sigma_i \neq 0, \\ 0 , & \text{otherwise}, \end{cases} \end{equation*}

and all other entries zero. The pseudo-inverse of \(A\) is

\begin{equation} A^{+} = V\Sigma^{+}U^T = \sum_{i=1}^{r} \frac{1}{\sigma_i}\, v_iu_i^T , \end{equation}

the sum coming from (5) as in (6). It is an \(n\times m\) matrix. By (8), \(A^{ + }u_i = v_i/\sigma_i\) for \(i \leq r\) and \(A^{ + }u_i = 0\) for \(i > r\): \(A^{ + }\) undoes \(A\) on the column space and sends the left null space to zero. Since the SVD is not unique, one may ask whether \(A^{ + }\) depends on which SVD was used to build it; the remark after Theorem 7.4 shows that it does not.

5.2. One-sided inverses

Suppose \(A\) is tall with independent columns, \(r = n < m\). Then \(\Sigma^{ + }\Sigma = I_n\), while \(\Sigma\Sigma^{ + } = \operatorname{diag}(1,\ldots,1,0,\ldots,0)\) is \(m\times m\) with \(n\) ones. So

\begin{equation*} A^{+}A = V\Sigma^{+}U^TU\Sigma V^T = V\Sigma^{+}\Sigma V^T = VV^T = I_n , \end{equation*}

and \(A^{ + }\) is a left inverse of \(A\); \(AA^{ + } = U\Sigma\Sigma^{ + }U^T\) is not \(I_m\). It is the left inverse of Chapter 2 (Theorem 2.11). By (3), \(A^TA = V(\Sigma^T\Sigma)V^T\) with \(\Sigma^T\Sigma = \operatorname{diag}(\sigma_1^2,\ldots,\sigma_n^2)\) invertible, so

\begin{equation*} \begin{aligned} (A^TA)^{-1}A^T &= V(\Sigma^T\Sigma)^{-1}V^T\,V\Sigma^TU^T \\ &= V\,(\Sigma^T\Sigma)^{-1}\Sigma^T\,U^T = V\Sigma^{+}U^T , \end{aligned} \end{equation*}

because \((\Sigma^T\Sigma)^{-1}\Sigma^T\) is the \(n\times m\) matrix with diagonal entries \(\sigma_i/\sigma_i^2 = 1/\sigma_i\), which is \(\Sigma^{ + }\).

If instead \(A\) is fat with independent rows, \(r = m < n\), the same calculation with \(AA^T = U(\Sigma\Sigma^T)U^T\) gives \(AA^{ + } = I_m\) and \(A^T(AA^T)^{-1} = V\Sigma^T(\Sigma\Sigma^T)^{-1}U^T = A^{ + }\): the right inverse of Theorem 2.10. These are the two formulas in Chapter 3’s summary of the tall and fat cases, now given by one definition. Both need full rank. If \(r < n\) then \(A^{ + }A \neq I_n\), and if \(r < m\) then \(AA^{ + } \neq I_m\).

5.3. Two projections

When the rank is deficient, \(\Sigma^{ + }\Sigma\) is the \(n\times n\) diagonal matrix with \(r\) ones followed by zeros, so by (5)

\begin{equation*} \begin{gathered} A^{+}A = V\Sigma^{+}\Sigma V^T = \sum_{i=1}^{r} v_iv_i^T = V_rV_r^T , \\ AA^{+} = U\Sigma\Sigma^{+}U^T = \sum_{i=1}^{r} u_iu_i^T = U_rU_r^T . \end{gathered} \end{equation*}

For a matrix \(Q\) with orthonormal columns, \(QQ^T\) is the projection onto \(C(Q)\) (Chapter 3). By Theorem 7.3, \(C(V_r) = C(A^T)\) and \(C(U_r) = C(A)\). So \(A^{ + }A\) is the projection onto the row space, and \(AA^{ + }\) is the projection onto the column space. Split \(x = x_r + x_n\) with \(x_r\) in the row space and \(x_n\) in the null space (Theorem 3.9); then \(A^{ + }Ax = x_r\). Chapter 3 said that \(A^{ + }A\) could not be the identity in general, and would instead throw away \(x_n\) and keep \(x_r\). This is that statement, proved.

5.4. Least squares with least length

In class the pseudo-inverse came with the summary "\(Ax = b \rightarrow x = A^{ + }b\)". When \(b \notin C(A)\) there is no solution, and \(A^{ + }b\) is to be read in the least squares sense of Chapter 3. The next theorem makes this precise for every \(A\), including rank deficient ones, where neither \(A^TA\) nor \(AA^T\) is invertible.

Theorem 7.4. Let \(A\) be an \(m\times n\) matrix and \(b \in \mathbb{R}^m\), and let \(\hat x = A^{ + }b\). Then \(\hat x\) minimises \(\|Ax - b\|\) over all \(x \in \mathbb{R}^n\), and every other minimiser \(x\) has \(\|x\| > \|\hat x\|\).

Proof

Change to the coordinates of the SVD: put \(y = V^Tx\) and \(c = U^Tb\). Orthogonal matrices preserve length (Theorem 3.15), so \(\|x\| = \|y\|\), and

\begin{equation*} \|Ax - b\| = \|U\Sigma V^Tx - b\| = \|U(\Sigma y - c)\| = \|\Sigma y - c\| . \end{equation*}

The vector \(\Sigma y\) has entries \(\sigma_iy_i\) for \(i \leq r\) and zero for \(i > r\). So

\begin{equation*} \|\Sigma y - c\|^2 = \sum_{i=1}^{r} (\sigma_iy_i - c_i)^2 + \sum_{i=r+1}^{m} c_i^2 . \end{equation*}

The second sum does not depend on \(y\). The first is zero, its least possible value, exactly when \(y_i = c_i/\sigma_i\) for \(i = 1,\ldots,r\); the entries \(y_{r+1},\ldots,y_n\) do not appear and are free. So the minimisers are exactly the \(x = Vy\) with \(y_i = c_i/\sigma_i\) for \(i \leq r\) and \(y_{r+1},\ldots,y_n\) arbitrary. Among them,

\begin{equation*} \|x\|^2 = \|y\|^2 = \sum_{i=1}^{r} \frac{c_i^2}{\sigma_i^2} + \sum_{i=r+1}^{n} y_i^2 , \end{equation*}

which is least exactly when \(y_{r+1} = \cdots = y_n = 0\), and is strictly larger for any other choice. That \(y\) is \(\Sigma^{ + }c\), so the shortest minimiser is \(x = V\Sigma^{ + }U^Tb = A^{ + }b\).

The minimiser of least length is a property of \(A\) and \(b\) alone, so \(A^{ + }b\) is the same for every SVD of \(A\); since this holds for every \(b\), so is \(A^{ + }\). When the columns of \(A\) are independent there is only one minimiser, and it is the least squares solution of Theorem 3.12. When the rows are independent the least error is zero, and \(A^{ + }b\) is the minimum norm solution of Theorem 3.14. When neither holds, \(A^{ + }b\) does both jobs: least error, and among those the least length.

By (8),

\begin{equation} \hat x = A^{+}b = \sum_{i=1}^{r} \frac{u_i^Tb}{\sigma_i}\, v_i . \end{equation}

Each term is a scalar, \(u_i^Tb/\sigma_i\), times a vector, \(v_i\). The component of \(b\) along \(u_i\) is divided by \(\sigma_i\), so the smallest singular values have the largest influence on the solution. A small change in \(b\) along \(u_r\) changes \(\hat x\) by that change divided by \(\sigma_r\). The next section measures this.

6. The condition number

6.1. Definition

Let \(A\) be square and invertible, and suppose the right hand side of \(Ax = b\) is known only up to an error \(\Delta b\), from measurement or from round off. Then we actually solve \(A(x + \Delta x) = b + \Delta b\), and subtracting \(Ax = b\) gives \(A\,\Delta x = \Delta b\), that is \(\Delta x = A^{-1}\Delta b\). We quantify errors with the length \(\|\cdot\| = \|\cdot\|_2\), and compare relative errors:

\begin{equation} \frac{\|\Delta x\|/\|x\|}{\|\Delta b\|/\|b\|} = \frac{\|A^{-1}\Delta b\|}{\|\Delta b\|}\cdot\frac{\|b\|}{\|A^{-1}b\|} . \end{equation}

The condition number \(\kappa(A)\) is the largest value of (10) over all \(b \neq 0\) and \(\Delta b \neq 0\). It is the worst factor by which a relative error in the data can grow into a relative error in the solution. Note that \(\kappa\) is a property of \(A\) alone; no algorithm enters.

Theorem 7.5. Let \(A\) be an invertible \(n\times n\) matrix with singular values \(\sigma_1 \geq \cdots \geq \sigma_n > 0\). Then

\begin{equation*} \kappa(A) = \frac{\sigma_1}{\sigma_n} = \frac{\sigma_{\max}}{\sigma_{\min}} . \end{equation*}

The maximum of (10) is reached at \(b = u_1\) and \(\Delta b = u_n\) (or any nonzero multiples of these).

Proof

The two factors in (10) depend on different vectors, \(\Delta b\) and \(b\), which can be chosen independently. So the largest value of the product is the product of the largest values of the two factors, and we find each separately.

First factor. \(A^{-1} = V\Sigma^{-1}U^T\). Put \(y = U^T\Delta b\). Since \(V\) and \(U^T\) preserve length (Theorem 3.15), \(\|A^{-1}\Delta b\| = \|\Sigma^{-1}y\|\) and \(\|\Delta b\| = \|y\|\). So

\begin{equation*} \frac{\|A^{-1}\Delta b\|^2}{\|\Delta b\|^2} = \frac{\sum_i y_i^2/\sigma_i^2}{\sum_i y_i^2} = \sum_{i=1}^{n} \frac{1}{\sigma_i^2}\,\eta_i , \qquad \eta_i = \frac{y_i^2}{\sum_j y_j^2} . \end{equation*}

The weights satisfy \(\eta_i \geq 0\) and \(\sum_i\eta_i = 1\), so the right hand side is a weighted average of the numbers \(1/\sigma_i^2\) and lies between the smallest and largest of them:

\begin{equation*} \frac{1}{\sigma_1^2} = \frac{1}{\sigma_1^2}\sum_i\eta_i \;\leq\; \sum_i \frac{1}{\sigma_i^2}\,\eta_i \;\leq\; \frac{1}{\sigma_n^2}\sum_i\eta_i = \frac{1}{\sigma_n^2} . \end{equation*}

The upper bound is reached when all the weight is on \(i = n\), that is \(y = e_n\), or \(\Delta b = Ue_n = u_n\). So the largest value of the first factor is \(1/\sigma_n\).

Second factor. The same calculation with \(z = U^Tb\) gives \(\|A^{-1}b\|^2/\|b\|^2 = \sum_i (1/\sigma_i^2)\,\xi_i\) with weights \(\xi_i = z_i^2/\sum_jz_j^2\), and this is at least \(1/\sigma_1^2\), with equality at \(b = u_1\). So the largest value of \(\|b\|/\|A^{-1}b\|\) is \(\sigma_1\).

Together, \(\kappa(A) = (1/\sigma_n)\,\sigma_1 = \sigma_1/\sigma_n\).

So \(\kappa(A) \geq 1\) always, with equality when all the singular values are equal, as for an orthogonal matrix. A singular matrix has no inverse, and its condition number is taken to be \(\infty\). As a working rule, the class took a matrix with \(\kappa > 10^4\) to be ill conditioned; there is no sharp line, but a relative error of \(10^{-6}\) in \(b\) can then become \(10^{-2}\) in \(x\).

6.2. The matrix 2-norm

Chapter 1 described the condition number as \(\|A\|\,\|A^{-1}\|\), and Chapter 3 pointed out that the Frobenius norm is not the matrix norm that measures how much \(A\) can stretch a vector. The norm that does is

\begin{equation*} \|A\|_2 = \max_{x \neq 0} \frac{\|Ax\|}{\|x\|} . \end{equation*}

Claim 7.6. For any \(m\times n\) matrix \(A\), \(\|A\|_2 = \sigma_1\), and the maximum is reached at \(x = v_1\).

Proof

Put \(y = V^Tx\), so \(\|y\| = \|x\|\) (Theorem 3.15). Then \(\|Ax\| = \|U\Sigma V^Tx\| = \|\Sigma y\|\), and

\begin{equation*} \|\Sigma y\|^2 = \sum_{i=1}^{p} \sigma_i^2y_i^2 \leq \sigma_1^2\sum_{i=1}^{n} y_i^2 = \sigma_1^2\|x\|^2 . \end{equation*}

So \(\|Ax\|/\|x\| \leq \sigma_1\) for every \(x \neq 0\), and \(x = v_1\) gives \(\|Av_1\| = \|\sigma_1u_1\| = \sigma_1\). The bound used only that \(\sigma_1\) is the largest of the \(\sigma_i\).

The two factors in the proof of Theorem 7.5 are exactly these norms. The largest value of the first factor is \(\|A^{-1}\|_2 = 1/\sigma_n\), the largest singular value of \(A^{-1} = V\Sigma^{-1}U^T\). For the second, put \(x = A^{-1}b\); then \(\|b\|/\|A^{-1}b\| = \|Ax\|/\|x\|\), whose largest value is \(\|A\|_2 = \sigma_1\). So

\begin{equation} \kappa(A) = \|A\|_2\,\|A^{-1}\|_2 = \frac{\sigma_1}{\sigma_n} , \end{equation}

which is the formula of Chapter 1, with the norm now specified and computed.

6.3. An example

The matrix

\begin{equation*} A = \begin{bmatrix} 1 & 1000 \\ 0 & 1 \end{bmatrix} \end{equation*}

is triangular, with both eigenvalues equal to \(1\) and determinant \(1\). Nothing about these numbers suggests trouble. Solve \(Ax = b\) for two nearby right hand sides:

\begin{equation*} \begin{gathered} b = \begin{bmatrix} 1 \\ 0 \end{bmatrix} \;\Rightarrow\; x = \begin{bmatrix} 1 \\ 0 \end{bmatrix} , \\ b + \Delta b = \begin{bmatrix} 1 \\ 0.01 \end{bmatrix} \;\Rightarrow\; x + \Delta x = \begin{bmatrix} -9 \\ 0.01 \end{bmatrix} . \end{gathered} \end{equation*}

(Check the second: \((1)(-9) + (1000)(0.01) = 1\).) A change of \(1\%\) in \(b\) has changed the first entry of \(x\) from \(1\) to \(-9\). In terms of (10), \(\Delta x = (-10, 0.01)\), so the ratio is \(\sqrt{100.0001}\,/\,0.01 \approx 1000\).

The singular values explain it. They are the square roots of the eigenvalues of

\begin{equation*} \begin{aligned} A^TA &= \begin{bmatrix} (1)(1) + (0)(0) & (1)(1000) + (0)(1) \\ (1000)(1) + (1)(0) & (1000)(1000) + (1)(1) \end{bmatrix} \\ &= \begin{bmatrix} 1 & 1000 \\ 1000 & 1000001 \end{bmatrix} . \end{aligned} \end{equation*}

Its trace and determinant give \(\sigma_1^2 + \sigma_2^2 = 1000002\) and \(\sigma_1^2\sigma_2^2 = 1\), so \(\sigma_1\sigma_2 = 1\) and \((\sigma_1 - \sigma_2)^2 = 1000002 - 2 = 10^6\). Hence \(\sigma_1 - \sigma_2 = 1000\), and

\begin{equation*} \begin{gathered} \sigma_1 = 500 + \sqrt{250001} \approx 1000.001 , \qquad \sigma_2 = 1/\sigma_1 \approx 0.000999999 , \\ \kappa(A) = \sigma_1/\sigma_2 = \sigma_1^2 \approx 1.000002\times 10^6 . \end{gathered} \end{equation*}

In round numbers \(\sigma \approx 10^3, 10^{-3}\) and \(\kappa \approx 10^6\): a badly conditioned matrix whose eigenvalues are both \(1\).

The perturbation above was amplified by about \(1000\), not \(10^6\). In the proof of Theorem 7.5, its first factor is close to its largest value \(1/\sigma_2 \approx 1000\), but its second factor is \(\|b\|/\|x\| = 1\), far from the largest value \(\sigma_1 \approx 1000\). To approach the worst case, take \(b\) close to the direction \(u_1\) as well, for instance \(b = A(0,1)^T = (1000, 1)^T\). Then \(x = (0,1)^T\), and the same \(\Delta b = (0, 0.01)^T\) gives the same \(\Delta x = (-10, 0.01)^T\). The relative change in \(b\) is now \(0.01/\sqrt{1000001} \approx 10^{-5}\), the relative change in \(x\) is about \(10\), and the ratio is about \(10^6\).

6.4. The normal equations square the condition number

For a tall matrix \(A\) with independent columns, (10) does not apply as it stands, since \(A^{-1}\) does not exist. The same ratio of singular values, \(\kappa(A) = \sigma_1/\sigma_n\), is taken as its condition number (it is what Matlab’s cond computes). Solving least squares through the normal equations \(A^TAx = A^Tb\) replaces \(A\) by \(A^TA\). By (3), \(A^TA = V(\Sigma^T\Sigma)V^T\): a symmetric positive definite matrix whose SVD is its eigenvalue decomposition, with singular values \(\sigma_1^2 \geq \cdots \geq \sigma_n^2\). So

\begin{equation*} \kappa(A^TA) = \frac{\sigma_1^2}{\sigma_n^2} = \kappa(A)^2 . \end{equation*}

A bad condition number becomes much worse: \(\kappa(A) = 10^4\) becomes \(\kappa(A^TA) = 10^8\). This is the reason, given without proof in Chapter 3, for solving least squares by \(QR\) rather than through \(A^TA\), and it is why svd routines do not form \(A^TA\) either.

7. Truncated SVD and regularisation

Go back to (9), \(\hat x = \sum_i (u_i^Tb/\sigma_i)\,v_i\). If \(b\) carries noise \(\Delta b\), the solution changes by

\begin{equation*} A^{+}\Delta b = \sum_{i=1}^{r} \frac{u_i^T\Delta b}{\sigma_i}\, v_i . \end{equation*}

The noise along \(u_i\) is divided by \(\sigma_i\). When the trailing singular values are tiny, the last few terms are dominated by noise and can swamp everything else. Two remedies were discussed in class.

7.1. Truncated SVD

Keep only the first \(k \leq r\) terms:

\begin{equation} \hat x_k = \sum_{i=1}^{k} \frac{u_i^Tb}{\sigma_i}\, v_i . \end{equation}

This is \(A_k^{ + }b\), the pseudo-inverse of the rank \(k\) matrix \(A_k\) of Section 4.3 applied to \(b\). Dropping the terms with small \(\sigma_i\) throws away the part of the solution along \(v_{k+1},\ldots,v_r\), and with it the amplified noise in those directions. Too small a \(k\) loses real information; too large a \(k\) lets the noise back in; \(k = r\) gives \(A^{ + }b\) again. There is no formula for the right \(k\) — in the words of the lecture, choosing it is like cooking! One looks at how the singular values fall and at what the solutions look like for a few values of \(k\).

7.2. Tikhonov regularisation

Instead of cutting the terms off, damp them. For a number \(\alpha > 0\), minimise

\begin{equation} \|Ax - b\|^2 + \alpha^2\|x\|^2 . \end{equation}

The first term asks for a small error, as in least squares; the second penalises a long \(x\), which is what the amplified noise produces. (The lecture wrote \(\lambda\) for \(\alpha\); in this chapter \(\lambda_i\) already denotes the eigenvalues of \(A^TA\).) The two terms are the two pieces of one least squares problem,

\begin{equation*} \|Ax - b\|^2 + \alpha^2\|x\|^2 = \left\| \begin{bmatrix} A \\ \alpha I \end{bmatrix} x - \begin{bmatrix} b \\ 0 \end{bmatrix} \right\|^2 , \end{equation*}

with an \((m+n)\times n\) matrix whose columns are independent, because of the block \(\alpha I\). By Theorem 3.12 the minimiser is unique and solves the normal equations

\begin{equation*} \begin{gathered} \begin{bmatrix} A^T & \alpha I \end{bmatrix}\begin{bmatrix} A \\ \alpha I \end{bmatrix} x = \begin{bmatrix} A^T & \alpha I \end{bmatrix}\begin{bmatrix} b \\ 0 \end{bmatrix} , \\ \text{that is}\quad (A^TA + \alpha^2I)\,x = A^Tb . \end{gathered} \end{equation*}

Now substitute the SVD. By (3), \(A^TA + \alpha^2I = V(\Sigma^T\Sigma + \alpha^2I)V^T\), and \(A^Tb = V\Sigma^TU^Tb\). The matrix \(\Sigma^T\Sigma + \alpha^2I\) is diagonal with entries \(\sigma_i^2 + \alpha^2 > 0\) (with \(\sigma_i = 0\) for \(i > r\)), and the vector \(\Sigma^TU^Tb\) has entries \(\sigma_i\,u_i^Tb\), which are zero for \(i > r\). So \(V^Tx\) has entries \(\sigma_i\,u_i^Tb/(\sigma_i^2 + \alpha^2)\), and

\begin{equation} \hat x_\alpha = \sum_{i=1}^{r} \frac{\sigma_i}{\sigma_i^2 + \alpha^2}\,(u_i^Tb)\, v_i . \end{equation}

Compare (9): the factor \(1/\sigma_i\) has become

\begin{equation*} \frac{\sigma_i}{\sigma_i^2 + \alpha^2} = \frac{1}{\sigma_i}\cdot\frac{\sigma_i^2}{\sigma_i^2 + \alpha^2} . \end{equation*}

The second fraction is close to \(1\) when \(\sigma_i \gg \alpha\), so those terms are left almost as they were, and close to \(0\) when \(\sigma_i \ll \alpha\), so those terms are suppressed. Tikhonov regularisation is a smooth version of truncation, with the cut placed near \(\sigma_i \approx \alpha\). As \(\alpha \rightarrow 0\), \(\hat x_\alpha \rightarrow A^{ + }b\). Choosing \(\alpha\) is the same kind of cooking as choosing \(k\).

A transmitter with \(n\) antennas sends data over the air to a receiver with \(m\) antennas. This is a MIMO link (multiple input, multiple output), and the SVD shows how to use it. The matrices in this section are complex, and we use the complex form of the SVD from the remark after Theorem 7.1: \(H = U\Sigma V^H\), with \(U\) and \(V\) unitary (Chapter 5) and the \(\sigma_i\) real and nonnegative. As in Theorem 7.1, \(r\) is the rank of \(H\), so that \(\sigma_1 \geq \cdots \geq \sigma_r > 0\) are its nonzero singular values. Multiplying on the right by \(V\) gives the complex form of (2): \(Hv_i = \sigma_iu_i\) for \(i \leq r\), and \(Hv_i = 0\) for \(i > r\). Claim 7.6 also holds for a complex matrix, with Theorem 5.19 in place of Theorem 3.15 and \(|y_i|^2\) in place of \(y_i^2\) in its proof.

8.1. The channel

Data goes out as a stream of complex numbers called symbols, one every symbol period (a fixed short time). In each symbol period, transmit antenna \(j\) sends a complex number \(x_j\), and receive antenna \(i\) picks up a combination of all of them, plus noise:

\begin{equation} y = Hx + w , \end{equation}

with \(x \in \mathbb{C}^n\), \(y, w \in \mathbb{C}^m\), and \(H\) an \(m\times n\) complex matrix: one row for each receive antenna and one column for each transmit antenna. The entry \(h_{ij}\) is the gain and phase shift from transmit antenna \(j\) to receive antenna \(i\). (The signals are in complex baseband form, where one complex number carries the amplitude and the phase of a sinusoid.) The vector \(w\) is the noise at the receive antennas. We assume the following.

  • \(H\) stays the same over a block of many symbol periods. It changes when the antennas or their surroundings move, but slowly compared with the symbol rate.

  • The receiver knows \(H\). It finds \(H\) by channel estimation: at the start of each block the transmitter sends symbols known to both ends, called pilots, and the receiver fits \(H\) to what it receives. That fit is a least squares problem of the kind in Chapter 3. We take the estimate to be exact.

  • The transmitter knows \(V\). Estimation at the receiver does not give it this. Either the receiver computes the SVD and sends \(V\) back over a feedback link, or, when the two directions of the link share one frequency band, the transmitter estimates the channel itself from signals sent in the other direction (the channel from the receiver back to the transmitter is then \(H^T\), with no conjugate, because the gain and phase shift between two antennas are the same in both directions).

  • The noise has zero mean and covariance matrix \(\mathrm{E}[ww^H] = N_0I\), where the expectation of a matrix is taken entry by entry: its entries are uncorrelated, and each has variance \(\mathrm{E}[|w_i|^2] = N_0\), the noise power. Such noise is called white.

8.2. Precoding and decoding

The transmitter has \(r\) data symbols \(s = (s_1,\ldots,s_r)\) to send in each symbol period. Instead of putting them on the antennas directly, it sends

\begin{equation*} x = V_rs = s_1v_1 + \cdots + s_rv_r , \end{equation*}

where \(V_r\) holds the first \(r\) columns of \(V\), as in (7). Symbol \(s_i\) goes out along \(v_i\). The matrix \(V_r\) is the precoder. The receiver multiplies what it receives by the decoder \(U_r^H\), to get \(\tilde y = U_r^Hy\). From \(H = U\Sigma V^H\) we have \(U^HHV = \Sigma\), and \(U_r^HHV_r\) is the top left \(r\times r\) block of it, \(\Sigma_r = \operatorname{diag}(\sigma_1,\ldots,\sigma_r)\). So, with \(\tilde w = U_r^Hw\),

\begin{equation} \begin{aligned} \tilde y &= U_r^HHV_r\,s + U_r^Hw \\ &= \Sigma_rs + \tilde w . \end{aligned} \end{equation}

Since \(\Sigma_r\) is diagonal, this is \(r\) separate equations,

\begin{equation} \tilde y_i = \sigma_is_i + \tilde w_i , \qquad i = 1,\ldots,r . \end{equation}

Symbol \(s_i\) reaches output \(i\), multiplied by \(\sigma_i\), and reaches no other output. The channel \(H\), which mixes every transmit antenna into every receive antenna, now behaves as \(r\) scalar channels side by side, each with its own gain \(\sigma_i\). To recover \(s_i\), the receiver divides \(\tilde y_i\) by \(\sigma_i\). Figure 2 draws the scheme.

svd mimo
Figure 2. Precoding with \(V_r\) and decoding with \(U_r^H\) turn the channel \(H\) into \(r\) separate scalar channels, with gains \(\sigma_1,\ldots,\sigma_r\) and noise \(\tilde w_1,\ldots,\tilde w_r\).

The number of symbols is \(r\), and not more, for two reasons.

  • At the transmitter, \(Hv_i = 0\) for \(i > r\): anything sent along \(v_{r+1},\ldots,v_n\) lies in the null space of \(H\) (Figure 1) and never reaches the receiver.

  • At the receiver, \(Hx = U\Sigma(V^Hx)\), and the rows of \(\Sigma\) after row \(r\) are zero, so \(Hx\) is a combination of \(u_1,\ldots,u_r\) for every \(x\). The components of \(y\) along \(u_{r+1},\ldots,u_m\) are noise alone, and the decoder loses no signal by leaving them out.

So the number of data streams that can be sent at the same time is the rank, \(r \leq \min(m,n)\). Antennas added at one end cannot raise it beyond the number at the other end, and more antennas at both ends do not by themselves give more streams. If the antennas at each end are close together and the signal travels to a distant receiver along a single line-of-sight path, the columns of \(H\) are nearly parallel, and \(H\) is close to rank one: one large singular value and the rest small. Close, but not equal: a channel matrix found by measurement is almost never exactly rank deficient, because small random changes in its entries, from estimation errors or from the surroundings, make the zero singular values nonzero. So in practice \(r = \min(m,n)\), and how many streams are worth using depends on how small the trailing \(\sigma_i\) are, not on the exact rank (Section 8.4 says more). Several streams need signals arriving from several directions, as in a city full of reflecting buildings.

The precoder and the decoder change neither the power sent nor the noise in each stream.

  • \(\|x\|^2 = \|V_rs\|^2 = s^HV_r^HV_rs = s^Hs = \|s\|^2\), because the columns of \(V_r\) are orthonormal. The precoder spreads the power over the antennas, and the total transmitted power is that of the symbols themselves.

  • For a fixed matrix \(M\), \(\mathrm{E}[(Mw)(Mw)^H] = M\,\mathrm{E}[ww^H]\,M^H\), because expectation is linear. With \(M = U_r^H\) this gives \(\mathrm{E}[\tilde w\tilde w^H] = N_0U_r^HU_r = N_0I_r\). So the noise in (17) is again white, with power \(N_0\) in each stream.

8.3. One stream: beamforming (optional)

This subsection is optional; nothing else in the notes depends on it.

Suppose the transmitter sends a single symbol \(s\) of power \(P = \mathrm{E}[|s|^2]\) along a unit vector \(t \in \mathbb{C}^n\): \(x = ts\), so that the transmitted power is also \(P\). The signal part of \(y\) is \(Hts\), of length \(\|Ht\|\,|s|\). By Claim 7.6, \(\|Ht\| \leq \sigma_1\) for every unit vector \(t\), with equality at \(t = v_1\). So sending along \(v_1\) gives the strongest received signal, \(Hv_1s = \sigma_1u_1s\). The receiver then takes

\begin{equation*} u_1^Hy = \sigma_1s + u_1^Hw , \end{equation*}

which keeps all of the signal. By the rule of Section 8.2 with \(M = u_1^H\), the noise \(u_1^Hw\) has variance \(u_1^H(N_0I)u_1 = N_0\), so the signal to noise ratio (signal power divided by noise power) is \(\sigma_1^2P/N_0\). This is beamforming: \(v_1\) points the transmitted power in the direction that the channel passes best, and \(u_1\) collects it at the receiver. It is stream 1 of (17) used alone, with all the power on it.

8.4. Strong and weak streams (optional)

This subsection is optional; nothing else in the notes depends on it.

In (17), stream \(i\) has signal power \(\sigma_i^2P_i\), where \(P_i = \mathrm{E}[|s_i|^2]\) is the power the transmitter puts on it, and noise power \(N_0\), so its signal to noise ratio is \(\sigma_i^2P_i/N_0\). With equal power on every stream, the streams with small \(\sigma_i\) have a low signal to noise ratio and make many errors; the Matlab page shows this. The transmitter knows the \(\sigma_i\) and can act on them: it can send fewer bits on a weak stream, give it less power, or leave it unused and give its power to the strong streams. Leaving out the streams with small \(\sigma_i\) is the truncated SVD of Section 7.1 again, in a different setting.

How best to share a total power \(P = P_1 + \cdots + P_r\) among the streams is a question for a course on communication, and we only quote the answer here, without proof. When the noise is Gaussian, the highest rate at which data can be sent reliably over this channel, in bits per symbol period, is the largest value of

\begin{equation*} \sum_{i=1}^{r} \log_2\left(1 + \frac{\sigma_i^2P_i}{N_0}\right) \end{equation*}

over all \(P_i \geq 0\) with \(P_1 + \cdots + P_r = P\). Each term is the rate of one scalar channel of (17), so the link carries the sum of what its \(r\) streams carry. The best powers, given by a rule called water-filling, give a weaker stream less power, and none at all if it is weak enough.

8.5. Comparison with zero forcing (optional)

This subsection is optional; nothing else in the notes depends on it.

The scheme above needs \(V\) at the transmitter. Zero forcing is a standard scheme that needs \(H\) only at the receiver. Let \(m \geq n\) and let \(H\) have independent columns, so that \(r = n\). The transmitter puts the symbols directly on the antennas, \(x = s\) with \(s \in \mathbb{C}^n\), and the receiver multiplies \(y\) by the left inverse \(H^{ + } = (H^HH)^{-1}H^H\) of Section 5.2, with \({}^H\) in place of \({}^T\):

\begin{equation*} \hat s = H^{+}y = H^{+}Hs + H^{+}w = s + H^{+}w . \end{equation*}

Each estimate \(\hat s_j\) contains \(s_j\) and noise, and nothing of the other symbols: the interference between the streams is forced to zero, which is where the name comes from.

The two schemes differ in the noise. By the rule of Section 8.2 with \(M = H^{ + } = V\Sigma^{ + }U^H\), and \(U^HU = I\),

\begin{equation*} \begin{aligned} \mathrm{E}[(H^{+}w)(H^{+}w)^H] &= N_0H^{+}(H^{+})^H \\ &= N_0\,V\Sigma^{+}(\Sigma^{+})^HV^H . \end{aligned} \end{equation*}

The matrix \(\Sigma^{ + }(\Sigma^{ + })^H\) is \(n\times n\) and diagonal, with entries \(1/\sigma_i^2\). So the noise in \(\hat s_j\), the \(j\)-th diagonal entry, has variance (with \(V_{ji}\) the entry of \(V\) in row \(j\) and column \(i\))

\begin{equation*} N_0\sum_{i=1}^{n} \frac{|V_{ji}|^2}{\sigma_i^2} . \end{equation*}

The rows of the unitary matrix \(V\) have unit length (Chapter 5), so \(\sum_i |V_{ji}|^2 = 1\), and this is \(N_0\) times a weighted average of the numbers \(1/\sigma_i^2\), as in the proof of Theorem 7.5. In the SVD scheme, dividing (17) by \(\sigma_i\) gives \(s_i + \tilde w_i/\sigma_i\), with noise variance \(N_0/\sigma_i^2\). Added over the streams, both schemes have total noise variance \(N_0\sum_i 1/\sigma_i^2\) (for zero forcing, add the weighted averages over \(j\) and use that the columns of \(V\) also have unit length). They share it out differently. Zero forcing spreads the large term \(N_0/\sigma_n^2\) of the weak direction \(v_n\) over all the streams; the SVD scheme keeps it on stream \(n\) alone. Since a weighted average of the \(1/\sigma_i^2\) cannot exceed the largest of them, \(1/\sigma_n^2\), the weakest SVD stream is at least as noisy as every zero forcing stream. So with the same power and the same kind of symbols on every stream, zero forcing can make fewer errors in all, and the Matlab page has an example. The SVD scheme gains when the transmitter acts on what it knows about the \(\sigma_i\), as in Section 8.4, by giving the weak stream fewer bits, less power or none. A zero forcing transmitter does not know \(V\), so it cannot move its power between the directions \(v_i\); at most it can act antenna by antenna, which is not the same thing.

Home