MATLAB中找出全为0的行,并删除。写的代码如下,可是总是说索引超出限
MATLAB中找出全为0的行,并删除。写的代码如下,可是总是说索引超出限度。。。。救命啊A=[0,0,0;0,0,0;1,2,3;0,2,3];a=size(A,1);f...
MATLAB中找出全为0的行,并删除。写的代码如下,可是总是说索引超出限度。。。。救命啊
A=[0,0,0;0,0,0;1,2,3;0,2,3];
a=size(A,1);
for i=1:4
b=any(A(i,:))
if b==0
A(i,:)=[];
else
end
end
disp(A) 展开
A=[0,0,0;0,0,0;1,2,3;0,2,3];
a=size(A,1);
for i=1:4
b=any(A(i,:))
if b==0
A(i,:)=[];
else
end
end
disp(A) 展开
1个回答
展开全部
A=[0,0,0;0,0,0;1,2,3;0,2,3];
B = [];
for i = 1:size(A,1)
b = any(A(i,:));
if b==0
B(end+1) = i;
end
end
A(B,:) = [];
disp(A)
你的代码问题在于循环过程中使用了A(i,:)=[]将全为0的行删除,这样会导致下一次循环时,A的行数已经减小了,但循环变量i仍然要访问到初始的size(A,1)行,故访问超界。
修改的代码如上,用B暂时记录下行号,循环结束后统一删除。
更简单的代码如下, 可以一句话实现。
A=[0,0,0;0,0,0;1,2,3;0,2,3];
A(~any(A,2),:) = [];
disp(A)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询