作者boa918ass (保罗太阳)
看板MATLAB
标题[问题] 不用if来分类的方法
时间Thu May 2 14:25:36 2019
各位版上大腿们好
我的情况是有三组数值为0,1的矩阵
例如:
A = [1 0 1 0 1 1 0];
B = [0 1 0 1 0 0 1];
O = [1 0 0 1 1 0 0];
我想要将以下四种情况
A=1 , B=1
A=1 , B=0
A=0 , B=1
A=0 , B=0
对应到的O矩阵资料存下来
目前使用的方法是直接用if else来分
但这样的写法我电脑跑起来时间真的耗费太久
因为我每组数据有65536笔...
然後有60组左右
苦思想不太到更好的方式
所以希望上来能得到各位前辈们的指点
谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.115.40.106
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1556778341.A.760.html
1F:推 sin55688: find( (A==1).*(B==1) ) 05/02 14:29
2F:→ sin55688: 没写很请处,把出来的index喂给O就好。O(find(...)) 05/02 14:34
3F:推 sunev: 用 & 语义比较清楚 05/02 14:40
4F:→ sin55688: 同意。 A==1 & B==1 这样清楚也快 05/02 14:58
谢谢各位的教学!
刚刚马上试了没问题 速度也快超多Orz...
太感谢了!
※ 编辑: boa918ass (140.115.40.106), 05/02/2019 15:11:52
5F:推 profyang: 直接 O(A==1 & B==1)就好 记得之前写find时matlab都自动 05/02 21:07
6F:→ profyang: 建议我不用用find 05/02 21:07
7F:推 sunev: 最好是直接把A和B存成logical,这样就可以O(A&B) O(A&~B) 05/02 21:19
感谢各位提供方法~
会再试试看!
※ 编辑: boa918ass (220.141.93.175), 05/04/2019 01:14:51