找回密码
 注册
Simdroid-非首页
查看: 301|回复: 11

【讨论】快速删除矩阵中含0的行。

[复制链接]
发表于 2006-12-1 10:20:21 | 显示全部楼层 |阅读模式 来自 北京海淀
如题!
分两种情况,一种是某行只要含有0就去除,另一种是全部为0才去除。
欢迎大家踊跃发言,看看有多少种方法。
 楼主| 发表于 2006-12-1 15:13:38 | 显示全部楼层 来自 北京海淀
Simdroid开发平台
比较容易想到的方法是用循环实现,利用any all等函数性质,但是这样比较麻烦。
有更好的方法。
发表于 2006-12-1 15:28:56 | 显示全部楼层 来自 北京
原帖由 rocwoods 于 2006-12-1 15:13 发表
比较容易想到的方法是用循环实现,利用any all等函数性质,但是这样比较麻烦。
有更好的方法。



第一种:A(any(~logical(A),2),:)=[];
第二种:A(all(~logical(A),2),:)=[];

评分

1

查看全部评分

 楼主| 发表于 2006-12-1 15:51:58 | 显示全部楼层 来自 北京海淀
我想的一种方法没有用all和any
前一种情况:
a1=a(sum(~a,2)==0,:)
后一种情况:
a2=a(sum(~a,2)<n,:) (n为矩阵列数)

eight兄的方法可以把logical去掉。
直接A(any(~A,2),:)=[];
A(all(~A,2),:)=[];
要不会有warning,虽然不是大事。

评分

1

查看全部评分

发表于 2007-10-24 01:54:41 | 显示全部楼层 来自 大连理工大学
不另开新贴,就此向大家请教一个问题吧,问题简化后如下:
  1. I=[2 11 10 3 12];
  2. Element=[1 2 3 4 5 6 7 8 9];
复制代码

现在我想删除Element中Element和 I 相同的元素2,3 大家有什么好的方法?

[ 本帖最后由 chengweifeng 于 2007-10-24 01:56 编辑 ]
回复 不支持

使用道具 举报

 楼主| 发表于 2007-10-24 09:13:21 | 显示全部楼层 来自 北京海淀
  1. intersect(setxor(I, Element),Element)
  2. 或者
  3. [a,b,c]=intersect(I,Element);
  4. Element(c)=[]
  5. 或者setdiff(Element,intersect(I,Element))
复制代码

[ 本帖最后由 rocwoods 于 2007-10-24 10:39 编辑 ]
回复 不支持

使用道具 举报

发表于 2007-10-24 17:18:06 | 显示全部楼层 来自 大连理工大学
That's perfect!
Thank you very much.
回复 不支持

使用道具 举报

发表于 2010-6-13 19:04:01 | 显示全部楼层 来自 重庆沙坪坝区
这个能否继续讨论?
回复 不支持

使用道具 举报

发表于 2010-6-14 08:46:57 | 显示全部楼层 来自 湖南湘潭
6# rocwoods
intersect(setxor(I, Element),Element)
或者
[a,b,c]=intersect(I,Element);
Element(c)=[]
或者setdiff(Element,intersect(I,Element))


根据集合差运算规则和setdiff的用法,直接用setdiff即可。
setidff(I, Element)
回复 不支持

使用道具 举报

发表于 2010-6-14 08:53:26 | 显示全部楼层 来自 湖南湘潭
1# rocwoods

一种是某行只要含有0就去除

可以用:
[rows,cols,vals] = find(A==0);
A(rows,:) = []
回复 不支持

使用道具 举报

发表于 2010-9-2 12:25:37 | 显示全部楼层 来自 黑龙江哈尔滨
楼上“rows,cols,vals] = find(A==0);
A(rows,:) = []”
牛~~~

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2011-3-7 16:32:14 | 显示全部楼层 来自 黑龙江哈尔滨
楼上“rows,cols,vals] = find(A==0);
A(rows,:) = []”
受益匪浅。

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 01:18 , Processed in 0.050628 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表