# MATLAB: Sort Matrix Array and skip zeros.

matrix arraysort

I have an array as this:
   Array1 = [1  2   3  4   0  0;                   1  2   3  0   0  0;                 1  0   0  0   0  0;                   1  2   0  0   0  0];
Array1 is sorted and is fine as it is. But lets say I type in a mistake like this:
   Array2 = [2  1  3  4  0   0;                   1  2  3  0  0   0;                 1  0  0  0  0   0;                   1  2  0  0  0   0];
Now coulomb 1 in Array2 is not sorted and I would like to sort it. But when I try to sort it with the function sort(Array2(1,:)) the zeros (0) will be listed first. Its easy to understand why it does this because 0 is smaller then 1,2,3,4, etc. It will then look like:
   Array2 = [0  0  1  2  3   4;                   1  2  3  0  0   0;                 1  0  0  0  0   0;                   1  2  0  0  0   0];
But I would like the array to look like Array1:
   Array2 = [1  2  3  4  0   0;                   1  2  3  0  0   0;                 1  0  0  0  0   0;                   1  2  0  0  0   0]
How is this possible? Can I somehow sort an array and skip the zeros?
• Array1( Array1 == 0 ) = NaN; Array2 = sort( Array1, 2 ); Array2( isnan( Array2 ) ) = 0;