How to delete elements in array efficiently
17 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuesta aceptada
Azzi Abdelmalek
el 25 de Ag. de 2013
Vector=[1 2 4 5 66 88 100 101]
id=find([0 diff(Vector)]==1)-1
Vector(id)=[]
0 comentarios
Más respuestas (2)
dpb
el 25 de Ag. de 2013
Editada: dpb
el 25 de Ag. de 2013
When doing such in loops, start at end and work to beginning -- then the indices of those removed are above where you're headed next.
But, in Matlab use vector operations and supplied functions to do such things...
v([false diff(v)==1])=[];
0 comentarios
Azzi Abdelmalek
el 25 de Ag. de 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
Ver también
Categorías
Más información sobre Matrices and Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!