How to flip values greater than zero in a row

조회 수: 1 (최근 30일)
Tanmoyee Bhattacharya
Tanmoyee Bhattacharya 2018년 4월 16일
편집: Stephen23 2018년 4월 16일
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
Stephen23
Stephen23 2018년 4월 16일
@Tanmoyee Bhattacharya: the numbers a not only flipped L-R, but have been translated too. How is the new position determined?

댓글을 달려면 로그인하십시오.

채택된 답변

Birdman
Birdman 2018년 4월 16일

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
Tanmoyee Bhattacharya
Tanmoyee Bhattacharya 2018년 4월 16일
편집: Stephen23 2018년 4월 16일
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?

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Get Started with MATLAB에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by