Код Matlab для сортировки диагональных элементов матрицы и индекса отсортированных элементов заполняется в новую матрицу, как показано ниже?

Эта первая матрица table1 содержит нормализованные значения для 5 имен. Мне нужно выполнить некоторые операции с этой матрицей, и мне нужно получить вторую матрицу, как показано в table2.

Диагональные элементы таблицы 2 должны быть получены путем присвоения ранга (порядкового значения) каждому значению. Это означает, что самый высокий элемент получает 5-й ранг, а следующий самый высокий - 4-й 3-й и т. Д.

   OPERATION:For diagonal elements
   B(1,1)=5(first largest element)
   B(2,2)=1(5th largest element)
   B(3,3)=4(4th largest element)
   B(4,4)=2(2nd largest element)
   B(5,5)=3(3rd largest element)
  Table1:
                   BASAVARAJ      MANOJ   NATESH        VIJAY       GOWDA

  BASAVARAJ      1.0000       0.2727      0.3182       0.0455        0.2727

  MANOJ         0.2727         0.2727        0           0             0

 NATESH         0.3182           0    0.4545       0.1818          0

  VIJAY         0.0455           0    0.1818       0.2727        0.0909

  GOWDA         0.2727           0       0         0.0909        0.3636


 Table2:
                  BASAVARAJ    MANOJ   NATESH   VIJAY   GOWDA


  BASAVARAJ             5          0    0   0   0
    MANOJ               0          1    0   0   0
   NATESH               0          0    4   0   0
   VIJAY                0          0    0   2   0
   GOWDA                0          0    0   0   3

2 ответа

[~, ii] = sort(diag(table1));
[~, jj] = sort(ii);
table2 = diag(jj);

Попробуй это:

da = diag(A); % A is your first matrix
[sda, I] = sort(da);;
for i = 1:length(da)
  B(I(i)) = i;
end
B = diag(B) % B is your second matrix
Другие вопросы по тегам