在循环迭代中以NaN分配的变量

时间:2019-03-23 13:27:43

标签: matlab

我正在尝试手动计算熵,并且存储结果的变量在每次迭代时都获得NaN值。我在matlab函数中有以下代码片段-

entropy = 0.0;
%Calculating entropy...
for i = 1:size(freq_norm)
    val = freq_norm(i);
    val_log = log2(val);
    mul = val * val_log;
    entropy = entropy - mul;
    disp(['VALUE: ',num2str(entropy)]);
end

这里freq_norm是一个向量,由相加为1的值组成(如pdf)。 我在程序的另一部分中具有完全相同的代码段,该代码段具有1:6的值,并且可以完美地工作。 我还打印了所有val, val_log, mul值,但都不是NaN并按预期打印。 mul包含大约-0.05的值。

任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

log2函数返回NaN,可能是因为您有时试图获取对数0(即-Inf)并乘以0。

请参阅此example以供参考。