Cannot figure out why the Matrix S1 and S2 differ. Seems to work when the Matrix S1 is a random matrix (rand) but when the source is a wave file which has been made into a matrix using the Short time Fourier transform, S1 and S2 differ and i cannot seems to get back the original matrix S1. Anybody has any clue Why this happens?

y = wavread('source.wav');
S1= myspectrogram(y); % Generic routine to get the STFT
[U S V]=svd(S1);
S2= U*S*(V');

If anybody has any clue plz reply. Thanks for looking.