MATLAB對於矩陣對角線置零、對角線置inf或NaN、對角線置任意數值的方法討論

對於小白的我來講,常常不知道在MATLAB裏面怎麼吧矩陣對角線置零,哎,因此不得不記錄一下。測試

1.首先生成一組測試矩陣code

A=magic(5);

獲得一個5*5的矩陣:循環

A =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

2.對角線置零di

A=A-diag(diag(A));

獲得以下矩陣:co

A =

     0    24     1     8    15
    23     0     7    14    16
     4     6     0    20    22
    10    12    19     0     3
    11    18    25     2     0

3.對角線置inf
對角線爲正的inf生成

A=A+diag(inf+zeros(1,length(A)))
A =

   Inf    24     1     8    15
    23   Inf     7    14    16
     4     6   Inf    20    22
    10    12    19   Inf     3
    11    18    25     2   Inf

對角線爲負的inf

A=A-diag(inf+zeros(1,length(A)))
A =

  -Inf    24     1     8    15
    23  -Inf     7    14    16
     4     6  -Inf    20    22
    10    12    19  -Inf     3
    11    18    25     2  -Inf

4.對角線置NaN

A=A+diag(NaN+zeros(1,length(A)))

或者是

A=A+diag(inf+zeros(1,length(A)))-diag(inf+zeros(1,length(A)))

均可以使得對角線爲NaN

A =

   NaN    24     1     8    15
    23   NaN     7    14    16
     4     6   NaN    20    22
    10    12    19   NaN     3
    11    18    25     2   NaN

5.對角線爲任意數值,這個目前好像只能是雙循環解決了

即i=j的時候就是對角線,x是咱們想要賦值的任意值

for i=1:length(A)
    for j=1:length(A)
        if i==j
            A=x;
        end
    end
end
相關文章
相關標籤/搜索