Threshold value in singular value decomposition

12 Ansichten (letzte 30 Tage)
Giulio
Giulio am 21 Mär. 2012
Kommentiert: Keith Dalbey am 23 Okt. 2018
Hello,
In a paper that I'm reading, they suggest to distinguish zero/nonzero diagonal elements by setting a small numerical threshold as adopted in economic SVD in MATLAB.
I would like to ask what the numerical threshold adopted in economic SVD in MATLAB is.
Thank you in advance
  1 Kommentar
David Young
David Young am 21 Mär. 2012
Does "economic SVD" mean the svd function with the 'econ' option? If so, the paper mentioned does not seem to make sense, because svd(..., 'econ') does not distinguish zero/nonzero singular values on the basis of their magnitude - it simply uses the size of the input matrix to discard singular values and associated vectors which are known to be identically zero.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

David Young
David Young am 21 Mär. 2012
See the comment above about the economical svd function.
I note that the documentation for rank() says that it uses as its default tolerance
max(size(A))*eps(norm(A))
Maybe this is useful?
  1 Kommentar
Keith Dalbey
Keith Dalbey am 23 Okt. 2018
Thanks for posting this, I found it extremely useful when implementing a (faster than default svd based) pinv for correlation matrices (real, symmetric, positive semi-definite, 1's on the diagonal) in Armadillo using the arma::eig_sym (I frequently prototype code in MATLAB then port it to C++ for production use/speed, Armadillo is the linear algebra package I use for C++)

Melden Sie sich an, um zu kommentieren.


Giulio
Giulio am 21 Mär. 2012
You are right, the first time that I read the article, I didn't understand what was the exact meaning of "a small numerical threshold as adopted in economic SVD in MATLAB" (that is exactly how is written in the article).
I was also wondering how to interpret "economic SVD" in a different way, and in the meanwhile I was using the default tolerance that MATLAB uses for the rank determination, as you said.
In my problem, the tolerance is really important, because I will use the LUQ decomposition also to check the singularity of the matrix, because the rank of the matrix should be equal to the size of the "U" matrix that comes out from the LUQ decomposition, and of course depends from the tol value used. So, in my problem is really important the choice of the tolerance value. I also know that MATLAB uses the SVD in the rank determination procedure.
Maybe I could ask if for the LUQ decomposition there is a "better" tolerance value to use.

Kategorien

Mehr zu Linear Algebra finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by