Matlab函数NNZ,数字零

时间:2019-05-21 15:05:41

标签: matlab

我正在Matlab的最小二乘非负解决方案恢复上下文中编写代码,并且我需要(没有更多细节,因为这个问题并不重要)知道我的矩阵和数组中非零元素的数量。

matlab上的函数NNZ完全可以满足我的要求,但是碰巧我需要更多有关Matlab认为“零元素”的信息,它可以是0本身,也可以是数字零,例如1e-16或更小。

有人了解有关NNZ功能的信息,因为我无法获取原始脚本

谢谢。

PS:我不是Matlab专家,所以如果这真的很简单,请接受我的道歉。

我在Matlab上尝试了“ open nnz”,但是我只得到了一个带有注释代码行的小脚本...

2 个答案:

答案 0 :(得分:2)

由于nnz对不完全为 的所有内容进行计数(即1e-100不为零),因此您只需将relational operator应用于您的数据首先要找到多少值超过零附近的某个公差。对于矩阵A

n = nnz(abs(A) > 1e-16);

另外,您可能会感兴趣this discussion of floating-point comparison

答案 1 :(得分:2)

您可以执行以下操作来添加公差:

nnz(abs(myarray)>tol);

这将创建一个二进制数组,当abs(myarray)> tol时为1,否则为0,然后计算非零条目的数量。