我是Matlab的新手,因此这可能是一个非常微不足道的问题,我感谢那些花时间提供帮助的人。我有一个618x2矩阵,在第一列中有值,然后是值的索引(对于这种情况,图像上的圆圈)。例如
46.9810,1
0,2
0,3
0,4
43.1429,5
0,6
0,7 ...
此矩阵称为“Test2”
我有另一个矩阵是1x58矩阵(称为overlapindex)这个矩阵中的值对应于'Test2'矩阵中的索引 例如: 1,3,5,7,35,37,44,49 ...... ....
我需要一个新矩阵(我们称之为NEW),它检查overlapindex中的值是否在'Test2'矩阵中具有非零相关值。例如,这个NEW矩阵将包括[43.1429,5],因为索引既在'Test2'中也在'overlapindex'中,并且'Test2'中的相应值是非零的。
基本上这个'新'矩阵看起来像......
46.9810,1
43.1429,5
依此类推,直到检查完所有索引并生成'NEW'矩阵。
我只需要确保'overlapindex'中的索引对应于'Test2'矩阵中的实际非零值。
请提前帮助并谢谢!
答案 0 :(得分:0)
您的问题可以使用Matlab中的logical indexing来解决:
NEW = Test2(overlapindex(Test2(overlapindex, 1) ~= 0), :)
<强>解释强>
Test2(overlapindex, 1)
:应检查的行(accessing Nonconsecutive Elements)
Test2(overlapindex, 1) ~= 0
:如果条件为真,则检查每个请求的行
overlapindex(Test2(overlapindex, 1) ~= 0)
:匹配行的索引(logical indexing)
请注意,此解决方案仅在overlapindex
仅包含Test2
的现有索引时才有效,但解决方案可以轻松扩展为跳过不存在的索引。