Removing zeros from matrix
Afficher commentaires plus anciens
Hi,
Been trying to remove these zeros using NaN and find etc. but to no avail.
Trying to remove zeros so that I can pull out the end (non-zero) values from each row and put into a new n:1 matrix. If there is also a way of doing this without nessisarily having to remove the zeros then that would be fine also.
Example matrix (mine is a lot larger but follows similar format with zeros being at the end of the rows):
A = [1 2 3 4 5 6; 1 2 3 4 5 6; 1 2 3 4 5 0; 1 2 3 4 0 0; 1 2 3 0 0 0]
Thanks in advance.
Edit:
The final desired output would be:
B = [6; 6; 5; 4; 3]
Réponse acceptée
Plus de réponses (2)
Like this?
A = [1 2 3 4 5 6; 1 2 3 4 5 6; 1 2 3 4 5 0; 1 2 3 4 0 0; 1 2 3 0 0 0];
B = A'; B=B(:);
B(B==0)=[]
3 commentaires
Robert Bridges
le 7 Déc 2021
Every row must have the same number of elements, so this is not a valid matrix:
B = [1 2 3 4 5 6; 1 2 3 4 5 6; 1 2 3 4 5; 1 2 3 4; 1 2 3]
Would you like to replace the zeros with NaNs instead?
Robert Bridges
le 7 Déc 2021
What is the wanted output?
A = [1 2 3 4 5 6; 1 2 3 4 5 6; 1 2 3 4 5 0; 1 2 3 4 0 0; 1 2 3 0 0 0];
B1 = A;
B1(B1 == 0) = NaN
B2 = A(A~=0)
I'm not sure what this means: "pull out the end (non-zero) values from each row and put into a new n:1 matrix"
Maybe:
B = cell(height(A), 1);
for k = 1:height(A)
B{k} = A(k, A(k, :) ~= 0);
end
Catégories
En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!