打印

(转)对于矩阵对角线置零、对角线置inf或NaN、对角线置任...

[复制链接]
647|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cooldog123pp|  楼主 | 2019-2-25 10:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.首先生成一组测试矩阵
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.对角线置零
A=A-diag(diag(A));
得到如下矩阵:
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    endend








相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1839

主题

6415

帖子

30

粉丝