Cutting a certain pattern from an array
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
beatlewalrus
el 23 de Sept. de 2015
Comentada: Stephen23
el 24 de Sept. de 2015
Hello everyone!
I have a simple question regarding deleting certain pattern from array. For example I have a random array
A=[1 2 3 4 5 6 0 0 0 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 ...]
I want to delete all fragments, built of four zeroes. So cut away all B=[0 0 0 0] from a 1d array.
How can I implement it?
0 comentarios
Respuesta aceptada
C.J. Harris
el 23 de Sept. de 2015
A = [1 2 3 4 5 6 0 0 0 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0];
B = [0 0 0 0];
C = A(setxor(cell2mat(arrayfun(@(x)(x:x+length(B)-1),strfind(A,B), 'UniformOutput', false)), 1:length(A)));
2 comentarios
Más respuestas (1)
Stephen23
el 23 de Sept. de 2015
Editada: Stephen23
el 23 de Sept. de 2015
>> A = [1,2,3,4,5,6,0,0,0,0,1,2,3,4,5,6,7,8,9,10,0,0,0,0];
>> B = [0,0,0,0];
>> +strrep(char(A),char(B),'')
ans =
1 2 3 4 5 6 1 2 3 4 5 6 7 8 9 10
2 comentarios
Walter Roberson
el 24 de Sept. de 2015
Hee, cute.
Works fine for non-negative integers up to 65535 but not in general.
Stephen23
el 24 de Sept. de 2015
True. It is also more than 100x faster than the accepted solution :)
Ver también
Categorías
Más información sobre Logical 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!