How to make a log operation for a matrix excluding the '-inf' values?

6 views (last 30 days)
Hello everyone!
I want to do it a log operation in a matrix and I developed the following loop:
for ii = 1: size (IDHMA,1)
for kk = size (IDHMA,2)
IDHMAlog (ii,kk) = log(IDHMA(ii,kk))
if IDHMA(ii,kk) == 0
IDHMAlog(ii,kk) = NaN %exclude the"-Inf" values
else
IDHMAlog (ii,kk) = log(IDHMA(ii,kk))
end
end
end
But the result is giving me a matrix in the same dimension but with zeros and the the log operation result only in the last column. Does anyone know how to fix it ?
Thanks

Accepted Answer

Tommy
Tommy on 2 Jun 2020
k should span from 1 to size(IDHMA,2), similar to ii:
for ii = 1: size (IDHMA,1)
for kk = 1 : size (IDHMA,2)
IDHMAlog (ii,kk) = log(IDHMA(ii,kk))
if IDHMA(ii,kk) == 0
IDHMAlog(ii,kk) = NaN %exclude the"-Inf" values
else
IDHMAlog (ii,kk) = log(IDHMA(ii,kk))
end
end
end
I believe you could avoid the loops if you'd like:
IDHMAlog = log(IDHMA);
IDHMAlog(IDHMA==0) = NaN;

More Answers (0)

Community Treasure Hunt

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

Start Hunting!