我一直在寻找找到矩阵非零最小值的最有效方法,并在论坛上找到了这个:
设数据为矩阵A
.
A(~A) = nan;
minNonZero = min(A);
这是非常短且高效的(至少在代码行数方面),但我不明白当我们这样做时会发生什么。我找不到任何关于此的文档,因为它不是operation
在像这样的矩阵上+
,-
,\
,... 将会。
任何人都可以解释我或给我一个链接或一些可以帮助我理解所做的事情吗?
谢谢 !
It uses 逻辑索引 http://blogs.mathworks.com/steve/2008/01/28/logical-indexing/
~
在Matlab中是非运算符。当用于双精度数组时,它会发现所有元素都等于零。例如。:
~[0 3 4 0]
逻辑矩阵中的结果
[1 0 0 1]
即这是找到所有零元素的快速方法
So if A
= [0 3 4 0]
then ~A
= [1 0 0 1]
so now A(~A)
= A([1 0 0 1])
. A([1 0 0 1])
使用逻辑索引仅影响为 true 的元素,因此在本例中为元素 1 和元素 4。
Finally A(~A) = NaN
将替换 A 中所有等于的元素0
with NaN
which min
忽略,因此您找到最小的非零元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)