如何计算矩阵的对数但忽略等于0的值

时间:2013-12-03 14:25:44

标签: matlab

我有一个矩阵A 3x3,其元素等于0.我想计算log(A)。但我们知道log(0)无法识别。所以我想计算矩阵A的日志,忽略等于0的元素。如果元素等于0.我想设置log(0)= 0。如何在matlab中实现它。谢谢大家。示例:

A=[3 2 3
   3 0 2
   4 5 0]
Log(A)=[    1.0986    0.6931    1.0986
            1.0986      0       0.6931
            1.3863    1.6094         0]

3 个答案:

答案 0 :(得分:4)

让我们首先将A的元素设置为0:

log(A+(A==0))

答案 1 :(得分:1)

我使用NaNlog(NaN) = NaN

A = [3 2 3;
     3 0 2;
     4 5 0];

A(A==0) = NaN; 
B = log(A);

但你应该考虑高性能标志的评论。我个人会保留NaN。如果你真的想要它:

B(isnan(B)) = 0; 

返回:

B =

    1.0986    0.6931    1.0986
    1.0986         0    0.6931
    1.3863    1.6094         0

答案 2 :(得分:1)

直接的方法:

B = zeros(size(A))
zl = find(A)
B(zl) = log(A(zl))