比如图片
去掉2、3两行
如果你是想手动删除,那么假设你的矩阵名是A,那么输入
A(3,:)=[];
A(2,:)=[];
如果你是想自动删除,那么
A=[1,6,9,0,0,0,0;2,4,6,9,1,0,0;1,6,9,0,0,0,0;2,4,6,9,0,0,0];
[r,c]=size(A);
m=0;
for i = 1:r
t=0;
for j=1:c
if A(i,j)~=0
t = t + 1;
end
end
row(i)=t;
if t>m
m=t;
end
end
for i=r:-1:1
if row(i)==m
A(i,:)=[];
end
end
大于3都删除的版本
A=[1,6,9,0,0,0,0;2,4,6,9,1,0,0;1,6,9,0,0,0,0;2,4,6,9,0,0,0];
[r,c]=size(A);
m=3; %如果大于3
for i = 1:r
t=0;
for j=1:c
if A(i,j)~=0
t = t + 1;
end
end
row(i)=t;
end
for i=r:-1:1
if row(i)>m
A(i,:)=[];
end
end
A = [1 6 9 0 0 0 0 0
2 4 5 6 0 0 0 0
1 2 3 4 0 0 0 0
1 0 0 0 0 0 0 0
1 6 3 0 0 0 0 0
1 2 3 5 0 0 0 0 ];
n0 = sum(A ~= 0,2); % 每一行的0元素个数
[nmax,ind] = max(n0); % 找到0元素最多的行,下标为ind
B = A([1:ind-1 ind+1:end],:); % 去除非0元素最多的行
n0 = sum(B ~= 0,2);
[nmax2,ind] = max(n0); % 找到0元素最多的行,下标为ind
while nmax2 == nmax % 循环去除非零元素与第一行同样多的行
B = B([1:ind-1 ind+1:end],:);
n0 = sum(B ~= 0,2);
[nmax2,ind] = max(n0); % 找到0元素最多的行,下标为ind
end
B % 显示结果
结果:
B =
1 6 9 0 0 0 0 0
1 0 0 0 0 0 0 0
1 6 3 0 0 0 0 0
A=[1,6,9,0,0,0,0,0,0;
2,4,6,9,0,0,0,0,0;
2,5,7,9,0,0,0,0,0;
2,5,8,0,0,0,0,0,0;
3,7,9,0,0,0,0,0,0;
3,8,0,0,0,0,0,0,0];
B1=A(sum(A~=0,2)~=max(sum(A~=0,2)),:) %去除排名最多后矩阵
B2=A(sum(A~=0,2)<=3,:) %去除>3后矩阵