Hello,
I've worked with SVD Algorithms in the past, implementing them based on different types of factorizations. I see that QR has been used in the attached paper, which is a pretty lightweight solution. I'm an engineer in Computer Science, so dealing with Matlab and factorizations has become a habit over the years.
I just looked over the code and I think the problem may start when building Tb & its factorization, and after that it introduces a great amount of error in the simulation.
I'd like to help you with the project at it's right in my area of expertise.
Best wishes,
Bogdan Panait