MATLAB: How to flip values greater than zero in a row

flip

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?

Best Answer

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