matlab如何删除矩阵中符合条件的多行全部元素
假如有一个100*7的矩阵,如果某一行第4列或者第5列的元素值为0时,则将这一整行全部删除,最后形成一个新的m*7的矩阵,m小于等于100。该怎么写呢?...
假如有一个100*7的矩阵,如果某一行第4列或者第5列的元素值为0时,则将这一整行全部删除,最后形成一个新的m*7的矩阵,m小于等于100。该怎么写呢?
展开
3个回答
展开全部
用一个表达式即可,设矩阵为A,则用A(all(A(:,[4 5]),2),:)。
示例:
>> A=floor(3*rand(10,5))
A =
1 2 0 1 2
0 1 1 0 2
2 0 2 2 1
2 1 0 0 1
1 0 0 2 1
1 0 0 0 0
1 2 1 1 1
2 2 2 1 1
1 1 1 2 2
0 0 1 0 2
>> A(all(A(:,[4 5]),2),:)
ans =
1 2 0 1 2
2 0 2 2 1
1 0 0 2 1
1 2 1 1 1
2 2 2 1 1
1 1 1 2 2
更多追问追答
追问
all(A(:,[4 5]),2),这个“2”是什么意思呢?
追答
楼猪太搞了吧,已经采纳了别人的回答,还来追问我?我可不可以解释为表示你有点"2”?
我之所以回答,是因为确信自己的方法更好,这能仅仅根据回答的先后顺序来吗?
展开全部
举个例子,思路就是利用逻辑运算,找到符合条件的行,然后新的矩阵只取不满足条件的那几行:
>> a
a =
4 4 2 1 3 1 4
5 4 1 3 0 1 2
4 2 1 0 4 3 3
1 4 5 4 4 5 4
5 1 4 4 2 2 5
5 4 2 1 4 3 5
4 1 5 3 4 2 3
>> index = a( :, 4 ) == 0 | a( :, 5 ) == 0
index =
0
1
1
0
0
0
0
>> b = a( ~index, : )%求逆,就表示第四第五列都不为0的那几行
b =
4 4 2 1 3 1 4
1 4 5 4 4 5 4
5 1 4 4 2 2 5
5 4 2 1 4 3 5
4 1 5 3 4 2 3
>> a
a =
4 4 2 1 3 1 4
5 4 1 3 0 1 2
4 2 1 0 4 3 3
1 4 5 4 4 5 4
5 1 4 4 2 2 5
5 4 2 1 4 3 5
4 1 5 3 4 2 3
>> index = a( :, 4 ) == 0 | a( :, 5 ) == 0
index =
0
1
1
0
0
0
0
>> b = a( ~index, : )%求逆,就表示第四第五列都不为0的那几行
b =
4 4 2 1 3 1 4
1 4 5 4 4 5 4
5 1 4 4 2 2 5
5 4 2 1 4 3 5
4 1 5 3 4 2 3
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上就是那种受知识教育但是没有素养的孩子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询