MATLAB-去除已知矩阵中的行列

已知矩阵m,2001*2001,第一行第一列均为[0:2000],余子阵元素为0或1。
余子阵中若第i行第i列都是0,则从m中除去第i行第i列。求剩余的方阵。
以6阶为例:m=
0 1 2 3 4 5
1 0 1 0 0 0
2 0 0 0 0 0
3 0 0 0 0 1
4 0 0 0 0 0
5 0 0 0 0 0
则所求矩阵为
0 1 2 3 5
1 0 1 0 0
2 0 0 0 0
3 0 0 0 1
5 0 0 0 0
要求有详细程序。

第1个回答  2009-09-15
m=[0,1,2,3,4,5;1,0,1,0,0,0;2,0,0,0,0,0;3,0,0,0,0,1;4,0,0,0,0,0;5,0,0,0,0,0];
n=m';for i=2:6
if m(i,[2:6])==0 & n(i,[2:6])==0
m(i,:)=[];m(:,i)=[];
end
end
>> m

m =

0 1 2 3 5
1 0 1 0 0
2 0 0 0 0
3 0 0 0 1
5 0 0 0 0
第2个回答  2009-09-15
% given m
n = size(m);
ind = ones(n, 1);
for i = 2 : n
if norm(m(i, 2 : n)) == 0 && norm(m(2 : n, i)) == 0
ind(i) = 0;
end
end
% output
m(find(ind), find(ind))本回答被提问者采纳
相似回答