创建一个新矩阵,其值显示在两个单独的矩阵中

时间:2017-04-03 19:12:43

标签: arrays matlab sorting matrix

我是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'矩阵中的实际非零值。

请提前帮助并谢谢!

1 个答案:

答案 0 :(得分:0)

您的问题可以使用Matlab中的logical indexing来解决:

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

<强>解释

Test2(overlapindex, 1):应检查的行(accessing Nonconsecutive ElementsTest2(overlapindex, 1) ~= 0:如果条件为真,则检查每个请求的行 overlapindex(Test2(overlapindex, 1) ~= 0):匹配行的索引(logical indexing

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