# SVD: How to scale singular values after rotating U and V (Matlab)

I am very new to linear algebra...

I construct a rectangular matrix A1 from some sampled data which is m x n where m > n

[U1, S1, V1] = svd(A1)


If I then construct a new matrix A2 (also m x n, m > n) using resampling for e.g. bootstrapping of the original data I can then calculate a new SVD

[U2, S2, V2] = svd(A2)


Because of this that I read:

"Note that the decomposition of the resampled matrix is not guaranteed to produce a comparable set of latent variables, because both permutation and bootstrap resampling could induce arbitrary axis rotation (i.e. a change in the order of the latent variables) and/or axis reflection (i.e. a sign change for the weights)"

...I believe I need to correct using rotation using the original as a target?

[~, Q] = rotatefactors(U2, 'Method', 'procrustes', 'Target', U1, 'Type', 'orthogonal')


I want to then rotate my U2 and V2 matrices (is this the right way?):

U2r = U2 * S2 * Q;
V2r = V2 * S2 * Q;

• however because the matrices A1 and A2 are not square, this fails in Matlab.

Finally, I want to calculate the new singular values S2r (is this necessary??) How do I scale them appropriately given that I have rotated U2 and V2?

Is this possible or have I completely misunderstood the process??

Thanks for any help, please bear in mind that I am a total beginner.

In general, the singular value decomposition provides an orthonormal basis to the domain $(\mathbf{V})$ and the codomain $(\mathbf{U})$. Additionally, the spaces are aligned by the SVD. The relative rotations are sacred. You can't just change one.
In general $$\mathbf{U} \, \Sigma \, \mathbf{V}^* \ne \mathbf{R}(\theta) \, \mathbf{U} \, \Sigma \, \left( \mathbf{R}(\theta) \mathbf{V} \, \right)^{*}$$