I was looking at compression related applications of SVD and wanted to compare my intuition with how SVD would compress this image:

enter image description here

Since there are only 3 independent columns/rows, we can get an easy factorization as (I noticed I inverted the black and white here, apologies): enter image description here

So I was expecting to get something very similar when doing SVD, but it ends up beings totally different. Keeping only the first 3 principal components (the other singular values aren't 0, but are of the order $10^{-16}$ so I'm guessing its only because of numerical algorithms used in octave.enter image description here

For completion, here is the octave/matlab code:

c1 = ones(25,1);
c2 = [ones(5,1); zeros(15,1); ones(5,1)];
c3 = [ones(5,1); zeros(3,1); ones(9,1); zeros(3,1); ones(5,1)];
M = [repmat(c1,1,2) repmat(c2,1,3) repmat(c3,1,5) repmat(c2,1,3) repmat(c1,1,2)]
[U S V] = svd(M)

Since my initial concern was compression, I noticed that my factorization is clearly superior, since we only need to store integers, which requires much less space than storing real numbers. So my question is, are there such things as matrix factorization over Z (or other rings, or even other algebraic structures)?

Also, why are the columns found by SVD not just a multiple of mine?

  • 2
    $\begingroup$ You seem to be interested in the Smith normal form. $\endgroup$ May 17, 2017 at 21:10
  • 2
    $\begingroup$ Left and right singular vectors are always orthogonal; that's part of the point of SVD. And the columns / rows you wrote down don't have this property. $\endgroup$ May 17, 2017 at 23:13


You must log in to answer this question.

Browse other questions tagged .