避免在MATLAB中生成奇异矩阵

时间:2011-02-24 01:24:37

标签: math matlab

如何在MATLAB中生成一个非奇异的随机矩阵?

我知道可以使用矩阵行列式进行检查,但在阅读MATLAB determinant之后:

“使用det(X)== 0作为矩阵奇异性的测试仅适用于具有小整数条目的适度顺序矩阵。不建议使用abs(det(X))< =容差测试奇点,因为它很难选择正确的公差。函数cond(X)可以检查奇异和近似奇异矩阵。“

所以,如果我想生成一个大的随机矩阵(axb)a = 5000,b = 5000 ,该怎么办?

1 个答案:

答案 0 :(得分:13)

随机生成的矩阵将是满秩(因此是可逆的,如果是正方形),概率为1:

A = randn(5000);

您可以使用min(svd(A))进行检查,并验证最小的奇异值是否大于零。

这是一个众所周知的事实,但是here's an example paper if you want one