将矩阵对角线元素排序和排序元素索引的Matlab代码填充到新矩阵中,如下所示?
第一个矩阵表1包含5个名称的标准化值。我需要对这个矩阵执行一些操作,并且必须获得第二个矩阵,如表2所示 表2的对角线元素应该通过给每个值赋予秩(序数值)来获得。这意味着最高的元素被赋予第5个秩,次高的元素被赋予第4个第3个,依此类推将矩阵对角线元素排序和排序元素索引的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
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);