Clasificación de valores de matriz en orden ascendente en matlab

Para la matriz dada R = {r (i, j)} a continuación se muestran las 3 operaciones realizadas para la matriz de entrada:

1. Clasificamos los valores diagonales en orden ascendente (es decir, para el valor pequeño se da el rango 1 y para el siguiente valor pequeño rango2 y así sucesivamente)

2. Para cero celda se da rango1.

3. Aparte de la celda diagonal y la celda cero, clasificamos los valores de descanso en orden ascendente. (El número de celdas cero se establecerá como orden de rango inicial, es decir, el rango de celdas cero primero)

Ejemplo principal

Esta es mi matriz de entrada.

0.6667    0.1667    0.1667         0    0.6667
0.1667    0.1667    0.1667         0    0.1667
0.1667    0.1667    0.1667         0    0.1667
     0         0         0         0         0
0.6667    0.1667    0.1667         0    1.0000

la matriz de salida esperada es:

 4     2     3     1     4
 4     3     3     1     2
 4     3     2     1     2
 1     1     1     1     1
 4     3     2     1     5

Pero obtuve esta matriz de salida para mi código:

 4     1     4     0     2
 3     2     4     0     1
 3     4     3     0     1
 0     0     0     0     0
 4     3     2     0     5

Código fuente que probé:

%to display ordinal graph
E = logical(eye(size(table1)));
% create a mask for the two different rules
% rule 1: diagonal elements first
table2 = zeros(size(table1)); % create result matrix
[~,jj] = sort(table1(E));
[~,ii] = sort(jj);
table2(E) = ii; % assign rank of diagonal elements
% rule 2: rest of the matrix
E = ~E;
B = reshape(table1(E),size(table1,1)-1,size(table1,2))'; % B is the matrix of table1 without diagonal elements
[~,jj] = sort(B,2); % sort along column dimension, 
[~,ii] = sort(jj,2);
table2 = table2'; % matlab is column-major, so you have to transpose the dest matrix before putting in the elements
table2(E) = reshape(ii',[],1);
table2 = table2'; % transpose back, done.
% treat zeros apart: 0 has rank 0
table2(table1==0) = 0;
            disp(table2);

Ejemplo 1

Matriz de entrada:

  12  6  6  4  12

  6   6  6  4   6

  6   6  6  4   6

  4   4  4  4   4

  12  6  6  4  16

Matriz de salida esperada:

 4  3  2  1  4
 4  3  2  1  3
 4  3  2  1  2
 4  3  2  1  1
 4  3  2  1  5

Ejemplo 2

Matriz de entrada:

 10   11  0  13  14
 14    9  8  20   7
 20   25  22 18  13
 16    8  9  23  19
 15    0  0  16  21

Matriz de salida esperada:

 2  2  1  3  4
 3  1  2  4  1
 3  4  4  2  1
 3  1  2  5  4
 2  1  1  3  3

Respuestas a la pregunta(1)

Su respuesta a la pregunta