在我的代码的循环中,我使用单行查找并绘制一些潜在的最小值(为清楚起见:7对应于包含潜在值的单元格,5对应于x值):
plot(PDdata{subject,5}{1,1}(find(PDdata{subject,7}==...
min(PDdata{subject,7}))),min(PDdata{subject,7}),'ko')
现在Matlab建议使用逻辑索引而不是FIND,尽管我只是简单地研究了它,但这并不是我应该做的事情。因此,这里的主要问题是我是否应该使用逻辑索引(我更喜欢将其保留为单行!),如果是这样的话:怎么做?
我提前为提出这样一个小问题而道歉,但我正在努力提高我的Matlab知识,所以希望简短的回答会帮助我!
答案 0 :(得分:5)
丹尼斯在评论中是正确的。这个想法是使用逻辑索引直接删除一个步骤。因此,如果你试图提取矩阵中大于2的所有元素,使用find你会这样做:
A = [1 3 2 1 4 1]
A(find(A>2))
就像
A(find([0 1 0 0 1 0]))
然后
A([2, 5])
最后
[3, 4]
但是,如果你直接使用逻辑索引:
A(A>2)
你得到了
A([0 0 1 0 0 1 0])
最后
[3,4]
所以你得到了完全相同的结果,并且你跳过了对find
的调用,你可以看到在这些情况下完全无关。
然后只是为了添加一些非常酷的东西,除非你的Matlab已经很老了,mlint(给你那个警告的位)实际上可以解决这个问题。如果您将鼠标悬停在红色下划线的find
上,则可以获得以下结果:
所以这是错误的基本版本,最后看到有一个fix
按钮。这是你点击后得到的:
好的,所以在这个例子中它是正常的索引而不是逻辑但是点仍然存在,mlint可以为你修复这个非常棒!