删除相邻的重复项
Delete adjacent repeated terms
我有以下向量 a
:
a=[8,8,9,9,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]
来自 a
我想删除所有 "adjacent" 重复以获得:
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
的 unique 元素,而我想要的是删除 "duplicates"。 .. 我该怎么做?
看起来像是 运行 长度编码问题(检查 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)
returns是一个长度为(length(a)-1)的数组,我们想在开头(即a(1)
)处加一个值得到a矢量大小与 a
相同。这里我们减去 1,这样,正如@surgical_tubing 所提到的,命令 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
:
a=[8,8,9,9,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]
来自 a
我想删除所有 "adjacent" 重复以获得:
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
的 unique 元素,而我想要的是删除 "duplicates"。 .. 我该怎么做?
看起来像是 运行 长度编码问题(检查 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)
returns是一个长度为(length(a)-1)的数组,我们想在开头(即a(1)
)处加一个值得到a矢量大小与 a
相同。这里我们减去 1,这样,正如@surgical_tubing 所提到的,命令 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