Removing repeated in order elements from array?
이전 댓글 표시
I have an array like [ 1 1 1 2 2 3 3 3 1 1 1 2 2 4 4 4 5 5 6]
Is there a method which will produce array [ 1 2 3 1 2 4 5 6] and remove all repeating orderly values but not remove all duplicates?
have tried code below with no luck
for k=length(array):-1:1
if array(k)==array(k+1)
array(k)=[]
end
end
답변 (2개)
No need for a loop (even if you should have replaced length by numel):
data=[ 1 1 1 2 2 3 3 3 1 1 1 2 2 4 4 4 5 5 6];
L=diff(data)==0; % note: this is 1 element shorter that data itself
data(L)=[]
Your approach will work; you just have to start at the second-to-last element instead of the last:
array = [ 1 1 1 2 2 3 3 3 1 1 1 2 2 4 4 4 5 5 6];
for k=length(array)-1:-1:1
if array(k)==array(k+1)
array(k)=[];
end
end
array
Here's another approach:
array = [ 1 1 1 2 2 3 3 3 1 1 1 2 2 4 4 4 5 5 6];
array(diff(array) == 0) = [];
array
댓글 수: 3
Nicholas Kavouris
2022년 3월 30일
Why not ? I get
array = [2]
It's because diff(array) has one element less than array.
array = [2 2 2 2 2 2 2];
for k=length(array)-1:-1:1
if array(k)==array(k+1)
array(k)=[];
end
end
array
array = [2 2 2 2 2 2 2];
array(diff(array) == 0) = [];
array
카테고리
도움말 센터 및 File Exchange에서 Data Type Identification에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!