对于小白的我来讲,常常不知道在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