将矩阵对角线元素排序和排序元素索引的Matlab代码填充到新矩阵中,如下所示?

将矩阵对角线元素排序和排序元素索引的Matlab代码填充到新矩阵中,如下所示?,matlab,matrix,normalize,ordinal,Matlab,Matrix,Normalize,Ordinal,第一个矩阵表1包含5个名称的标准化值。我需要对这个矩阵执行一些操作,并且必须获得第二个矩阵,如表2所示 表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 elemen

第一个矩阵表1包含5个名称的标准化值。我需要对这个矩阵执行一些操作,并且必须获得第二个矩阵,如表2所示

表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
试试这个:

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

请参见,答案是否有帮助?到目前为止,你尝试了什么,为什么不起作用?如果你进一步解释你的答案以及你的代码,对OP也会更好。我从上面的代码中得到了这个输出。5 6 10 6 8但我需要5 1 4 2 3这很奇怪,这在我的笔记本电脑上运行良好,请确保你输入了正确的矩阵
[~, ii] = sort(diag(table1));
[~, jj] = sort(ii);
table2 = diag(jj);