I am trying to decompose affine transformations in elementary operations (rotation, scaling, shear), leaving translation aside for the moment, and in particular, to understand the relation of affine transformations with the singular value decomposition (SVD). I am focusing on the two dimensional case.

$$M = U \Sigma V^t$$

There are already a number of questions asking about this, none of them with a general, definitive answer:

In particular, I observed, but could not prove, that

  1. The singular values of an affine transformation matrix are the absolute values of the scaling parameters.
  2. The SVD of a transformation consisting in a uniform scaling and a proper rotation didn't reconstruct the original matrices, but introduced two improper rotations (i.e., determinant = -1).
  3. Nonetheless, the multiplication of these two improper rotations yielded the original rotation. Perhaps because the transformation is conformal?

In Python code:

In [66]: rot
array([[ 0.8660254, -0.5      ],
       [ 0.5      ,  0.8660254]])

In [67]: sc
array([[ 2.,  0.],
       [ 0.,  2.]])

In [68]: svd(rot @ sc)
(array([[-0.8660254, -0.5      ],
        [-0.5      ,  0.8660254]]), array([ 2.,  2.]), array([[-1., -0.],
        [ 0.,  1.]]))

In [69]: det(_68[0])
Out[69]: -1.0000000000000002

In [70]: _68[0] @ _68[2]
array([[ 0.8660254, -0.5      ],
       [ 0.5      ,  0.8660254]])

Under which assumptions can we perform this decomposition or does it make sense? Is there any proof that the singular values are the sorted absolute scaling factors? Is there a decomposition that is robust against reflection (i.e. improper transformations)?

  • $\begingroup$ Can you define precisely what you mean by "the scaling parameters"/"scaling factors"? $\endgroup$
    – user856
    Commented Dec 17, 2019 at 18:06

1 Answer 1


What do you mean by "improper rotations"? An orthogonal transformation with a reflection (i.e. determinant -1)? This would appear to be a non-uniqueness problem and could be fixed by flipping the sign of an arbitrary (but same index) column of $U$ and $V$, which would still be a valid SVD.

  • $\begingroup$ Yes, I mean determinant -1. I clarified that in the question. $\endgroup$
    – user24849
    Commented Jun 21, 2017 at 15:53
  • $\begingroup$ @astrojuanlu: Ok, then just multiply the first (say) column of U and V by -1 each. Since $\det \Sigma>0$ by definition, and provided that $\det M>0$, $\det U$ and $\det V$ will always either be both +1 or -1, so you can "fix" your SVD such that U and V are proper rotations. Diagonal elements of $\Sigma$ are obviously scaling factors, with one rotation applied before and one after the scaling. $\endgroup$ Commented Jun 22, 2017 at 9:48
  • 1
    $\begingroup$ Thanks for your comment, but the "obviously" part is precisely what I am trying to address. $\endgroup$
    – user24849
    Commented Jun 22, 2017 at 12:23

You must log in to answer this question.