How the SVD�Saves the Universe
SVD Algorithm
Gene Golub
Stanford
1965
with V. Kahan
1970
with Christian Reinsch
“Matrices and Their Singular Values”
1976
Los Alamos National Laboratory
16 mm celluloid film
Promote SVD
Only 6 years old
LANL computer graphics library
3D hidden lines
Text with Greek letters
LANL SVD
Y-285.mp4�“youtube cleve svd movie”�https://www.youtube.com/watch?v=R9UoFyqJca8�Presage surf�
“Star Trek, the Motion Picture”
1979
Paramount Movies
“V’GER” threatens
SVD
[U,S,V] = svd(A,'econ')
A = U*S*V'
=
any = orthogonal × diagonal × orthogonal
SVD
x x = cos θ sin θ σ1 0 cos ψ sin ψ
x x -sin θ cos θ 0 σ2 -sin ψ cos ψ
Principal Component Analysis
Weight
Height
PCA
[coeff, score, latent] = pca(X)
1st principal component
2nd principal component
PCA without SVD
X = A - mean(A)
C = (X'*X)/(n-1)
[Q,E] = eig(C)
latent = flipud(diag(E))
coeff = fliplr(Q)
score = X*coeff
PCA with SVD
X = A - mean(A)
[n,p] = size(A)
[U,S,V] = svd(X,'econ')
coeff = V
score = U*S
latent = diag(S).^2/(n-1)
SVD meets PCA
SVD
Origins in numerical analysis
Works with original data
More reliable numerically
PCA
Origins in statistics
Center data
Eigenvalues of covariance matrix
Lose small eigenvalues
Low Rank Approximation
R ≈ A
A is m× n
R = UΣVT
U is m× k, Σ is k× k, V is n× k
k = rank
k << m,n
Human Gait
Nikolaus Trode
Ruhr-Universität, Bochüm, Germany
http://www.bml.ruhr-uni-bochum.de/Demos
Queen’s University, Kingston, Ontario
One Subject
20 steps
12 seconds @ 120 frames/second
= 1440 frames
15 markers in 3 dimensions
= 45 time series
Raw data is 45-by-1440 matrix
for each subject
Model
p(t) = v1 + v2 cos(ωt) + v3 sin(ωt)
+ v4 cos(2ωt) + v5 sin(2ωt)
= V [1 cos(ωt) sin(ωt) cos(2ωt) sin(2ωt)]'
ω = scalar frequency (Fourier analysis)
V = [v1 v2 v3 v4 v5] principal vectors (SVD)
= fixed 45-by-5 coefficient matrix
45-by-1440 → 45-by-5
Eigenwalkers
Combine all of the data
Two more SVD’s
40 Female V ’s → F
40 Male V ’s → M
Eigenwalker = (F+M)/2
gender = F-M
https://blogs.mathworks.com/cleve/2026/01/12/svd-measures-partisanship-in-the-u-s-senate/
A(k,j) = +1 "Yea“
-1 "Nay"
0 "Not Voting"
100 by number of votes that year
sigma = svd(A)
partisanship = 1 – sigma(3)/sigma(1)
How the SVD�Saved the Universe