我有一个矩阵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]
答案 0 :(得分:4)
让我们首先将A的元素设置为0:
log(A+(A==0))
答案 1 :(得分:1)
我使用NaN
,log(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))