Код 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