Set same elements in a matrix to zero

16 visualizaciones (últimos 30 días)
WEN SHIN LU
WEN SHIN LU el 25 de Abr. de 2022
Respondida: Matt J el 25 de Abr. de 2022
Hi,
I have a large matrix which has duplicate elements in neighborhood.
For example,
A = [0 0 0 01 1 0 0 0 2 2 2 0 0 0 5 5 5 5 5;
0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 5 0 5 0 5;
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 5 0]
I have to keep just a unique element in an arbitrary position. Could I use loop to solve this problem?
  2 comentarios
Jan
Jan el 25 de Abr. de 2022
What is the wanted output for this example?
WEN SHIN LU
WEN SHIN LU el 25 de Abr. de 2022
sorry didn't explain clearly. The output can be:
A = [0 0 0 01 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
I want to keep just one repeated element in its neighborhood.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 25 de Abr. de 2022
Without the Image Processing Toolbox,
A = [0 0 0 0 1 1 0 0 0 2 2 2 0 0 0 5 5 5 5 5;
0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 5 0 5 0 5;
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 5 0]
A = 3×20
0 0 0 0 1 1 0 0 0 2 2 2 0 0 0 5 5 5 5 5 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 5 0 5 0 5 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 5 0
[I,J,S]=find(A);
IJS=num2cell(splitapply(@(x) x(1,:), [I,J,S],findgroups(S)),1);
[I,J,S]=deal(IJS{:});
B=accumarray([I,J],S,size(A))
B = 3×20
0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 5 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Más respuestas (1)

Matt J
Matt J el 25 de Abr. de 2022
Editada: Matt J el 25 de Abr. de 2022
Something like this, perhaps?
A = [0 0 0 0 1 1 0 0 0 2 2 2 0 0 0 5 5 5 5 5;
0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 5 0 5 0 5;
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 5 0]
A = 3×20
0 0 0 0 1 1 0 0 0 2 2 2 0 0 0 5 5 5 5 5 0 0 0 1 1 0 0 0 0 0 2 2 0 0 0 5 0 5 0 5 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 5 0
reg=regionprops(A~=0,'PixelIdxList');
B=zeros(size(A));
for i=1:numel(reg),
j=reg(i).PixelIdxList(1);
B(j)=A(j);
end
B
B = 3×20
0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 5 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by