2017-04-03 42 views
0

我是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),检查'index2'矩阵中overlapindex中的值是否具有非零相关值。例如,这个NEW矩阵将包含[43.1429,5],因为索引既在'Test2'也在'overlapindex'中,并且'Test2'中的相应值不为零。

所以基本上这个“新”矩阵会是什么样子......

46.9810,1

43.1429,5

,以此类推,直到所有的索引进行检查和“新”矩阵被制成。

我只需要确保'overlapindex'中的索引对应'Test2'矩阵中的实际非零值。

请帮助,并提前谢谢!

+0

所以你想要第一个矩阵的第一列非零,第二列出现在'Test2'中? – Suever

回答

0

您的问题可以用logical indexing来解决在Matlab:如果条件是检查每个请求的行:

NEW = Test2(overlapindex(Test2(overlapindex, 1) ~= 0), :) 

说明

Test2(overlapindex, 1):应检查(accessing Nonconsecutive ElementsTest2(overlapindex, 1) ~= 0行true :匹配行的索引(logical indexing

请注意,此解决方案仅适用于overlapindex仅包含现有索引Test2,但解决方案可以轻松扩展以跳过不存在的索引。