a test to exclude inf and nans from pinv(...) doesn't work

1 Ansicht (letzte 30 Tage)
Hello,
having this error :
Error using svd
Input to SVD must not contain NaN or Inf.
Error in pinv (line 29)
[U,S,V] = svd(A,0);
I tried to add this test before calling pinv(gradVcpr) :
if any(isnan(gradVcpr) | ~isfinite(gradVcpr)) % Error : gradVcpr is NaN or infinite
......
return % stop executing the function before call to pinv
end
But the test doesn't work : I still have the same error. Can somebody help me ?
Thank you !

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 26 Sep. 2018
if any(isnan(gradVcpr(:))) || any(~isfinite(gradVcpr(:))))
You were missing the fact that any() is a matrix operation that processes only the first non-scalar dimension. Your code was equivalent to
if all(any(isnan(gradVcpr) | ~isfinite(gradVcpr)))
but that was false for some of the columns so the all() failed.

Weitere Antworten (0)

Kategorien

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

Tags

Produkte


Version

R2013a

Community Treasure Hunt

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

Start Hunting!

Translated by