Non Zero element appear first with keeping the same size of the matrix?

1 vue (au cours des 30 derniers jours)
A = [1 0 2 3;2 0 0 5; 3 0 0 1; 0 0 1 5];
How The matrix will be transformed like this (No-zero element will come first, row wise)
A = [1 2 3 0; 2 5 0 0; 3 1 0 0; 1 5 0 0]

Réponse acceptée

JESUS DAVID ARIZA ROYETH
JESUS DAVID ARIZA ROYETH le 5 Nov 2019
solution :
A = [1 0 2 3;2 0 0 5; 3 0 0 1; 0 0 1 5];
A(A==0)=nan;
A=sort(A,2);
A(isnan(A))=0;
disp(A)
  2 commentaires
Richard Brown
Richard Brown le 5 Nov 2019
This doesn't reproduce the example of the OP - it sorts the rows
Rubel Ahmed
Rubel Ahmed le 5 Nov 2019
Thanks David,It works

Connectez-vous pour commenter.

Plus de réponses (1)

Richard Brown
Richard Brown le 5 Nov 2019
here's a really naive way to do it:
[m, n] = size(A);
for i = 1:m
k = find(A(i, :))
A(i, :) = [A(i, k), zeros(1, n - numel(k))]
end
I'm sure there's a more fancy vectorised method, but this will do the job.
  2 commentaires
Richard Brown
Richard Brown le 5 Nov 2019
(note this method retains the order of the elements in each row)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Dates and Time dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by