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)
展开
 我来答
loujing
2017-04-16 · TA获得超过1818个赞
知道小有建树答主
回答量:455
采纳率:100%
帮助的人:441万
展开全部
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)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式