How to delete nonzero values at the end of a matrix
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Mister Finance
il 13 Ago 2021
Commentato: Mister Finance
il 13 Ago 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 Commenti
Risposta accettata
Chunru
il 13 Ago 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]
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!