Matlab - 常见Error
1. SVD did not converge
当用matlab中的svd函数对矩阵X做奇异值分解的时候,可能会出现这个错误。
源代码:
X = rand(n,n);
[U,S,V] = svd(X);
运行后出现错误:SVD did not converge。
解决方法:
X = rand(n,n);
X = X+eye(n,n)*1e-12;
[U,S,V] = svd(X);
解析:这个错误是由QR迭代步数不能超过75的限制引起的,http://cn.mathworks.com/help/matlab/ref/svd.html
在X的对角线上加一个极小的数字,可以保证X是可分解的。运行后错误不会再出现了。