Matlab:在单元格中查找所选行中特定值的范围

时间:2016-06-21 10:39:25

标签: matlab

在matlab中我有矩阵:

x = [1 2 3 4 5 6 7 8 9 10;
     1 4 5 7 2 1 5 0 2 6;
     1 1 1 2 2 3 3 3 4 5]

我想在第3行中找到包含1,2,3,4,5的起始和结束单元格

例如ones=1:3twos=4:5', 'threes=5:8', 'fours=9:9fives=10:10。有没有办法找到这个?

2 个答案:

答案 0 :(得分:1)

您还可以使用unique记录第一个/最后一个匹配项的索引来节省一些字节和处理时间:

[C,ia,~] = unique(x(3,:),'first')

C =

 1     2     3     4     5


ia =

 1     4     6     9    10

ia为您提供了起始索引。

 [C,ib,~] = unique(x(3,:),'last')

C =

 1     2     3     4     5


ib =

 3     5     8     9    10

和ib给你结束索引。

C为您提供了向量中的唯一数字,将这些数字合并在一起,您几乎就像一张表:

 [C;ia;ib]

>> ans =

 1     2     3     4     5
 1     4     6     9    10
 3     5     8     9    10

所以它读取的是1:3,twos = 4:5,三分......

答案 1 :(得分:0)

让我们假设你的第3栏A = x{i}(3,:)

A = [1     1     1     2     2     3     3     3     4     5]

你可以简单地使用

[unique(A);find(diff([0 A]));find(diff([A 0]))]

ans =

     1     2     3     4     5
     1     4     6     9    10
     3     5     8     9    10

它将为您提供第二和第三行中每个索引的起点和终点