Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Avoid Generating a singular matrix in MATLAB

Tags:

math

matlab

How would you generate a random matrix that is not singular in MATLAB.?

I know a matrix determinant can be used to do check this, but after reading MATLAB determinant:

"Using det(X) == 0 as a test for matrix singularity is appropriate only for matrices of modest order with small integer entries. Testing singularity using abs(det(X)) <= tolerance is not recommended as it is difficult to choose the correct tolerance. The function cond(X) can check for singular and nearly singular matrices."

So if I want to generate a big random matrix (axb) a=5000, b=5000, How to do it??.

like image 894
edgarmtze Avatar asked Feb 24 '11 01:02

edgarmtze


1 Answers

A randomly generated matrix will be full rank (and hence invertible, if square) with probability 1:

A = randn(5000);

you can check this by using min(svd(A)), and verifying that the smallest singular value is larger than zero.

This is a well-known fact, but here's an example paper if you want one.

like image 143
Peter Avatar answered Sep 28 '22 08:09

Peter