我有以下向量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
的唯一元素,而我想要的是删除"重复" ...我该怎么做?
答案 0 :(得分:4)
它看起来像一个游程编码问题(检查here)。您可以修改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)
返回一个长度数组(length(a)-1),我们想在开头添加一个值(即a(1)
)以获得与{的大小相同的向量{1}}。这里我们减去1,这样,正如@surgical_tubing所提到的,命令a
有效地找到它,因为它查找非零元素,所以我们要确保该值不为零。
因此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
找到的位置将{1}}索引回a
:
find
并输出:
newa=a(F)