How to delete nonzero values at the end of a matrix
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Mister Finance
el 13 de Ag. de 2021
Comentada: Mister Finance
el 13 de Ag. de 2021
Assume I have the following array:
M = [1 1 1; 0 2 2; 3 3 0; 4 4 0; 0 5 0]
How do I set all elements from the end of each row to the first nonzero value to NaN?
The result should look like this:
M = [1 1 1; 0 2 2; 3 3 NaN; 4 4 NaN; NaN 5 NaN]
It is important that only the zero values at the end are set equal to NaN and not all elements that are equal to zero.
Thank you!
0 comentarios
Respuesta aceptada
Chunru
el 13 de Ag. de 2021
M = [1 1 1; 0 2 2; 3 3 0; 4 4 0; 0 5 0]
for i=1:size(M, 2)
idx = find(M(:, i), 1, 'last');
M(idx+1:end, i) = nan;
end
M
%M = [1 1 1; 0 2 2; 3 3 NaN; 4 4 NaN; NaN 5 NaN]
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices 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!