對於小白的我來講,常常不知道在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