作者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/m.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