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

2 visualizaciones (últimos 30 días)
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

Respuesta aceptada

Tommy
Tommy el 2 de Jun. de 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;

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by