独特的价值观为每一个序列

5视图(30天)
阿丽亚娜莫拉
阿丽亚娜莫拉 2021年9月26日
评论道: 图像分析 2021年9月26日
你好,
我想找到每个序列的惟一值。例如,考虑向量:
x = [1 1 1 1 2 2 1 1 1 2 3 3 3];
输出(惟一的值):
y = [1 2 1 3 2];
我怎样才能实现呢?

接受的答案

图像分析
图像分析 2021年9月26日
这里有一个方法:
x = [1 1 1 1 2 2 1 1 1 2 3 3 3]
dx = [1, diff (x))
x2 = x (dx ~ = 0)
x2是你想要的输出变量。
x =
1 1 1 1 2 2 1 1 1 2 3 3 3
dx =
1 0 0 0 1 0 1 0 0 2 0 0 1
x2 =
1 2 1 3 2

答案(1)

约翰D 'Errico
约翰D 'Errico 2021年9月26日
编辑:约翰D 'Errico 2021年9月26日
提示:diff给你什么?试一试!
x = [1 1 1 1 2 2 1 1 1 2 3 3 3];
diff (x)
ans = 1×12
0 0 0 1 0 1 0 0 2 0 0 1
会发生什么如果我们尝试找到这个结果吗?试一试!
找到(diff (x))
ans = 1×4
4 6 9 12
这几乎似乎工作,但没有找到第一个元素。发现,该指数为1。嗯。现在试试这个调整。
x(找到(diff (((1) - 1, x))))
ans = 1×5
1 2 1 3 2
正如你所看到的,我创建了一个新的向量,保险,它总会找到向量的第一个元素。
你能算出来吗?嗯,是的。要记住的一件事是函数diff返回零,当连续两个元素都是相同的。所以不能下放是一个很好的工具尝试当你正在寻找改变的东西。
接下来,你觉得有些事情已经改变了在序列?找到会为你这样做,becauuse找到定位非零元素。
之后,你只需要找出如何让它们一起工作,准确地找到你想要的元素。
如果你不了解这是如何工作的,把它分开,开始在中间,然后工作。
2的评论
图像分析
图像分析 2021年9月26日
请为约翰的回答“投票”。尽管它本质上是一样的,他去了额外的麻烦给你彻底的解释,他值得“声誉点”(您可以通过投票来决定)。

登录置评。

类别

找到更多的在创建和连接矩阵帮助中心文件交换

社区寻宝

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

开始狩猎!

翻译的