matlab - 保持顺序和重复的独特功能的模拟 (MATLAB)

标签 matlab

假设我有数据: x = [3,3,1,1,1,2,2,1,1,1,1]
我想要输出:
y = [3,1,2,1]
使用 unique() 函数我可以获得:
z = [3,1,2]

但是如您所见,我最后漏掉了“一”。 所以,我试着写一个循环,但没有做我认为它应该做的事情。 我原以为它会删除其中一个重复的值,而循环应该确保只保留一个值。然而,输出是:
x=[3,3,1,1,2,1,1]
循环:
对于 i=1:length(x)
如果 x(i)==x(i+1)
x(i)=[];
结束;
结束;
有没有办法像y一样生成输出?我的循环中的错误在哪里?

最佳答案

如果您更喜欢无循环方法 -

y = x([1 diff(x)~=0]==1)

或者

y = x([1 abs(diff(x))]>0)

或者

y = x([1 diff(x)]~=0)

关于matlab - 保持顺序和重复的独特功能的模拟 (MATLAB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25627519/

相关文章:

Haar特征提取的matlab实现

Matlab MCR 程序错误损坏终端

matlab - 是否可以在 mex 代码中使用 matlab 表?

matlab - 在 MATLAB 中重新打开图窗文件后更改条形图的颜色

matlab - 如何在 Matlab 中将数据从 1 x 1 双时间序列复制到一维查找表

Matlab:在循环中绘制带有保持和保持关闭的子图,而不总是调用 xlabel、ylabel、xlim 等

MATLAB:制作行移位的矩阵

r - 如何找到采样值的索引?

matlab - 为什么 MATLAB surf 函数不能处理单精度数据?

performance - 如何在 Matlab 中进行高效的 k 最近邻计算