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

1 view (last 30 days)
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 !

Accepted Answer

Walter Roberson
Walter Roberson on 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.

More Answers (0)

Categories

Find more on Linear Algebra in Help Center and File Exchange

Tags

Products


Release

R2013a

Community Treasure Hunt

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

Start Hunting!