MATLAB对于矩阵对角线置零、对角线置inf或NaN、对角线置任意数值的方法讨论
对于小白的我来说,经常不知道在MATLAB里面怎么吧矩阵对角线置零,哎,所以不得不记录一下。
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 end end