Azzera filtri
Azzera filtri

How to flip values greater than zero in a row

2 visualizzazioni (ultimi 30 giorni)
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 Commento
Stephen23
Stephen23 il 16 Apr 2018
@Tanmoyee Bhattacharya: the numbers a not only flipped L-R, but have been translated too. How is the new position determined?

Accedi per commentare.

Risposta accettata

Birdman
Birdman il 16 Apr 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 Commento
Tanmoyee Bhattacharya
Tanmoyee Bhattacharya il 16 Apr 2018
Modificato: Stephen23 il 16 Apr 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?

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Argument Definitions in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by