Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 删除相邻的重复术语_Matlab_Vector_Duplicates_Unique - Fatal编程技术网

Matlab 删除相邻的重复术语

Matlab 删除相邻的重复术语,matlab,vector,duplicates,unique,Matlab,Vector,Duplicates,Unique,我有以下向量a: a=[8,8,9,9,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8] 从a中,我想删除所有“相邻”重复,以获得: b=[8,9,1,2,3,4,5,6,7,8] 然而,当我这样做时: unique(a,'stable') ans = 8 9 1 2 3 4 5 6 7 你看,unique只真正获得a的唯一元素,而我想要的是删除“重复项”。。。如何执行此操作?看起来像是运行长度编

我有以下向量
a

a=[8,8,9,9,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]
a
中,我想删除所有“相邻”重复,以获得:

b=[8,9,1,2,3,4,5,6,7,8]
然而,当我这样做时:

unique(a,'stable')

ans =

     8     9     1     2     3     4     5     6     7

你看,
unique
只真正获得
a
的唯一元素,而我想要的是删除“重复项”。。。如何执行此操作?

看起来像是运行长度编码问题(检查)。您可以修改Mohsen的解决方案以获得所需的输出。(也就是说,我不主张该代码的信用,但我认为该问题不是重复的)

代码如下:

a =[8,8,9,9,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]

F=find(diff([a(1)-1, a]));
由于
diff(a)
返回一个长度(长度(a)-1)的数组,我们希望在开始处添加一个值(即
a(1)
),以获得与
a
大小相同的向量。这里我们减去1,因此,正如@surgical_tube所提到的,命令
find
有效地找到它,因为它查找非零元素,所以我们希望确保该值为非零

因此
diff([a(1)-1,a])
看起来是这样的:

  Columns 1 through 8

     1     0     1     0    -8     0     1     0

  Columns 9 through 16

     1     0     1     0     1     0     1     0

  Columns 17 through 20

     1     0     1     0
现在已经找到了重复的元素,我们用
find
找到的位置索引回到
a

newa=a(F)
和输出:

newa =

  Columns 1 through 8

     8     9     1     2     3     4     5     6

  Columns 9 through 10

     7     8

看起来很棒,我想问一下,当你附加
a(1)-1
时,是否有任何特别的理由使用-1?我知道这是允许录制第一个元素。关于-1没有什么特别的。它只需要不是
a(1)
的任何值就可以让diff找到它。那么答案对您有帮助吗?是的,很抱歉没有标记为已回答。当然,我想知道它是否有帮助,谢谢:)