Remove duplicate 1s from matrix columns
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Suppose I have the following logical matrix,
qq =
3×5 logical array
1 0 1 1 1
1 1 0 1 1
1 0 0 0 1
I'm trying to write a few lines which would allow me to set each column to possess only a single 1 by setting additional 1s to 0. The output should look like the following.
qq =
3×5 logical array
1 0 1 1 1
0 1 0 0 0
0 0 0 0 0
:)
0 comentarios
Respuestas (1)
Image Analyst
el 25 de En. de 2021
Mitchell, try this:
qq = logical([...
1 0 1 1 1
1 1 0 1 1
1 0 0 0 1])
[rows, columns] = size(qq);
for col = 1 : columns
highestOne = find(qq(:, col), 1, 'first');
if ~isempty(highestOne)
qq(highestOne + 1 : end, col) = false;
end
end
qq % Show in command window.
You see:
qq =
3×5 logical array
1 0 1 1 1
1 1 0 1 1
1 0 0 0 1
qq =
3×5 logical array
1 0 1 1 1
0 1 0 0 0
0 0 0 0 0
2 comentarios
Image Analyst
el 25 de En. de 2021
And I gave it to you. Saying qq(:, col) means to get the column vector from the matrix.
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!