I want to compute the smallest nonzero singular value of the matrix A, which is defined as follows.
Let $B = rand(500, 250)$, $A = B*B^t$, where $t$ denotes the transpose of the matrix.
I found the following matlab code to compute singular values of the matrix A which is based on the Singular value decomposition of the matrix.
svds = svd(A);
s = min(svds); % smallest singular value
I want to know is there any other efficient way to smallest singular value?
Thank you in advance
Since $A=BB^T$, it is symmetric and positive semidefinite, and its singular values are identical to its eigenvalues. Furthermore, its nonzero eigenvalues are identical to the nonzero eigenvalues of $B^TB$. To get the smallest eigenvalue of $B^TB$, use
eigs(B'*B,1,'sm').