避免在MATLAB中生成奇异矩阵

cMi*_*nor 5 math matlab

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

我知道矩阵行列式可以用来检查这个,但是在读完MATLAB行列式之后:

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

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

Pet*_*ter 14

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

A = randn(5000);
Run Code Online (Sandbox Code Playgroud)

你可以通过使用min(svd(A)),并验证最小的奇异值是否大于零来检查这一点.

这是一个众所周知的事实,但如果你想要一个,这里有一个例子.