计算矩阵中的特殊零元素

时间:2015-10-14 11:04:56

标签: matlab matrix

我有一个矩阵span.close;

我知道要计算零元素的总数,我可以简单地使用函数event.stopImmediatePropagation();。也就是说,A = [0 3 4; 5 0 6; 0 6 0] 这将给我4个。

问题:

现在以矩阵B为例生成如下:

find

上面的代码将给出:Total_number_of_zero_elements = 0。 矩阵B包含许多0值,但写为0.0000。

因此,matlab不能使用函数find?

来区分0到0.0000

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:5)

浮点数具有未完全表示的属性。如果您将矩阵与其逆数字相乘,则非对角线元素将不会为0,而是在eps(1)附近。

要检查浮点数的零点,请使用阈值:find(abs(B)<1e-10)。 (请注意abs:没有-10也可以作为0。)

显然应该仔细选择阈值:大到足以捕获数字零,但小到足以让实际非零值保持非零。

在你的例子中

B = toeplitz(0.1.^(0:30-1));

最小的数字是1e-29,它可以很容易地表示为双精度数字,并且显然不等于0.如果你进一步这样做,你会遇到问题从{{1}开始},大致为eps(0)。任何大于它的数字都不会完全为零。 (但是如果你执行计算并且期望结果为0,那么它可能会像我上面写的那样在5e-324的顺序。)