我有一个矩阵,其中一些元素为零。这对我来说在后续操作(获取日志等)中是一个问题。有没有一种方法可以用我选择的输入快速替换矩阵中的零元素。快速 - 意思是,没有循环。
直接的答案是:
M(M == 0) = realmin;
这正是您所要求的,用一个小数字替换零。请注意,这以向量化的方式隐式搜索零。不需要循环。 (这是一种 MATLAB 方法,避免了那些显式且缓慢的循环。)
或者,您可以使用 max,因为负数从来都不是问题。所以
M = max(M,realmin);
也会起作用。同样,这是一个矢量化解决方案。如果没有经过仔细测试,我不确定哪一个更快,但其中任何一个肯定都是可以接受的。
请注意,我在这里使用了 realmin 而不是 eps,因为它与您实际可以得到的双精度数一样小。但请使用对您来说有意义的任何小数字。
log10(realmin)
ans =
-307.6527
将其与 eps 进行比较。
log10(eps)
ans =
-15.6536
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)