假设我有数据:
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/