How to flip values greater than zero in a row

1 visualización (últimos 30 días)
Tanmoyee Bhattacharya
Tanmoyee Bhattacharya el 16 de Abr. de 2018
Editada: Stephen23 el 16 de Abr. de 2018
If I have a row in matrix like that
0 0 0 0 1 2 3 0 0 0
I want to make it like that
0 0 0 0 0 0 3 2 1 0
If it is possible to do?
  1 comentario
Stephen23
Stephen23 el 16 de Abr. de 2018
@Tanmoyee Bhattacharya: the numbers a not only flipped L-R, but have been translated too. How is the new position determined?

Iniciar sesión para comentar.

Respuesta aceptada

Birdman
Birdman el 16 de Abr. de 2018

Try this:

A=[0 0 0 0 1 2 3 0 0 0]
idx=find(A~=0);
A(idx+nnz(A)-1)=fliplr(A(idx));
A(idx(1:end-1))=0
  1 comentario
Tanmoyee Bhattacharya
Tanmoyee Bhattacharya el 16 de Abr. de 2018
Editada: Stephen23 el 16 de Abr. de 2018
Thank you so much sir.It is very much useful. It is working for one row perfectly.I have multiple rows Two are
A=[0 0 0 0 0 0.105037027 0.894962973 0 0 0
;0 0 0 0 0 0 0.990679262 0.009320738 0 0
];
It should be like
0
0 0 0 0 0 0.894962973 0.105037027 0 0
0 0 0 0 0 0 0 0.009320738 0.990679262 0
But the result is coming
0 0 0 0 0 0 0 0 0.990679262000000 0.00932073800000000
0 0 0 0 0 0 0 0.894962973000000 0 0
For many rows how to change the code?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Get Started with MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by