2014-04-25 52 views
-4

該第一矩陣表1包含歸一化值5個names.I需要在這個矩陣執行某些操作,我要獲得第二矩陣如圖表2。裝置矩陣的排列對角元素和排序元素的索引的Matlab代碼被填充到如下所示的新矩陣中?

表2的對角元素應該通過給予秩(順序值),以每value.That獲得最高元件被給予第五等級和下一個最高給出第四第三等。

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 
+0

參見http://stackoverflow.com/questions/23234608/matlab-code-for-given-matrix-using-for-loop-by -adding-行和調查最小-v和http://stackoverflow.com/questions/23262264/sorting-matrix-diagonal-wise-and-indexes-are-given-as-rank-using-matlab做了回答給予的幫助?你到目前爲止做了什麼,爲什麼它沒有工作? – David

回答

0

試試這個:

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 
+0

如果你進一步解釋你的答案和你的代碼,對於OP也會更好。 –

+0

我接到了上述code.5 8這個輸出,但我需要5 1 4 2 3 – prash2

+0

這是奇怪的,這非常適用於我的筆記本電腦,請確保您輸入正確的矩陣 – SamuelDSR

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

我得到了正確的輸出優秀的路易斯。 – prash2