matlab 如何去掉矩阵中的全0行

如:a=[123;000;216];将其中间的000行去掉,输出a=[123;216]以上的例子我只是举得二维矩阵为例,那么如果是在三维或多维的情况下,且如a(:,:,k... 如:a=[1 2 3;0 0 0;2 1 6];
将其中间的0 0 0行去掉,输出a=[1 2 3;2 1 6]
以上的例子我只是举得二维矩阵为例,那么如果是在三维或多维的情况下,且如a(:,:,k)中,k不同,矩阵中的非零行个数也不同,这时要去掉全0行又要用什么办法呢?
展开
 我来答
小小小小颦
高粉答主

2020-05-13 · 关注我不会让你失望
知道小有建树答主
回答量:3124
采纳率:100%
帮助的人:54万
展开全部

具体操作步骤如下:

1、首先,来了解下以下两个函数,可以使用这两个函数来进行删除所有零行或全部列的操作。如下图所示,然后进入下一步。

2、其次,创建一个a  = [1,2,4; 0,0,0; 1,3,5;  [0,0,0]矩阵,可以看到此矩阵中有两行是全0行,如下图所示,然后进入下一步。

3、接着,键入all(a  == 0,2),这将返回一个列向量,并且可以检测所有零行的位置,因为使用了a =  0,所以返回的是0表示非零元素,返回1表示所有零行,如下图所示,然后进入下一步。

4、然后,键入以下代码:a(all(a  == 0,2),:) = [],来删除所有0行,如下图所示,然后进入下一步。

5、最后,按Enter确认,可以看到矩阵的两行全0行就被删除了,如下图所示。这样,问题就解决了。

小执着12138
2019-09-25 · TA获得超过1.2万个赞
知道答主
回答量:404
采纳率:53%
帮助的人:10.9万
展开全部

1、第一步删除全零行之前,首先要了解一下all函数和any函数的用法,可以通过这两个函数来删除全零行或者列,介绍如下图所示:

2、第二步在matlab命令行窗口中新建一个a=[1,2,4;0,0,0;1,3,5;0,0,0]矩阵,可以看到这个矩阵中有两行为全零行,下面来删除这两行,如下图所示:

3、第三步删除全零行,主要通过all(a==0, 2),这返回的是一个列向量,可以检测到全零行的位置,因为使用了a=0,返回的为0代表是非零元素,返回的为1代表是全零行,如下图所示:

4、第四步使用a(all(a==0,2),:)=[]代码来删除全零行,如下图所示:

5、第五步按回车键之后,可以看到已经删除了a矩阵的2行全零行,如下图所示:

6、第六步需要注意的是,如果直接使用a(all(a,2),:)=[]来删除,删除的是非零行,留下的是全零行,如下图所示:

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e2a70a1
2010-04-27 · TA获得超过113个赞
知道答主
回答量:26
采纳率:0%
帮助的人:26.1万
展开全部
楼上的办法适用于去掉指定的某一行(列),当矩阵较大,不能一一枚举全零行(列)时用这个办法比较简单
a=[1 2 3;0 0 0;2 1 6];
a(find(sum(abs(a),1)==0),:)=[];

如果要除去全零列就用下面这个
a(:,find(sum(abs(a),1)==0))=[];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
greatdju
推荐于2017-11-23 · TA获得超过2.2万个赞
知道大有可为答主
回答量:2486
采纳率:50%
帮助的人:4192万
展开全部
a=[1 2 3;0 0 0;2 1 6];
a(all(a==0,2),:)=[]

____________________
如果是3维矩阵那就必须是某个面(整个2维矩阵)全部都是0,如果单一行是0,这个面的其他元素不为0,怎么能去掉呢,因为一删就是删一个面啊。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清风or朗月
2010-04-27 · TA获得超过1089个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:329万
展开全部
输入a(2,:)=[]
就可以了,直接去掉
去掉的也可以不是全0行,只要是你指定的,你都可以通过此方法去掉特定的行!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式