需要删除重复的相邻元素数组中

33视图(30天)
我需要把
[1 1 1 1 2 2 2 6 6 6 6 2 2 2 2]到[1 2 6 2]
独特的()给(1 2 6),但我想保留第二个值
任何建议吗?

接受的答案

明星黾
明星黾 2015年5月15日
利用“逻辑索引”,这是相对简单的:
一个= [1 1 1 1 2 2 2 6 6 6 6 2 2 2 2);
B = (diff ([0]) ~ = 0);
代码(从寻找变化的差异 diff 函数) “一个” ,然后发现的元素 “一个” 对应于这些变化。
5个评论
布鲁诺陈德良
布鲁诺陈德良 2020年11月21日
编辑:布鲁诺陈德良 2020年11月21日
不,还是有缺陷的
> > = 1 e20
一个=
1.0000 e + 20
> > B = (diff ([(1) 1、]) ~ = 0)
B =
[]
> > = uint8 (0)
一个=
uint8
0
> > B = (diff ([(1) 1、]) ~ = 0)
B =
0×0空uint8矩阵
更好的
B =((真正的差异(一)~ = 0))
仍然它工作如果是空的。
通过公布答案 迈克尔Cappello 在评论仍然是更好的。

登录置评。

更多的答案(2)

郑宇硕
郑宇硕 2015年5月15日
编辑:郑宇硕 2015年5月15日
您可以使用diff来确定连续相同的值
测试= [1 1 1 1 2 2 2 6 6 6 6 2 2 2 2)
太=(测试测试(结束)1);
difftest = diff(太)
输出测试(difftest ~ = 0) =
太是修改后的测试号码的最后一个值不一样的。如果你看看difftest你看到我们得到的输出从一个数字的位置转换到另一个。

图像分析
图像分析 2015年5月15日
这里有一个方法:
m = [1 1 1 1 2 2 2 6 6 6 6 2 2 2 2]
logicalIndexes = [0, diff (m)] ~ = 0
输出= [m (1), m (logicalIndexes)]

类别

找到更多的在循环和条件语句帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!