How to delete elements in array efficiently
17 views (last 30 days)
Show older comments
Hi all,
I'm writing a simple script in Matlab where I compare adjacent element and delete one of them if there difference between them is one.
for i=1:length(Vector) - 1
if Vector(i+1) - Vector(i) == 1
Vector(i) = [];
end
if i == length(Vector)
break
end
However, I'm getting an error that my indices are out of bound. Is there a simpler way of doing this by utilizing internal functions. I think my problem is that my array is constantly decreasing and the Vector(i+1) - Vector(i) are out of bounds.
0 Comments
Accepted Answer
Azzi Abdelmalek
on 25 Aug 2013
Vector=[1 2 4 5 66 88 100 101]
id=find([0 diff(Vector)]==1)-1
Vector(id)=[]
0 Comments
More Answers (2)
Azzi Abdelmalek
on 25 Aug 2013
You can also do it with while loop
Vector=[1 2 3 4 5 66 88 100 101 14]
i=1;
while i<numel(Vector)
if Vector(i+1) - Vector(i) == 1
Vector(i) = [];
i=i-1;
end
i=i+1
end
Vector
See Also
Categories
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!